DIRECTUM 5.6. Управляемые папки финансового архива в заказной разработке

14 2

Если в Вашей компании ежедневно подписываются множество однотипных документов, то для массовых действий удобно использовать управляемые папки со специально настроенными кнопками. Это значительно упростит работу Вашим сотрудникам и, соответственно, ускорит бизнес-процессы.

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

Если Вы используете собственные типовые маршруты для согласования документов, то для массовой обработки заданий можно настроить аналогичные управляемые папки с учетом особенностей бизнес-процессов компании. Настройка папок будет более простой для типовых маршрутов, в схеме которых встроен стандартный блок «Расширенное задание».

Настройка управляемых папок на основе стандартных

Допустим, у Вас есть типовой маршрут по согласованию документов. Подписание выполняется в блоке «Расширенное задание». Возможные варианты выполнения: Подписано и На доработку:

По этому типовому маршруту сотрудник вашей компании ежедневно подписывает множество документов с определенным типом карточек, например, Служебные записки, Документы произвольной формы. Чтобы упростить его задачу и ускорить подписание документов, можно создать управляемую папку с действиями.

Шаг 1. Создаем новую управляемую папку копированием стандартной управляемой папки финансового архива «Подписание полученных передаточных документов»:

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

Шаг 2. Настраиваем событие управляемой папки «До выбора» под свой типовой маршрут. Для этого в разделе события Параметры указываем код типового маршрута и номер блока:

Можно указать несколько типовых маршрутов.

Шаг 3. Таким же образом настраиваем все действия папки:

И включаем распространение управляемой папки.

Шаг 4. Чтобы из управляемой папки можно было подписывать документы определенного типа карточки, необходимо доработать текст сценария Массовое подписание в реестре (ManagedFolderSigned). По умолчанию сценарий подписывает документы только с типом карточек Передаточные документы и Счета-фактуры.

Добавляем информацию о типе карточек документов в DFACardTypeCodeList:

 

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

Если Ваша разработка значительно отличается от стандартной, разработать указанные управляемые папки можно самостоятельно. В этом случае можно также скопировать стандартную управляемую папку модуля «Финансовый архив», настроить ее под бизнес-процессы компании и модифицировать код события «До выбора». А для доработки действий управляемой папки полезно ознакомиться с шаблоном параметров и со стандартными сценариями.

Шаблон параметров действий управляемых папок

Для удобства настройки в стандартных управляемых папках модуля «Финансовый архив» в коде действий выделен раздел Параметры. Например, в параметрах шаблона можно указать собственный сценарий для подписания документов.

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

  • ComponentName – имя сценария, который запускается при нажатии на кнопку;
  • ExecutionResult – вариант выполнения задания (для стандартных сценариев);
  • SelectedContentsMaxCount – количество документов, для которых сценарий выполняется в том же процессе. При превышении этого количества запускается новый процесс. По умолчанию 50. Для корректной работы в управляемых папках рекомендуется работа в новом процессе только для пользователей с Windows-аутентификацией;
  • CorrespondenceStandardRouteAndBlocks – список информации о типовых маршрутах и блоках типовых маршрутов для задач, по которым согласуются документы.

Стандартные сценарии для выполнения действий в управляемых папках

Для удобства работы с управляемым папками мы разработали два сценария:

  • Массовое подписание в реестре (ManagedFolderSigned) – его мы уже упоминали выше. Это сценарий, который умеет массово подписывать и выполнять задания по подписанию документов. При подписании учитывается:
    • Наличие у пользователя нескольких сертификатов, или что пользователь является замещающим. При отправке документов через системы обмена документы подписываются квалифицированной ЭП. Иначе подписываются любым сертификатом.
    • Корректность указанного подписанта в XML-тексте формализованных документов.

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

  • Выполнить действие в управляемой папке (ManagedFolderForExecute) – это сценарий, который умеет массово выполнять определенные задания по документам, выбранным в управляемой папке, с указанным результатам выполнения.

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

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

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

Создание папки с действиями для документов

Помимо управляемых папок действия можно добавить в обычные папки, например, типа «Документы». Таким же образом в модуле «Финансовый архив» реализована папка для выгрузки документов.

В качестве примера рассмотрим стандартный диалог Создание папки для экспорта (DFACreateExportFolder), который вызывается с обложки модуля «Финансовый архив».

