Продолжаем серию статей о разработке на ISBL, в которую ранее вошли следующие материалы:
В текущей статье рассмотрим программный поиск EDMS-объектов системы DIRECTUM (документов, задач, заданий, папок и вариантов запуска).
Все поиски DIRECTUM можно поделить на 2 группы:
Программно могут выполняться оба типа поиска, но создавать можно только поиски по параметрам.
Для поиска объектов можно не создавать новый поиск, а использовать предопределенные, например:
Полный список предопределенных поисков можно найти в справке. Для выполнения предопределенного поиска нужно его загрузить (метод 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 Кб)
Авторизуйтесь, чтобы написать комментарий