Folder & View

Anatoly

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

nvyush

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#3
лучше одну папку с категорией, а потом резать доки по категории
 

nvyush

Lotus team
22.04.2009
2 317
0
#4
Можно также сортировку по нажатию на заголовки столбцов использовать.
 

Anatoly

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

nvyush

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

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

Xalet

Well-known member
08.08.2008
410
0
#7
А в сами доки вписать инфу, что они отобраны агентом, а потом селектами этот флаг искать не проще?
 

Anatoly

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

Medevic

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

Anatoly

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

Xalet

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

Anatoly

Lotus team
30.03.2007
223
0
#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
1
#16
На данный момент суть в том, что юзер (1) отбирает документы за период от года до декады и анализирует их по ряду параметров: в разрезе отделов, разных категорий и статусов. Базе порядка 60к+ документов, Отбирается от нескольких сотен до ... Все зависит от анализируемого периода.
Сейчас агент сканирует по дате ВСЮ базу и либо снимает, либо ставит флажок. Медленно получается...
При изменении документов и/или перемещении их в папку нагружается индексер. На 60к+ мгновенно он не сработает в любом случае.
Мне кажется, проще и лучше сделать нужное количество представлений и использовать стандартный полнотекстовой поиск для фильтрации по периоду, поставив сортировку keep current order (sortable).

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

nvyush

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

Anatoly

Lotus team
30.03.2007
223
0
#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

Lotus team
16.02.2004
341
8
#20
Может проблему решить с помощю сторонних средств

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

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

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