Folder & View

Тема в разделе "Lotus - Программирование", создана пользователем Anatoly, 16 фев 2011.

  1. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Нужно отобранные (агентом) в папку документы просматривать в разных разрезах.
    Можно-ли создать нужные View и в их SELECT отбирать только документы помещенные в конкретную папку?
    Или придется создать на каждый вариант просмотра отдельную папку и в агенте каждый нужный документ помещать во все папки?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Агент получает коллекцию нужных документов, далее для каждой папки
    Call notesDocumentCollection.PutAllInFolder( folderName$ [, createonfail ] )
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    лучше одну папку с категорией, а потом резать доки по категории
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Можно также сортировку по нажатию на заголовки столбцов использовать.
     
  5. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Сортировка не годится.
    Нужно смотреть не отсортированные, а по категориям.
    Причем по разным реквизитам. Их уже 10+...
    Придется плодить папки и раскидывать агентом.
    А, вообще, есть возможности через формулу/свойства_документа узнать вхождение документа в конкретную папку.
    Или только сканировать саму папку?
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    @whichfolders - недокументированная функция

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

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    А в сами доки вписать инфу, что они отобраны агентом, а потом селектами этот флаг искать не проще?
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А если условия отбора задаёт пользователь и одновременно могут работать несколько пользователей?
     
  9. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    При повторном отборе, тогда придется чистить предварительно этот флаг.
    Сдается мне при большом количестве документов это будет напряжнее, чем просто очистить папку.
    Ладно, будем "путить" :) в десяток папок.
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Как часто агент будет отбирать документы?
    Список отобранных документов будет общий или каждый юзер может составлять свой список?
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Call notesView.AllEntries.StampAll("Flag", "0")
     
  12. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    На данный момент суть в том, что юзер (1) отбирает документы за период от года до декады и анализирует их по ряду параметров: в разрезе отделов, разных категорий и статусов. Базе порядка 60к+ документов, Отбирается от нескольких сотен до ... Все зависит от анализируемого периода.
    Сейчас агент сканирует по дате ВСЮ базу и либо снимает, либо ставит флажок. Медленно получается...
     
  13. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Вообще было бы неплохо знать, что конкретно делаете и зачем. Тогда, возможно, и советы толковые посыпятся...
     
  14. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Можно и так...
    Поробую
    1) Search по установленным флагу,
    2) очистить флаг по коллекции,
    3) Search по периоду
    4) Установить флаг по коллекции

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

    oshmianski Гость

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    При изменении документов и/или перемещении их в папку нагружается индексер. На 60к+ мгновенно он не сработает в любом случае.
    Мне кажется, проще и лучше сделать нужное количество представлений и использовать стандартный полнотекстовой поиск для фильтрации по периоду, поставив сортировку keep current order (sortable).

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Категоризация не поломается?
     
  18. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Поломается. Зато способ самый быстрый. ;)
     
  19. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Пока остановился на таком варианте:
    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"

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

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Может проблему решить с помощю сторонних средств

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

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

    ну или просто в реляционную базу данных на который настроить любой репортер (ну как минимум эксель)
     
Загрузка...
Похожие Темы - Folder View
  1. Amfion
    Ответов:
    1
    Просмотров:
    673
  2. morpheus
    Ответов:
    1
    Просмотров:
    2.475
  3. Amfion
    Ответов:
    2
    Просмотров:
    527
  4. imendan
    Ответов:
    4
    Просмотров:
    1.111
  5. seoman2
    Ответов:
    12
    Просмотров:
    2.323

Поделиться этой страницей