Поиски EDMS-объектов (документов, задач, заданий, папок, вариантов запуска)

10 2

Продолжаем серию статей о разработке на ISBL, в которую ранее вошли следующие материалы:

  1. Общие сведения о разработке на IS-Builder
  2. Язык ISBL
  3. Типовые варианты использования функций ISBL
  4. Основы работы с объектной моделью IS-Builder
  5. Разработка на ISBL. Постановка задачи
  6. Разработка справочников в Directum
  7. Работа с наборами данных справочников
  8. Разработка новых типов карточек электронных документов

В текущей статье рассмотрим программный поиск EDMS-объектов системы DIRECTUM (документов, задач, заданий, папок и вариантов запуска).

Все поиски DIRECTUM можно поделить на 2 группы:

  • Поиск по параметрам (поиск документов, задач и т.д.);
  • Поиск по объекту (вложено в задачи, связанные документы и т.д.). Поиск использует дополнительный параметр, указывающий на объект, в отношении которого выполняется поиск.

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

Общая схема выполнения поиска

  1. Создание нового поиска. Для создания поиска используется метод CreateNew объекта ISearchFactory. При создании указывается тип объектов, которые требуется найти: «папка», «электронный документ», «задача», «задание», «произвольный объект» и т.д.
  2. Задание критериев поиска. Для добавления критериев поиска используется метод Add объекта ISearchCriteria. В качестве критериев поиска указываются реквизиты, состав возможных реквизитов зависит от типа объектов поиска. Список всех реквизитов, по которым может осуществляться поиск можно получить с помощью свойства RequisiteDescriptionList объекта ISearchDescription.
  3. Установка значений критериев поиска:
  • Методы SetSimpleValue и SetCompleteValue объекта ISimpleCriterion. Объект ISimpleCriterion предназначен для работы с критерием поиска, который может иметь несколько значений, объединенных логическими операторами. Условие поиска следует задавать в соответствии с определенным форматом.
  • Методы AddSingleValue и AddRange для критериев типа «Дата», «Целое число» и «Дробное число» и Add для критериев типа «Признак», «Строка», «Запись справочника», «Текст». Для разных типов эти методы имеют разные параметры, подробнее можно посмотреть в справке.
  1. Выполнение поиска:
  • Метод Show – выполняет поиск и показывает результаты поиска на экране;
  • Метод Execute – выполняется поиск и возвращает результаты поиска, которые затем можно программно обработать.

Предопределенные поиски

Для поиска объектов можно не создавать новый поиск, а использовать предопределенные, например:

  • «Вложено в задачи» - ATTACHED_TO_TASK_SEARCH;
  • «Находится в папках» - IN_FOLDER_SEARCH;
  • «Мои последние измененные документы» - LAST_CHANGED_EDOCUMENT_SEARCH;
  • «Мои входящие незавершенные задания» - INPUT_UNFINISHED_JOB_SEARCH;

Полный список предопределенных поисков можно найти в справке. Для выполнения предопределенного поиска нужно его загрузить (метод Load объекта ISearchFactory). Если загружается поиск по объекту, то нужно с помощью метода InitializeSearch указать для какого объекта выполняется поиск.

Практическая работа

Продолжаем разработку для нашей задачи. Добавим в справочник Права доступа работников на ПО 2 новые кнопки:

  • Запросищет документы с ТКЭД Запрос на назначение прав доступа работнику, в карточке которого в поле Права доступа работников на ПО указана текущая запись. Анализируются результаты поиска:
    • если не найдено ни одного документа, то выводится предупреждение;
    • если найден один документ, то открывается документ;
    • если найдено несколько документов, то открывается список найденных документов.
  • Связ. задачиищет все задачи, в которые вложена текущая запись справочника.

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

После этого добавляем вычисление на кнопке Запрос:

  Search = Searches.CreateNew(ckEDocument)
  Criteria = Search.SearchCriteria
  // Добавить в критерий поиска Тип карточки электронного документа
  EDocTypeCriterion = Criteria.Add("PseudoEDocType")
  // Искать по ТКЭД с кодом ЗНПДР (Запрос на назначение прав доступа работнику)
  EDocTypeCriterion.Add("ЗНПДР")  
  // Добавить в криетрий поиска реквизит Тип прав работников на ПО
  UserPermissionsCriterion = Criteria.Add('UserPermissions')
  // Искать по коду текущей записи
  UserPermissionsCriterion.Add(Object.SYSREQ_CODE)

  // Выполнить поиск
  FindDocs = Search.Execute()
  // Получить количество найденных документов
  FindDocsCount = FindDocs.Count
  if FindDocsCount = 0
    // Вывести предупреждение
    MessageBox(ATTENTION_CAPTION; 'Запрос на назначение прав доступа не найден.')
  endif
  if FindDocsCount = 1
    // Получить результат поиска как IEDocumentInfo
    FindDocInfo = FindDocs.Value
    FindDoc = FindDocInfo.Document
    // Получить последнюю версию документа
    LastDocNumber = GetLastEDocumentVersionNum(FindDoc)
    // Открыть последнюю версию документа для просмотра
    FindDoc.Open(FALSE; LastDocNumber)
  endif
  if FindDocsCount > 1
    // Показать результаты поиска
    Search.Show(ssmSelect; TRUE)  
  endif

Для вычисления на кнопке Связ. задачи будем использовать функцию Analysis(), в параметрах которой передадим имя поиска:

// Вложено в задачи
Analysis(Loadstring("ATTACHED_TO_TASK_SEARCH";"SYSRES_SBEDMSSEARCH"); "")

Функция выполнит поиск и отобразит результаты поиска на экране. В результате нажатия кнопки получим:

Пакет разработки справочника для Directum версии 4.7: demo.zip (2,15 Кб)

Пакет разработки справочника для Directum версии 5.1: demo.zip (13,44 Кб)

Пока комментариев нет.

Авторизуйтесь, чтобы написать комментарий