На событии диалога «Закрытие Возможность» создается папка с действиями:

  • заполняются свойства действий:
    // Добавить действия в папку
    Actions = Folder.DetailDataSet(2)
    Actions.Append
    Actions.Requisites("Code").Field.Value = "Export"
    Actions.Requisites("Title").Field.Value = LoadString('DIRFD5E9FB8_460B_49D3_A602_D7D3472367A5'; 'COMMON')
    Actions.Requisites("TitleLocalizeID").Field.Value = 'COMMON.DIRFD5E9FB8_460B_49D3_A602_D7D3472367A5'
    Actions.Requisites("IconName").Field.Value = 'ExportDocumentIcon'
    Actions.Requisites("Visible").Value = 'Да'
    Actions.Requisites("EnabledOnlyForSelected").Value = 'Да'
    Actions.Requisites("VisibleInWebAccess").Value = 'Да'
    // Button, LargeButton и AutoSize
    Actions.Requisites("ButtonKind").Field.Value = 'LargeButton'
    Actions.Requisites("EnabledWhenMultiSelect").Value = 'Да'
    Actions.Requisites("MethodName").Field.Value = 'OnExecute_Export'
    Actions.Requisites("SortOrder").Field.Value = 0

 

  • заполняются методы для действий:
    // Добавить методы в папку
    Method = Folder.DetailDataSet(7)
    Method.Append
    Method.Requisites("Name").Field.Value = 'OnExecute_Print'
    Method.Requisites("Visibility").Field.Value = 'Yes'
    Method.Requisites("Calculation").Field.Value = '  /*---------------------------------------------------------------------------------------------------------------------*/
  /*---------------------------------------------- Параметры ------------------------------------------------------------*/
  /*---------------------------------------------------------------------------------------------------------------------*/
  // Выполнить сценарий
  ComponentName = "DFAPrintFinDocuments"
  ComponentType = "Script"
  // Количество документов, для которых выполнять сценарий в том же процессе  
  SelectedContentsMaxCount = 1

  /*---------------------------------------------------------------------------------------------------------------------*/
  /*--------------------------------------------- Вычисления ------------------------------------------------------------*/
  /*---------------------------------------------------------------------------------------------------------------------*/
  EDocIDs = CreateStringList()
  EDocIDs.Delimiter = ","
  
  foreach SelectedContent in SelectedContents
    EDocIDs.Add(SelectedContent.ID)
  endforeach
  if not IsWebRuntimeContext()
    if EDocIDs.Count <= SelectedContentsMaxCount
      Script = Scripts.GetObjectByName(ComponentName)
      Script.Params.Add("DocID"; EDocIDs.DelimitedText)
      Script.Execute
    else
      SystemCode = СистемаКод()
      ExecuteProcess(Format('& "'" &'SBRte.exe -SYS="%s" -CT="Script" -F="%s" -U="DFA" -R="DocID=%s"'& "'" &'; ArrayOf(SystemCode; ComponentName; EDocIDs.DelimitedText)))      
    endif
  else   
    ParamsForWeb = CreateList()
    ParamsForWeb.SetVar("JsActionName"; "DFA.exportDocumentForFolder")
    Args = Format('& "'" &'{"scriptName": "%0:s", "docids": "%1:s"}'& "'" &'; ArrayOf(ComponentName; EDocIDs.DelimitedText))
    ParamsForWeb.SetVar("JsActionArgs"; Args)
    AddWebParam(Object; "EXECUTE_JS_ACTION"; TRUE; ParamsForWeb)
  endif  
  '

 

  • в методы добавляются параметры:
    // Добавить параметры в методы
    Param = Folder.DetailDataSet(8)
    Param.Append
    Param.Requisites("MethodName").Field.Value = "OnExecute_Export"
    Param.Requisites("Name").Field.Value = "SelectedContents"
    Param.Requisites("ValueType").Field.Value = 'V'

 

В результате в папке «Избранное» текущего пользователя появляется папка с кнопками:

 

Денис Архипов

вставлять код скриншотами дурной тон.

Ольга Янулис

По вашим пожеланиям скриншоты с кодом заменены на текст. 

Ольга Янулис: обновлено 13.09.2018 в 13:03

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