Не создается коллеция документов методом Search

  • Автор темы ozzyzello
  • Дата начала
O

ozzyzello

#1
Добрый день.
Пытаюсь создать отчет по существующей базе - писал не я. Мне нужно собрать коллекцию документов по базе, использую метод Search. Нужные мне документы не попадают в выборку, пока их не пересохранить. После пересохранения коллекция создается прекрасно. Может кто-то подскажет в чем может быть дело?
 
A

amigolinx

#2
У Search'a вторым параметром идет notesDateTime и про него хелп говорит "A cutoff date. The method searches only documents created or modified since the cutoff date. Specify Nothing to indicate no cutoff date." Возможно здесь собака порылась, ибо при пересохранении дата доков попадает в период "обрезки", а до этого они из него "выпадают".

А вообще для качественного ответа желательно видеть, каким образом используется у тебя этот метод в коде ;)
 
O

ozzyzello

#3
Вторым параметром в Search пишу Nothing.
Все документы попадают в базу путем импорта из Excel, потом создается форма, заполняются нужные поля данными из Excel.
Решил проблему путем пересохранения документов, т.е:

dim w as new notesuiworkspace

set doc=new notesdocument(bd)
doc.form="test"
call doc.save(true,false)
set doc_cur=w.editdocument(true,doc)
call doc_cur.save
call doc_cur.close

Думаю, что все это увеличит обрабатку документов очень надолго, наверняка есть более простой и быстрый путь - вот только как? :)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
Значит, криво заполняются нужные поля. Перед сохранением происходит перерасчет полей, и всё работает.
Документы не подходят под условие. Смотри формулу отбора и типы полей.
 

abbatik

Lotus team
20.10.2008
277
0
#5
Судя по тому, что ты пересохраняешь UI документ, возможно какая-то обработка этих полей происходит в QuerySave, или PostSave.

А вообще, если хочешь сэкономить время, советую построить служебный вид, в котором собрать нужные критерии поиска и использовать GetAllDocumentsByKey для создания коллекции.
 
O

ozzyzello

#7
Сложилось ощущение, что при импорте из Excel как бы правильно поля не заполнять, документ все равно требует обязательного пересохранения.
А то, что в документе присутствует заполнение некоторых полей при сохранении - так и есть. И достаточно много полей Computed.
Т.е. если я правильно понимаю, то пересохранение здесь оптимальный вариант.

Всем большое спасибо за подсказки и советы.
 

nvyush

Lotus team
22.04.2009
2 317
0
#8
Сложилось ощущение, что при импорте из Excel как бы правильно поля не заполнять, документ все равно требует обязательного пересохранения.
А то, что в документе присутствует заполнение некоторых полей при сохранении - так и есть. И достаточно много полей Computed.
Т.е. если я правильно понимаю, то пересохранение здесь оптимальный вариант.

Всем большое спасибо за подсказки и советы.
Чтобы по сто раз не пересохранять, можно попробовать при импорте выполнить
notesDocument.ComputeWithForm( doDataTypes, raiseError )
перед сохранением
 
O

ozzyzello

#9
Значит, криво заполняются нужные поля. Перед сохранением происходит перерасчет полей, и всё работает.
Документы не подходят под условие. Смотри формулу отбора и типы полей.

Все верно - нашел несколько неправильно заполненных полей, поле было типа дата, а заполнялось текстовыми значениями. Все работает, огромное спасибо.

Чтобы по сто раз не пересохранять, можно попробовать при импорте выполнить
notesDocument.ComputeWithForm( doDataTypes, raiseError )
перед сохранением
Воспользовался, спасибо