Данная статья продолжает цикл статей для начинающего разработчика на ISBL и является продолжением статьи Настройка типовых маршрутов.
Предыдущие статьи раскрыли следующие моменты:
До сего момента мы использовали стандартные блоки типовых маршрутов, но в системе Директум есть такая замечательная вещь как Прикладные блоки типовых маршрутов.
Прикладные блоки в ТМ – это как функции в вычислениях, т.е. однажды написав, можно использовать снова и снова.
В чем преимущество:
Блоки создаются в справочнике Блоки типовых маршрутов. Справочник находится в папке Компоненты – Утилиты разработчика.
Создадим новый блок типа Сценарий:
В карточке блока остановимся на следующих моментах.
Реквизит Тип базового блока – указывается тип как у стандартных блоков (Задание, Уведомление, Сценарий, Мониторинг и др.). Создаваемый блок будет наследовать всю логику работы от базового блока.
Кнопка Свойства – при открытии окна мы увидим стандартные свойства блока сценарий:
В этом окне можно добавлять новые, управлять их свойствами.
В вычислениях к свойствам нужно будет обращаться по имени.
В нашей задаче мы будем создавать отчет и сохранять его в документ. Предлагаю добавить четыре новых свойства: Имя отчета, Вид документа, Тип карточки документа, Приложение-редактор документа.
После добавления этих свойств окно выглядит следующим образом:
Для последних трех свойств обратим внимание на столбец «Допустимые типы».
При нажатии на … открывается список типов, для некоторых из них необходимы дополнительные свойства (Признак, Запись справочника, Пользователь, Группа и др.).
Т.к. у нас Запись справочника, то указывается Тип справочника и необходимость скрытия закрытых записей:
Сохраняем свойства блока.
Кнопка События – здесь можно писать вычисления, которые будут срабатывать при определенных событиях блока. Для блока сценарий это Старт и Завершение.
Кнопка Результаты – указываются результаты, с которыми может выполниться блок. На схеме для выходящих из блока стрелок можно указать один из этих результатов.
Для текущей задачи эти кнопки не актуальны, поэтому не будем заострять на них внимание.
Чтобы наш блок заработал, необходимо написать вычисления по созданию документа из отчета.
Открываем свойства блока, нажимаем на кнопку … в столбце «Значение» для свойства «Вычисление» и вставляем код:
FIRST_INDEX = 0
// Получить значения свойств блока
Properties = Sender.Properties
ReportName = Properties.ValueByName("ReportName").Value
EDocKindInfo = Properties.ValueByName("EDocKind").Value
EDocCardTypeInfo = Properties.ValueByName("EDocCardType").Value
EDocEditorInfo = Properties.ValueByName("EDocEDitor").Value
// Имеет смысл выполнять вычисления только при заполненных свойствах
if Assigned(ReportName) and Assigned(EDocKindInfo) and Assigned(EDocCardTypeInfo)
// Получить запись справочника Права доступа работников на ПО
RecordList = ТМПолучитьВложенныеЗаписиСправочника(Work; "UserPermissions")
if RecordList.Count > 0
Record = RecordList.Values(FIRST_INDEX).Reference
Record.Open
Record.OpenRecord
// Запустить интегрированный отчет с именем ReportName и сохранить его в файл
foreach Rep in Record.Reports
if Rep.Name == ReportName
Report = Rep
exitfor
endif
endforeach
if Assigned(Report)
// Указать сохранение отчета в файл
Report.Destination = rdFile
FileName = Format("%s%s.rtf"; ArrayOf(GetTempFolder(); Report.Name))
Report.FileName = FileName
Report.Execute
endif
// Занести в систему DIRECTUM полученный отчет
if ФайлСуществует(FileName)
// Создать документ из файла
EDoc = EDocuments.CreateNewFromFile(EDocCardTypeInfo.Code; EDocKindInfo.Code; EDocEditorInfo.Code; FileName)
// Заполнить реквизит Запрос прав доступа
EDoc.UserPermissions = Record.SYSREQ_CODE
// Сохранить документ
EDoc.Save
// Вложить документ в задачу
ТМДобавитьВложение("Эл.документ"; EDoc.ID)
endif
Record.Close
endif
endif
Далее открываем справочник Типовые маршруты, находим наш маршрут и перетаскиваем блок-сценарий из группы блоков «Управление электронными документами».
Свойства блока устанавливаем как на рисунке:
Сохраняем схему.
Будем использовать блок Расширенное задание. Он входит в стандартную поставку системы DIRECTUM.
Перенесем его на схему и настроим.
Свойства блока (первая часть):
Как видим, установили Наименование, Исполнителя.
Формирование темы. У блока Расширенное задание есть возможность добавлять имя вложения в тему. В данном случае мы указали, что в тему должен добавляться документ с типом карточки «Запрос на назначение прав доступа». Тем самым исполнитель будет знать уже из темы, что ему предстоит сделать.
Свойства блока (вторая часть):
В требованиях у нас есть проверка подписи на документе с запросом на права доступа (документ создался на предыдущем этапе). Блок Расширенное задание позволяет решить и эту задачу без программирования. Достаточно всего лишь настроить его как показано на рисунке и при нажатии на кнопку Выполнить в задании будет срабатывать проверка ЭЦП, и если документ не подписан, то будет выдаваться сообщение о необходимости подписания.
На остальных свойствах блока останавливаться не будем. Они подробно описаны в справке в разделе «Справка – Компоненты системы DIRECTUM – Справочники – Типовые маршруты – Прикладные блоки типовых маршрутов – Группа «Управление деловыми процессами» - Прикладной блок «Расширенное задание»».
В данном случае используем блок Задание.
Указываем свойства блока:
Наименование: Задание администратору системы DIRECTUM.
Тема: Необходимо завести нового пользователя.
Текст: Введите в систему нового пользователя, предоставьте права доступа согласно запросу, подготовьте рабочее место.
В качестве исполнителя укажите пользователя, являющегося администратором системы.
Переносим на схему блок типа Уведомление. Уведомление отличается от задания тем, что исполнителю не нужно что-то выполнять. Уведомление носит уведомительный характер
По сути, это упрощенное задание, т.е. оно имеет те же свойства, только меньшее количество.
Устанавливаем свойства блока:
Наименование:
Тема: Новому работнику выданы необходимые права и настроено рабочее место.
Текст: Новому работнику выданы необходимые права и настроено рабочее место.
Сохраняем схему.
Поздравляю! Мы создали работающий типовой маршрут.
Схема у вас будет выглядеть примерно так:
Пройдя через все этапы настройки типового маршрута, мы научились:
Всем спасибо за внимание.
все привет !
подскажите пожалуйста.
как мне связать сценарий и типовые маршрут так что в отдел компонет когда клиент нажмет на сценарии , у него пошла задача по тому маршрут кот я создал ....
Добрый день!
Правильно ли я понял задачу: Вы хотите разместить в папке компонент ярлык сценария, при запуске которого создавалась и стартовала задача по Вашему типовому маршруту?
Если да, то все просто:
1) В компоненте "Сценарии" создать новый сценарий и написать его код (на языке ISBL), который создает и стартует задачу. Пример такого сценария здесь: http://club.directum.ru/webhelp/5.2/index.html?etipovye_marshruty.htm
2) Предоставить пользователям право запускать данный сценарий. Для этого лучше использовать группу - подходящую по смыслу существующую группу или созданную новую.
3) В компоненте "Настройка вариантов запуска компонент" в нужной папке создать вариант запуска, в карточке которого выбрать Ваш сценарий.
Авторизуйтесь, чтобы написать комментарий