Настройка типовых маршрутов. Часть 2.

10 2

Введение

Данная статья продолжает цикл статей для начинающего разработчика на ISBL и является продолжением статьи Настройка типовых маршрутов.

Предыдущие статьи раскрыли следующие моменты:

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

Схема типового маршрута

3. Создается документ на основе отчета

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

Прикладные блоки в ТМ – это как функции в вычислениях, т.е. однажды написав, можно использовать снова и снова.

В чем преимущество:

  • Изменение блока влияет на все запущенные задачи по ТМ, использующие этот блок. Стандартные блоки так не работают, т.е. если в схеме ТМ изменить блок, то изменения будут работать только для новых задач по этому ТМ. К примеру, если мы точно знаем, что блок работает неправильно, но уже запущены задачи с этим блоком, то исправив блок можно быть уверенным, что задачи не прекратятся.
  • Блок можно использовать в разных ТМ.

Блоки создаются в справочнике Блоки типовых маршрутов. Справочник находится в папке Компоненты – Утилиты разработчика.

Создадим новый блок типа Сценарий:

В карточке блока остановимся на следующих моментах.

Реквизит Тип базового блока – указывается тип как у стандартных блоков (Задание, Уведомление, Сценарий, Мониторинг и др.). Создаваемый блок будет наследовать всю логику работы от базового блока.

Кнопка Свойства – при открытии окна мы увидим стандартные свойства блока сценарий:

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

В вычислениях к свойствам нужно будет обращаться по имени.

В нашей задаче мы будем создавать отчет и сохранять его в документ. Предлагаю добавить четыре новых свойства: Имя отчета, Вид документа, Тип карточки документа, Приложение-редактор документа.

После добавления этих свойств окно выглядит следующим образом:

Для последних трех свойств обратим внимание на столбец «Допустимые типы».

При нажатии на открывается список типов, для некоторых из них необходимы дополнительные свойства (Признак, Запись справочника, Пользователь, Группа и др.).

Т.к. у нас Запись справочника, то указывается Тип справочника и необходимость скрытия закрытых записей:

Сохраняем свойства блока.

Кнопка События – здесь можно писать вычисления, которые будут срабатывать при определенных событиях блока. Для блока сценарий это Старт и Завершение.

Кнопка Результаты – указываются результаты, с которыми может выполниться блок. На схеме для выходящих из блока стрелок можно указать один из этих результатов.

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

Чтобы наш блок заработал, необходимо написать вычисления по созданию документа из отчета.

Открываем свойства блока, нажимаем на кнопку в столбце «Значение» для свойства «Вычисление» и вставляем код:

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

Далее открываем справочник Типовые маршруты, находим наш маршрут и перетаскиваем блок-сценарий из группы блоков «Управление электронными документами».

Свойства блока устанавливаем как на рисунке:

Сохраняем схему.

4. Задание руководителю IT-отдела

Будем использовать блок Расширенное задание. Он входит в стандартную поставку системы DIRECTUM.

Перенесем его на схему и настроим.

Свойства блока (первая часть):

Как видим, установили Наименование, Исполнителя.

Формирование темы. У блока Расширенное задание есть возможность добавлять имя вложения в тему. В данном случае мы указали, что в тему должен добавляться документ с типом карточки «Запрос на назначение прав доступа». Тем самым исполнитель будет знать уже из темы, что ему предстоит сделать.

Свойства блока (вторая часть):

В требованиях у нас есть проверка подписи на документе с запросом на права доступа (документ создался на предыдущем этапе). Блок Расширенное задание позволяет решить и эту задачу без программирования. Достаточно всего лишь настроить его как показано на рисунке и при нажатии на кнопку Выполнить в задании будет срабатывать проверка ЭЦП, и если документ не подписан, то будет выдаваться сообщение о необходимости подписания.

На остальных свойствах блока останавливаться не будем. Они подробно описаны в справке в разделе «Справка – Компоненты системы DIRECTUM – Справочники – Типовые маршруты – Прикладные блоки типовых маршрутов – Группа «Управление деловыми процессами» - Прикладной блок «Расширенное задание»».

5. Задание администратору

В данном случае используем блок Задание.

Указываем свойства блока:

Наименование: Задание администратору системы DIRECTUM.

Тема: Необходимо завести нового пользователя.

Текст: Введите в систему нового пользователя, предоставьте права доступа согласно запросу, подготовьте рабочее место.

В качестве исполнителя укажите пользователя, являющегося администратором системы.

6. Уведомление руководителю подразделения

Переносим на схему блок типа Уведомление. Уведомление отличается от задания тем, что исполнителю не нужно что-то выполнять. Уведомление носит уведомительный характер smiley

По сути, это упрощенное задание, т.е. оно имеет те же свойства, только меньшее количество.

Устанавливаем свойства блока:

Наименование:

Тема: Новому работнику выданы необходимые права и настроено рабочее место.

Текст: Новому работнику выданы необходимые права и настроено рабочее место.

Сохраняем схему.

 

Поздравляю! Мы создали работающий типовой маршрут.

Схема у вас будет выглядеть примерно так:

Резюме

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

  • Создавать типовые маршруты;
  • Настраивать схему;
  • Писать вычисляемые роли;
  • Создавать прикладные блоки типовых маршрутов.

Всем спасибо за внимание.

ADJOVI EROS

все привет !

подскажите пожалуйста.

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

Руслан Бапин

 

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

Добрый день!

Правильно ли я понял задачу: Вы хотите разместить в папке компонент ярлык сценария, при запуске которого создавалась и стартовала задача по Вашему типовому маршруту?

Если да, то все просто:

1) В компоненте "Сценарии" создать новый сценарий и написать его код (на языке ISBL), который создает и стартует задачу. Пример такого сценария здесь: http://club.directum.ru/webhelp/5.2/index.html?etipovye_marshruty.htm

2) Предоставить пользователям право запускать данный сценарий. Для этого лучше использовать группу - подходящую по смыслу существующую группу или созданную новую.

3) В компоненте "Настройка вариантов запуска компонент" в нужной папке создать вариант запуска, в карточке которого выбрать Ваш сценарий.

 

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