Folder & View

Anatoly

Well-Known Member
Lotus team
30.03.2007
221
0
55
Волгоград
#1
Нужно отобранные (агентом) в папку документы просматривать в разных разрезах.
Можно-ли создать нужные View и в их SELECT отбирать только документы помещенные в конкретную папку?
Или придется создать на каждый вариант просмотра отдельную папку и в агенте каждый нужный документ помещать во все папки?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#2
на каждый вариант просмотра отдельную папку и в агенте каждый нужный документ помещать во все папки
Агент получает коллекцию нужных документов, далее для каждой папки
Call notesDocumentCollection.PutAllInFolder( folderName$ [, createonfail ] )
 

Anatoly

Well-Known Member
Lotus team
30.03.2007
221
0
55
Волгоград
#5
Сортировка не годится.
Нужно смотреть не отсортированные, а по категориям.
Причем по разным реквизитам. Их уже 10+...
Придется плодить папки и раскидывать агентом.
А, вообще, есть возможности через формулу/свойства_документа узнать вхождение документа в конкретную папку.
Или только сканировать саму папку?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#6
А, вообще, есть возможности через формулу/свойства_документа узнать вхождение документа в конкретную папку.
@whichfolders - недокументированная функция

Добавлено
Нужно смотреть не отсортированные, а по категориям.
Причем по разным реквизитам. Их уже 10+...
Придется плодить папки и раскидывать агентом.
Есть вариант обойтись одной папкой. Сделать первый категоризованный столбец - вид среза и использовать @SetViewInfo. Документы, разумеется, размножатся по числу срезов, но, КМК, лучше один документ десять раз в одной папке, чем по одному разу в десяти папках. Может я и ошибаюсь, более опытные товарищи поправят.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#8
А в сами доки вписать инфу, что они отобраны агентом, а потом селектами этот флаг искать не проще?
А если условия отбора задаёт пользователь и одновременно могут работать несколько пользователей?
 

Anatoly

Well-Known Member
Lotus team
30.03.2007
221
0
55
Волгоград
#9
А в сами доки вписать инфу, что они отобраны агентом, а потом селектами этот флаг искать не проще?
При повторном отборе, тогда придется чистить предварительно этот флаг.
Сдается мне при большом количестве документов это будет напряжнее, чем просто очистить папку.
Ладно, будем "путить" :) в десяток папок.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#10
Как часто агент будет отбирать документы?
Список отобранных документов будет общий или каждый юзер может составлять свой список?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#11
При повторном отборе, тогда придется чистить предварительно этот флаг.
Сдается мне при большом количестве документов это будет напряжнее, чем просто очистить папку.
Call notesView.AllEntries.StampAll("Flag", "0")
 

Anatoly

Well-Known Member
Lotus team
30.03.2007
221
0
55
Волгоград
#12
Как часто агент будет отбирать документы?
Список отобранных документов будет общий или каждый юзер может составлять свой список?
На данный момент суть в том, что юзер (1) отбирает документы за период от года до декады и анализирует их по ряду параметров: в разрезе отделов, разных категорий и статусов. Базе порядка 60к+ документов, Отбирается от нескольких сотен до ... Все зависит от анализируемого периода.
Сейчас агент сканирует по дате ВСЮ базу и либо снимает, либо ставит флажок. Медленно получается...
 

Xalet

Well-Known Member
08.08.2008
410
0
Вильнюс. Литва.
#13
При повторном отборе, тогда придется чистить предварительно этот флаг.
Сдается мне при большом количестве документов это будет напряжнее, чем просто очистить папку.
Ладно, будем "путить" smile.gif в десяток папок.
Вообще было бы неплохо знать, что конкретно делаете и зачем. Тогда, возможно, и советы толковые посыпятся...
 

Anatoly

Well-Known Member
Lotus team
30.03.2007
221
0
55
Волгоград
#14
Call notesView.AllEntries.StampAll("Flag", "0")
Можно и так...
Поробую
1) Search по установленным флагу,
2) очистить флаг по коллекции,
3) Search по периоду
4) Установить флаг по коллекции

Кстати, как коллекция получится быстрее, db.Search(по flag=1) или view.AllEntries?
 
O

oshmianski

Гость
#15
может имеет смысл выдать пользователю диалог, где он выберет нужные ему параметры, а результат сбросить в MS Excell?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#16
На данный момент суть в том, что юзер (1) отбирает документы за период от года до декады и анализирует их по ряду параметров: в разрезе отделов, разных категорий и статусов. Базе порядка 60к+ документов, Отбирается от нескольких сотен до ... Все зависит от анализируемого периода.
Сейчас агент сканирует по дате ВСЮ базу и либо снимает, либо ставит флажок. Медленно получается...
При изменении документов и/или перемещении их в папку нагружается индексер. На 60к+ мгновенно он не сработает в любом случае.
Мне кажется, проще и лучше сделать нужное количество представлений и использовать стандартный полнотекстовой поиск для фильтрации по периоду, поставив сортировку keep current order (sortable).

Добавлено: Запрос можно составить один раз и сохранить. И показать пользователю куда тыкать для изменения периода и других параметров.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#17
Мне кажется, проще и лучше сделать нужное количество представлений и использовать стандартный полнотекстовой поиск для фильтрации по периоду, поставив сортировку keep current order (sortable).
Категоризация не поломается?
 

Anatoly

Well-Known Member
Lotus team
30.03.2007
221
0
55
Волгоград
#19
Пока остановился на таком варианте:
1) Очищаю флаг от предыдущего варианта
Sub FlagClear
SearchFormula ={@IsMember(Form;"Inspection":"InspectionRes") & StatFlag=1}
Set dc = CurrDb.Search(SearchFormula,Nothing,0)
Call dc.StampAll("StatFlag", 0)
End Sub

2) Делаю новую выборку и устанавливаю флажок
Sub FlagSet_Inspection
SearchFormula ={Form="Inspection" & DateStart>=[} + Cstr(StartDate) + {] & DateStart<=[} + Cstr(EndDate) +{]}
Set dc = CurrDb.Search(SearchFormula,Nothing,0)
Call dc.StampAll("StatFlag", 1)
End Sub

3) В нужные вью в SELECT включил "& StatFlag=1"

У меня на локальной копии время сократилось кардинально, попробую на днях на рабочей базе у клиента.
 

Gandliar

Well-Known Member
Lotus team
16.02.2004
326
6
44
Минск
jobber.by
#20
Может проблему решить с помощю сторонних средств

Например сделать шаблон в экселе с построенными сводными таблицами и графиками.
Затем скидываешь на лист с данными данные, кнопка обновить - и у тебя готовые х срезов. которые можно еще двигать как хошь, менять местами.

Если данных очень много - выгружать на OLAP сервер по ходу жизни, он строит кубы и моментально получается статистика.

ну или просто в реляционную базу данных на который настроить любой репортер (ну как минимум эксель)