Тема: Позиционирование в документообороте

как открыть архив для пользователя через Api и установить курсор на заданный ID документа.

Re: Позиционирование в документообороте

Павел1974 пишет:

как открыть архив для пользователя через Api и установить курсор на заданный ID документа.

Для того чтобы, установить курсор на заданный ID документа нужно ещё знать ID дерева раздела архива, в котором этот документ хранится.

Поэтому примерный алгоритм будет выглядеть так:

  1. С помощью TCSApp.SingleDoc( CSDN_Const.dspSearchDocByDocID, DocId) получить экземпляр документа.

  2. Определить ID дерева раздела документа (свойство "TREE_ID").

  3. Открыть архив (TCSApp.Archive).

  4. В цикле "пройтись" по всем веткам первого уровня классификатора архива, считав у них свойство Count (это такая особенность дерева архива, без этого поиск узла по ID не сработает, пример можно посмотреть здесь).

  5. Найти в дереве архива нужный узел и выделить его (DBTree.DBNodeByNodeID(TreeId).Selected = True)

  6. Ну и наконец, можно искать документ по ID (Locate("ID", DocId, 0)) и показывать архив методом ShowModal(Caption).

Всё это сработает, если у пользователя гарантированно будет право на просмотр того раздела архива, в котором нужный документ хранится.

Ну и встречный вопрос - а не достаточно ли будет получить нужный документ методом TCSApp.SingleDoc и открыть карточку документа для просмотра/редактирования?

Re: Позиционирование в документообороте

Спасибо за подробный разбор действий!

Дело в том, что в TCS 4.7 при открытии Архива методом

TCSapp.Archive.RunModuleForSelect

(прошу пользователя выбрать документ)

почему-то не функционирует поиск позиций
Окошечко поиска появляется, но ничего с ним поделать низя.

Думал написать свою функцию поиска, а затем открыть оно TCS для выбора позиции

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

Re: Позиционирование в документообороте

Даже не знаю, что вам посоветовать. В версии 4.7 сложновато это будет реализовать...

Разве что программно устанавливать на архив фильтр вида "СОДЕРЖИТ"  или "НАЧИНАЕТСЯ" на поле "Обозначение", проходить по всем разделам архива, записывать все найденные совпадения в пользовательский UserGModule (интрерфейс IUserGModule) и выводить для выбора пользователем документа уже этот UserGModule. Сами понимаете, такое решение будет "тормозить".

В 5.7 или 6.2 такой поиск можно было бы упростить через пользовательские наборы данных.
Совсем никак нельзя убедить руководство перейти на более современные версии TechnologiCS? (возможно, что ошибка с TCSapp.Archive.RunModuleForSelect уже в этих версиях исправлена).