Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
private lotus.domino.Document findByDepID1(String depID) throws NotesException, IOException {
log("findByDepID1 depID = "+depID);
DocumentCollection dc =view1.getAllDocumentsByKey(depID);
lotus.domino.Document tmpdoc = null;
lotus.domino.Document doc = dc.getFirstDocument();
log("findByDepID1 return doc="+doc.toString());
int notNull = 0;
if(dc.getCount() == 0) {
log("findByDepID1 dc is empty !");
return null;
}
if (dc.getCount() == 1) {
log("findByDepID1 doc="+doc);
return dc.getFirstDocument();
}
else if (dc.getCount() > 1) {
while (doc != null) {
log("findByDepID1 doc(>1)="+doc);
if (!doc.isDeleted()) {
tmpdoc = doc;
notNull++;
continue;
}
doc = dc.getNextDocument();
}
}
if(notNull==1) {
return tmpdoc;
} else {
throw new RuntimeException(
"Error. There are more than one departament in DB with id = " + depID);
}
private lotus.domino.Document findByDepID1(String depID) throws NotesException, IOException {
if(depID==null || depID.equals("")){
log("findByDepID1: depID is Nothing or Empty");
return null;
}
if(view1==null){
log("findByDepID1: view1 is Nothing");
return null;
}
log("findByDepID1: depID = " + depID);
DocumentCollection dc = view1.getAllDocumentsByKey(depID);
if(dc.getCount()==0) {
log("findByDepID1: Collection <dc> by key depID is empty !");
dc.recycle;
return null;
}
boolean isMoreThanOne = false;
lotus.domino.Document tmpdoc = null;
lotus.domino.Document doc = dc.getFirstDocument();
while (doc!=null) {
if (!doc.isDeleted()) {
if (tmpdoc==null){
tmpdoc = doc;
}else{
isMoreThanOne = false;
break;
}
}
doc = dc.getNextDocument(doc);
}
if (isMoreThanOne) {
if (tmpdoc!=null) tmpdoc.recycle;
if (doc!=null) doc.recycle;
if (dc!=null) dc.recycle;
log("findByDepID1: There are more than one departament in DB with id = " + depID);
throw new RuntimeException("Error. There are more than one departament in DB with id = " + depID);
}else{
if (tmpdoc==null){
if (doc!=null) doc.recycle;
if (dc!=null) dc.recycle;
log("findByDepID1: There is no available(not conflict) doc with id = " + depID);
return null;
}else{
if (dc!=null) dc.recycle;
return tmpdoc;
}
}
}
private lotus.domino.Document findByTabNum1(String tabNum) throws NotesException, IOException {
if(tabNum==null || tabNum.equals("")){
log("findByTabNum1: tabNum is Nothing or Empty");
return null;
}
if(view3==null){
log("findByTabNum1: view3 is Nothing");
return null;
}
log("findByTabNum1: tabNum = " + tabNum);
DocumentCollection dc = view3.getAllDocumentsByKey(tabNum);
lotus.domino.Document tmpdoc = null;
lotus.domino.Document doc = dc.getFirstDocument();
log("findByTabNum1 doc = "+doc);
if(dc.getCount() == 0) {
log("findByTabNum dc is empty !");
return null;
}
boolean isMoreThanOne = false;
while (doc!=null) {
if (!doc.isDeleted()) {
if (tmpdoc==null){
tmpdoc = doc;
}else{
isMoreThanOne = false;
break;
}
}
doc = dc.getNextDocument(doc);
}
if (isMoreThanOne) {
if (tmpdoc!=null) tmpdoc.recycle();
if (doc!=null) doc.recycle();
if (dc!=null) dc.recycle();
log("findByTabNum1: There are more than one emploees in DB with id = " + tabNum);
throw new RuntimeException("Error. There are more than one emploees in DB with id = " + tabNum);
}else{
if (tmpdoc==null){
if (doc!=null) doc.recycle();
if (dc!=null) dc.recycle();
log("findByTabNum1: There is no available(not conflict) doc with id = " + tabNum);
return null;
}else{
if (dc!=null) dc.recycle();
return tmpdoc;
}
}
}
private lotus.domino.Document findByDepID1(String depID) throws NotesException, IOException {
if(depID==null || depID.equals("")){
log("findByDepID1: depID is Nothing or Empty");
return null;
}
if(view1==null){
log("findByDepID1: view1 is Nothing");
return null;
}
log("findByDepID1: depID = " + depID);
DocumentCollection dc = view1.getAllDocumentsByKey(depID);
if(dc.getCount()==0) {
log("findByDepID1: Collection <dc> by key depID is empty !");
dc.recycle();
return null;
}
boolean isMoreThanOne = false;
lotus.domino.Document tmpdoc = null;
lotus.domino.Document doc = dc.getFirstDocument();
while (doc!=null) {
if (!doc.isDeleted()) {
if (tmpdoc==null){
tmpdoc = doc;
}else{
isMoreThanOne = false;
break;
}
}
doc = dc.getNextDocument(doc);
}
if (isMoreThanOne) {
if (tmpdoc!=null) tmpdoc.recycle();
if (doc!=null) doc.recycle();
if (dc!=null) dc.recycle();
log("findByDepID1: There are more than one departament in DB with id = " + depID);
throw new RuntimeException("Error. There are more than one departament in DB with id = " + depID);
}else{
if (tmpdoc==null){
if (doc!=null) doc.recycle();
if (dc!=null) dc.recycle();
log("findByDepID1: There is no available(not conflict) doc with id = " + depID);
return null;
}else{
if (dc!=null) dc.recycle();
return tmpdoc;
}
}
}
Это надо смотреть что происходит, если он ничего не нашел.если находит больше, то возвращает null и похоже создает новую такую же запись, т.е. добавляет к уже существующим.
view1.getAllDocumentsByKey(depID, true)
Это руками просто удалить из настро1ки вьюхи ? Или формула отбора нужна другая?Раз только для поиска, то: удалить колонки где категоризация нам она не нужна, только путает.
Можно оставить только 2 колонки, первая как есть, вторая Unid документа.
Это да, после последнего обновления вот что получилось:По поводу дубликатов: там в коде есть добавление сотрудника, если он не найден. Вот только он всегда не найден из-за ошибки поиска.
tabNum = 00005489 – не задублировался (но дата последней модификации не сегодняшняя)
Возможно его не было в XML, но тут я не помогу, по коду все верно. Да и ошибки сохранения в логах нет.
да, но лучше совсем категории убери, последнюю колонку тоже, оставь только номер
Удалили колонки и вроде как корректно нашло. Теперь такой вопрос, можно ли создать view, в которой формула отбора выводит дублированные записи из форм Department, Subdivision и Person, что бы почистить от повторных записей базуони у тебя во второй колонке, удали колонку, должны пропасть
Логи без ошибок?Удалили колонки и вроде как корректно нашло.
Дубликаты:
Добавь в этот же вид, по которому ищите колонку (НЕ категоризировать и НЕ сортировать): название депаратмента или полное ФИО сотрудника и руками удаляйте.
Можно еще добавить колонку с датой создания: @Text(@Created;"S0")
раньше не попадало в ifПодскажите , почему происходит зависание, вроде такого не было раньше. с циклом что то не так ?
Обучение наступательной кибербезопасности в игровой форме. Начать игру!