Типы действий

Действия могут запускаться системой через маршрут или пользователями через кнопки, и могут изменять значения полей документов либо выполнять какие-либо иные функции. Действия бывают обычные, интерактивные или контейнерные. Интерактивные действия взаимодействуют с пользователем тем или иным образом (например, «Диалог» или «Редактирование»). Интерактивные действия обычно используются в кнопках, но могут запускаться и через маршрут (при запуске через маршрут не размещайте два интерактивных действия подряд). Контейнерные действия (например, «Условие» или «Повтор») могут содержать в себе другие действие, которые выполняют при наступлении определенных условий.

Выборка

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

Настройки действия делятся на две группы:

  • Запрос, где определяются критерии выборки документов.
    • Источник документов определяет группу документов, из которых будет осуществляться выборка. Это могут быть все документы заданного типа или документы, которые находятся в определенном поле (в этом случае необходимо выбрать это поле и указать тип документов).
    • Фильтры определяют критерии отбора. Эти критерии применяются к полям документов (в числе которых есть некоторые поля-переменные). Фильтров может быть несколько, они могут объединяться логическими И или ИЛИ. ИЛИ имеет приоритет. Например, красный И сладкий ИЛИ желтый И кислый будет соответствовать красному сладкому яблоку ИЛИ желтому кислому лимону.
  • Результат, где определяется тип результата и поле для его записи.
    • Поле для записи результата. В это поле будут записаны идентификаторы документов из заданного источника, соответствующих заданным фильтрам, перечисленные через запятую или иное значение, в зависимости от параметра «Тип результата».
    • Тип результата: список документов, количество документов, минимальное значение поля, максимальное значение поля, сумма по полю. Последние три результата требуют указания поля, по значениям которого будет выполнена соответствующая математическая операция. Например, можно выбрать договор с максимальной суммой. Или получить сумму всех договоров по заданному контрагенту (в качестве источника данных нужно будет выбрать тип документа «Договор», в фильтрах задать соответствующего контрагента, тип результата выбрать «Сумма по полю», а в качестве рассчитываемого поля выбрать поле «Сумма договора».
      • Сортировка. Этот параметр доступен, если тип результат равен списку документов. Можно выбрать любое поле соответствующего типа документа и указать направление сортировки (по возрастанию или убыванию).
      • Максимальное количество документов. При необходимости можно ограничить количество документов в результате выборки. Параметр доступен только для списка документов.
      • Рассчитываемое поле. По этому рассчитывается сумма, или выбирается максимальное или минимальное значение. Параметр доступен после выбора соответствующего типа результата.

Генератор отчетов

Действие позволяет настроить формирование отчетов на основе имеющихся в системе документов. Действие имеет следующие настройки:

Этот отчет состоит из 6 полей:

  • Название — это значение документа группировки.
  • Входящих — количество входящих документов. По данному полю включены категоризация по состояниям (поэтому в отчете вместо одного столбца выводятся 5 — разбивка осуществляется автоматически) и детализация (значения в столбцах являются гиперссылками, нажатие на которые приводит к открытию окна со списком документов, на основе которых было сформировано каждое конкретная цифра).
  • Исходящих — количество исходящих документов без категоризации, но с детализацией.
  • Количество листов — сумма по одноименному числовому полю входящего документа.
  • Вх + Исх — сумма столбцов Входящих (Итого) и Исходящих.
  • В%И — процент исходящих от входящих документов.

Действие имеет следующие настройки:

  • Документы
    • Группировка. Для консолидации данных в отчете применяется этот параметр. Отчеты могут формироваться в разрезе документов заданного документа (например, отчет по сотрудникам — документам типа «Структура» или по контрагентам) или по времени. Для группировки по типу документа доступна возможность скрытия строк с нулевыми данными, а для группировки по времени можно выбирать временные периоды (дни, месяцы, кварталы, годы — периоды по которым будут сгруппированы данные, то есть для «месяцев» в отчете будут строки с названиями месяцев) и настраивать их отображение (месяцы можно выводить в виде цифр или названий, к дням можно добавить месяц и год, а к месяцам и кварталам — год.
    • Типы документов. К отчету, как правило, подключается один и более типов документов. Например, при формировании отчета по контрагентам, можно подключить входящие и исходящие документы, чтобы иметь возможность вывести количество эти документов в разрезе контрагентов, а также договоры для вывода общей, максимальной и, например, средней суммы договоров по контрагенту.
  • Поля отчета — это столбцы таблицы отчета. Эти поля могут быть следующих типов:
    • Значение поля позволяет вывести в строке отчета любое поле из типа документа группировки. Например, название контрагента. Такое поле имеет следующие настройки:
      • Поле типа документа группировки, которое будет выводится в данном поле-столбце отчета.
      • Заголовок столбца отчета.
      • Сортировка. Позволяет настроить сортировку по данному столбцу в отчете.
    • Сумма по полю. Можно подсчитать, например, общую сумму договоров по каждому контрагенту. В настройках поля указываются:
      • Тип документа, по полю которого будет выполняться расчет. Здесь же необходимо выбрать поле для связи с группами (строками) отчета. Например, тип документа «Договор», поле для связи - «Контрагент» (если отчет формируется по контрагентам), чтобы генератор сформировал суммы по договорам, относящихся к каждому контрагенту.
      • Поле, по которому будет выполняться расчет. В случае «Договора» - поле «Сумма договора».
      • Заголовок.
      • Сортировка.
      • Фильтры. В этом поле доступна дополнительная вкладка «Фильтры», позволяющая рассчитать сумму по заданному полю не всех документов заданного типа (соответствующих фильтрам на вкладке «Фильтры» действия), относящихся к конкретной группе (к контрагенту, в нашем примере), а отвечающим этим дополнительным фильтрам. Например, можно рассчитывать сумму не по всем договорам с контрагентом, а только по выполненным:
      • Дополнительные настройки:
        • Категоризация по полю. Данные в столбце отчета будут категоризованы по этому полю. Например, можно не просто вывести количество входящих от каждого контрагента, но и категоризовать входящие по их состоянию - в этом случае данный столбец отчета будет разбит на некоторое количество колонок, соответствующих количеству состояний имеющихся входящих документов, и в каждом из них будет отображено количество документов с соответствующим состоянием. Можно выбрать любое поля типа «Строка» или «Время», а также переменные ИМЯ АВТОРА ДОКУМЕНТА, НАЗВАНИЕ ПОДРАЗДЕЛЕНИЯ, НАЗВАНИЕ ТЕКУЩЕЙ ТОЧКИ МАРШРУТА. Для категоризации по полю типа «Время» доступны дополнительные настройки:
          • Период категоризации: день, месяц, квартал, год. Если выбрать, например, месяц, то в отчете будут категории по месяцам.
          • Отображение года (месяца). Для категоризации по дням, месяцам и кварталам можно вывести год, а для дней еще и месяц.
        • Детализация. При включенной детализации пользователю сможет нажимать на ячейки данного поля с данными, чтобы увидеть окно детализации. Это окно отображает таблицу с документами, на основе которых было получено значение поля. Здесь же можно определить набор полей для такой таблицы документов.
        • Итого. Если включить эту настройку, то по данному полю будет подсчитано итоговое значение, которое будет выведено в нижней странице отчета.
    • Минимальное / максимальное / среднее значения заданного поля. Эти типы полностью аналогичны предыдущему типу, с той только разницей, что вычисляется не сумма, а находится минимальное / максимальное / среднее значение поля (например, «Сумма договора»).
    • Количество документов. В таком поле выводится общее количество документов заданного типа со связью с группой по выбранному полю. Например, количество входящих документов по полю «Контрагент». В настройках поля указываются:
      • Тип документов, количество которых будет рассчитываться.
      • Заголовок.
      • Сортировка.
      • Фильтры (см. Сумму по полю ССЫЛКА).
      • Дополнительные (см. Сумму по полю ССЫЛКА)
    • Вычисляемое поле. Это поле позволяет вычислить некий результат на основе существующих полей отчета. Например, вычислить общее количество внешних документов, равное сумме входящих и исходящих документов (по каждому контрагенту). Поле имеет следующие настройки:
      • Заголовок.
      • Формула в виде табличного редактора. Каждая строка такого редактора имеет столбец выбора знака операции и операнда.
        На приведенному выше рисунке введена формула:
        =Кол-во входящих+Кол-во исходящих
        Редактор поддерживает скобки. Для ввода скобок следует воспользоваться кнопкой (…). Например, ту же самую формулу можно ввести одной строкой. Редактор позволяет использовать операции умножения, деления, сложения, вычитания и вычисления процента (вычисление процента осуществляется по формуле: Всего % Часть, например, можно ввести формулу ПолеА % ПолеБ, и если в строке отчета полеА будет содержать 80, а ПолеБ 40, в вычисляемом поле с приведенной формулой отобразится 25. Вместо ПолеА % ПолеБ, формула может иметь вид (ПолеА+ПолеВ) % ПолеБ; для ввода такой формулы следует использовать кнопку для ввода выражения (…).
      • Количество знаков после запятой.
      • Сортировка.
  • Результат.
    • Поле для записи отчета. Отчет формируется в формате поля «Динамическая таблица» (JSON).

Диалог

Действие позволяет отобразить пользователю диалоговое окно. Это окно может быть информационным или отображать форму, которую пользователь может заполнить. Действие имеет следующие основные настройки:

  • Заголовок окна.
  • Содержимое окна. В этом параметре доступен полноценный редактор шаблона, позволяющий вставлять поля документа и пр. Заголовок и содержимое локализованы, то есть, если в До́кви настроены несколько языков, для каждого из них можно настроить свои заголовок и содержимое.
  • Режим: форма или просмотра. В первом случае пользователь сможет изменить значения полей и сохранить их; во втором пользователю отображается информационного диалоговое окно.

На вкладке «Дополнительные» доступны параметры, позволяющие определить действия в зависимости от события:

  • После сохранения формы. Параметр позволяет переместить документ на заданную точку маршрута после того, как пользователь нажмет на кнопку «Сохранить» в диалоговом окне.
  • После отмены формы. А этот параметр позволяет изменить точку документа, если пользователь нажмет в окне на кнопку «Отмена».
  • После показа формы. Этот параметр доступен при размещении действия в каком-либо контексте маршрута и позволяет прервать выполнения маршрута.
  • Однократный запуск. Параметр также доступен только в контексте и позволяет ограничить количество запусков действия в рамках одной сессии.
  • Ширина / Высота окна. Ширина и высота могут не устанавливаться, и тогда диалоговое окно определяет свой размер автоматически. Задавать размер нужно с указанием единиц измерения: px, rem, em, %, vw/vh и пр.

Последние два параметра позволяют запросить у пользователя данные и обработать полученную информацию в рамках одной точки (такой потребности нет при размещении действия в кнопке, поэтому они там недоступны). Для этого необходимо включить в «Диалоге» параметры прерывания маршрута после показа формы, однократного запуска и выбрать текущую точку для перемещения после сохранения формы. Когда документ окажется на данной точке, будут запущены действия в контексте перехода. Когда дело дойдет до действия «Диалог», оно выдаст пользователю форму и прервет обработку маршрута, то есть действия, следующие за ним выполнены не будут. После того как пользователь заполнит форму «Диалога» и нажмет на кнопку «Сохранить» действие «Диалог» получит эту форму, сохранить значения заполненных полей и переместит документ на ту же самую точку, где оно находится (для повторного запуска контекста перехода). При этом, когда дело дойдет до самого «Диалога» оно повторно не запустится, что позволит маршруту запустить действия, следующие за ним. Таким образом эти следующие действия получат данные от пользователя.

Доступ

По умолчанию, к документу имеет доступ только его автора. Предоставление доступа другим пользователям можно настраивать двумя способами: на вкладке «Доступ» типа документа и через описываемое действие. Первый вариант позволяет предоставлять доступ к документам определенного автора или созданным в конкретном подразделении. Если этот вариант удовлетворяет стоящим требованиям следует предпочесть его второму варианту, который позволяет управлять правами намного более гибко, но способен создавать дополнительную нагрузку на сервер.

Администратору для настройки действия доступны следующие параметры:

  • Субъект доступа, иначе говоря, кому предоставляется доступ. Здесь можно выбрать поле с документами «Структуры» или одну из переменных: ПОДРАЗДЕЛЕНИЕ ДОКУМЕНТА (подразделение, к которому относился автора на момент создания документа), ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ (пользователь, который открывает документ), АВТОР И ЕГО ПОДРАЗДЕЛЕНИЯ (все подразделения, к которым относится автор: Отдел — Департамент … - Компания; кстати, отменить доступ автора документа нельзя), ПРЕЖНЕЕ ЗНАЧЕНИЕ ИЗМЕНЕННОГО ПОЛЯ (эта переменная позволяет, к примеру, отменить доступ тем сотрудникам, которые были в некоем полей «Исполнители» до его изменения).
  • Объект. Доступ может быть настроен для текущего документа, документам из какого-либо поля (как правило, это поле имеет тип «Ссылка»), всем документам заданного типа или типам документам, идентификаторы которых находится в выбранном поле (используйте последние два варианта только тогда, когда есть реальная необходимость в таком использовании, во всех прочих случаях пользуйтесь вкладкой «Доступ»). Перечень заданных объектов (документов) можно расширить всеми их «родственниками» (когда документ Б создается из документа А, оба документа А и Б становятся родственными), или только дочерними (из А создали Б, а из Б создали В — для Б дочерним является В и всего его «дети»), или только родительскими (для Б - родительский А и всего его «предки»). Включение родственных документов особенно полезно тем, что работает даже для тех «детей» которые еще «не родились». Если г-ну Иванову был предоставлен доступ к документу Б и всем его дочерним документам сегодня, то даже созданный завтра из документа Б документ В будет доступен Иванову без каких-либо дополнительных действий.
  • Доступ можно разрешить или запретить. Запретить доступ автору нельзя. Если в качестве субъекта доступа при запрете используется какое-либо подразделение «Структуры», доступ удаляется для всех его сотрудников (включая сотрудников дочерних подразделений). Таким образом, чтобы удалить доступ к документу вообще для всех (кроме автора), достаточно в качестве субъекта доступа передать корневую точку Структуры (то есть организацию).

Запись

Чаще всего в До́кви изменяются значения полей. Изменять эти значения могут как пользователи, так и сама система. И большинство операций изменения полей системой осуществляются через действие «Запись». Настройки действия поделены на две вкладке, на первой определяется поле, которое будет изменено, а на второй новое значение.

Поле для записи может быть:

  • Обычным полем документа. Обычные поля — это поля, которые есть у каждого документа в системе (они определяются на вкладке «Поля» типа документа). Поэтому для записи в такое поле необходимо определить документ, к которому относится записываемое поле. Это может быть текущий документ (документ, из которого запускается «Запись») или документ по ссылке из заданного поля (например, поле «Ссылка» может содержать один или несколько документов, у которых нужно изменить значение некоего поля; если документов будет несколько, запись будет осуществлена в каждый из них). Во втором случае понадобится указать тип документов из заданного поля. Ну и, конечно, выбрать само поле.
  • Настроечным полем. Настроечные поля, в отличие от обычных, имеют одно значение, не зависящее от документов (они определяются на вкладке «Настройки» типа документа). Поэтому в данном случае не нужно определить документ, а нужно просто выбрать поле (поле может быть из любого типа документа)
  • Поле с ID из поля. ID — это идентификатор поля (у каждого поля в системе есть свой собственный, уникальный идентификатор). Этот вариант полезен, когда разработчик конфигурации не знает в какое именно поле нужно выполнить «Запись», т. к. это поле будет определено только в процессе работы пользователей с системой. Например, поручение может быть создано из внутреннего документа или из входящего. И после выполнения поручения в родительский документ нужно записать результаты выполнения. Тут перед администратором встает проблема, ведь он не знает тип этого родительского документа (это может быть или внутренний, или внешний). Но, если он (администратор) передаст в поручение (при его создании) идентификатор поля, в которое нужно записать результаты выполнения (из внутреннего идентификатор поля внутреннего документа, а из входящего — входящего), проблема будет решена, благодаря возможности записи в поле, идентификатор которого можно получить из другого поля.

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

  • Определить способ записи (метод записи) в выбранное на первой вкладке поле. Почти каждое поле в До́кви, в зависимости от своего типа, позволяет не просто сохранять передаваемые ему данные, но и обрабатывать их при помощи методов записи. Например, в поле типа «Ссылка» можно добавлять идентификаторы документов к уже существующим или удалять (см. методы записи). Настройка записываемого значения зависит от того, какой метод записи будет выбран. Далее мы рассмотрим вариант прямой записи значения в поле (то есть существующее значение будет заменено тем, которое будет сформировано на основе описываемых ниже настроек). Этот вариант называется «Перезаписать содержимое поля».
  • Значение для перезаписи (может быть получено):
    • Из обычного поля, как текущего документа, так и документа, идентификатор которого находится в каком-либо поле (если в поле будет несколько документов, из каждого из них будет загружено соответствующее значение, потом все эти значения будут перечислены через запятую и то, что получится, будет записано в выбранной на первой вкладке поле). Во втором случае необходимо указать тип этого документа. В обоих случаях нужно выбрать поле, из которого будет загружено значения для записи. И в завершении можно будет не просто получить значение выбранного поля, а каким-то образом обработать его при помощи заданного метода чтения этого поля (например, получить сумму хранящегося в поле числа и некоего аргумента, если будет выбрано числовое поле).
    • Из настроечного поля, которое нужно выбрать (при необходимости можно также выбрать метод чтения этого поля (при наличии таких методов в соответствующем типе поля)).
    • Из переменной. Доступны все имеющиеся поля-переменные.
    • Идентификатора поля. В качестве значения будет установлен идентификатор выбранного поля.
    • Идентификатора точки маршрута. В качестве значения будет установлен идентификатор выбранной точки маршрута.
    • Ввести вручную. В строку ввода можно ввести любое значение. Учтите, что для записи в некоторые поля нужно понимать их внутренний формат значений. Скажем, в ссылочное поля нельзя записать Иванова, - в него нужно записывать идентификаторы из 36 символов.

Импорт из файла

Действие «Импорт из файла» предназначено для создания документов на основе данных из табличных файлов в форматах CSV (разделитель - запятая) или XLSX. Каждая строка импортируемого файла соответствует новому создаваемому документу.
Для настройки действия администратору доступны параметры, размещенные на двух вкладках.

На вкладке «Данные» доступны следующие настройки:

  • Тип документа. Действие будет создавать документы этого типа.
  • Импортируемый файл XLSX или CSV. Идентификатор файла (содержимое файлового поля) или полный путь к файлу в файловой системе сервера может быть загружен из поля или введен вручную. При загрузке файла из файловой системе действие по-умолчанию может использовать только каталог файлового хранилища (по умолчанию, storage/file). Можно добавить свои каталоги через ключ AllowedCopyDirs секции [File] конфигурационного файла doc-v.conf (если каталогов несколько используйте разделитель — запятую). Файл может быть также загружен пользователем самостоятельно из окна действия (в этом случае действие при запуске выдаст пользователю это окно).
  • Стартовая строка. Строка файла, начиная с которой начнется обработка.

На вкладке «Импорт» определяется процесс импорта данных:

  • Сопоставление. Таблица из двух столбцов: в первом определяется поле создаваемого документа, а во второй номер колонки в импортируемом файле, из которой будет получено значение для этого поля (нумерация начинается с 1).
  • Инициализация. Поля создаваемых в результате импорта документов можно инициализировать заданными в этом параметре значениями. Если одно и то же поле будет и в «Сопоставлении» полей и колонок импортируемого файла и в данном параметре, приоритет получит значение из сопоставления.
  • Многопоточность. По умолчанию импортируемые документы создаются параллельно, чтобы ускорить процесс импорта. Но иногда бывают ситуации, когда обработка данных из файла должна выполняться построчно, по порядку, - в этом случае следует отключить многопоточность (это может привести к существенному снижению скорости обработки).

Контроль

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

Действие позволяет определить неограниченное количество контрольных точек и групп действий, запускаемых по их срабатыванию. Одна и таже контрольная точка может срабатывать неограниченное количество раз. Всякий раз перебираются все контрольные точки по порядку их следования и вычисляется контрольное время для каждой из них; когда вычисленное время окажется в будущем относительное текущего времени, перебор останавливается и планируется запуск на полученное время. Когда наступит это время, выполняются действия из заданной группы и снова перебираются все контрольные точки для поиска времени в будущем. Если все точки будут возвращать время в прошлом, контроль будет отключен. Контроль также отключается, когда документ оказывается на одной из заданных точек маршрута.

Управление контрольными точками осуществляется на вкладке «Общие».

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

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

На вкладке «Общение» также можно определить точки маршрута, при переходе на которую контроль в документе автоматически и безусловно отключается.

Перемещение

Действие «Перемещение» предназначено для перемещения документа на заданную точку маршрута. Перемещать можно как на отличную от текущей точки маршрута, так и на текущую точку маршрута; во втором случае будет запущен контекст перехода текущей точки. Действие недоступно в контекстах создания и проверки нулевой точки маршрута, т. к. перемещение документов из этих контекстов может привести к ошибкам в документах.

Действие имеет следующие настройки:

  • Перемещаемые документ. Переместить на другую точку маршрута можно как текущий документ (документ, в котором запускается «Перемещение»), так и документ по ссылке из какого-либо поля (это поле должно содержать идентификаторы документов соответствующего типа). Если в поле будет несколько документов, перемещены будут все они.
  • Целевая точка маршрута — точка, на которую будет перемещен документ. Эту точку можно непосредственно выбрать из списка или выбрать поле с ее идентификатором. Последний вариант полезен, когда целевая точка будет определена только в процессе выполнения документа (например, поручение может быть создано из, скажем, внутреннего или входящего документов; чтобы по завершении исполнения поручения переместить родительский документ в рамках одного действия «Перемещение» можно будет передать целевую точку через поле).
  • Многопоточность. Перемещение других документов можно выполнять параллельно, чтобы увеличить быстродействие. Однако, если вам необходимо сначала переместить другой документ, а затем выполнить какие-то операции в текущем, которые зависят от результатов перемещения того другого документа, многопоточность использовать не следует.

Перенаправление

Действие позволяет перенаправить пользователя в другой документ из текущего. У действия только один параметр — поле, которое должно содержать идентификатор целевого документа. Если в этом поле будет несколько документов, перенаправление будет осуществляться на первый из них.

Печать

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

может отобразится на бумаге вот так:

Действие имеет одну настройку — Шаблон, настройка которого осуществляется при помощи редактора, применяемого для настройки шаблонов типа документа.

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

Некоторые типы полей (такие как «Таблица документов», «Коллекция документов», «Хранилище» и пр) на текущий момент не поддерживаются действием.

Повтор

Данное действие является контейнерным (контейнерное действие — этот такое действие, которое содержит другие действия) и позволяет выполнить заданное количество раз настраиваемую группу действий или выполнять эту группу действий до тех пор, пока выполняются заданные условия.

Например, пока поле «Число» имеет значение, меньшее или равное 5, будут выполняться действия на вкладке «Выполнить» (где нужно не забыть добавить «Запись» для увеличения значения поля «Число», чтобы не оказаться в бесконечном цикле. В числе выполняемых действий может быть еще один «Повтор», но в этом «Повторе» еще один «Повтор» будет уже недоступен.

Редактирование

Создание документа пользователем осуществляется при помощи действия «Создание», а для его изменения обычно пользователю делегируется кнопка с действием «Редактирование». Это действие переводит документ из шаблона просмотра в шаблон формы.

Действие имеет следующие настройки:

  • Запуск контекст проверки, определяет необходимость запуска после сохранения измененного документа контекста проверки маршрута.
  • После сохранения формы. Параметр позволяет переместить документ на заданную точку маршрута после того, как пользователь нажмет на кнопку «Сохранить» в редактируемом документе.
  • После отмены формы. А этот параметр позволяет изменить точку документа, если пользователь нажмет в окне на кнопку «Отмена» в форме редактируемого документа.
  • После показа формы. Этот параметр доступен при размещении действия в каком-либо контексте маршрута и позволяет прервать выполнения маршрута.
  • Однократный запуск. Параметр также доступен только в контексте и позволяет ограничить количество запусков действия в рамках одной сессии.

Поведение последних двух параметров идентично поведению одноименных настроек действия «Диалог».

Регистрация

Процесс регистрации документа в До́кви сводится к формированию регистрационного номера (путем получения значений из различных полей) и записи полученного номера в какое-либо поле документа (как правило, это поле типа «Строка»). Формирование такого номера можно осуществить и при помощи действия «Запись», но, чтобы проверить полученный номер на уникальность придется добавить еще несколько действий, а для сброса нумераторов в новом году их понадобится еще больше, поэтому лучше всего для этой цели использовать действие «Регистрация».

Настройки действия находятся на двух вкладках: «Номер» и «Настройки».

На вкладке «Номер» настраиваются:

  • Поле для записи регистрационного номера
  • Поле для записи даты регистрации (это дата, когда будет запущено действие «Регистрация»)
  • Регистрационный номер. Номер можно сформировать из неограниченного количества значений, которые можно получить из обычных полей текущего документа или любых настроечных, из переменных или вводить вручную. Как правило, в числе записываемых значений используется поле, содержащее нумератор (настроечное поле, которое обычно создается для каждого типа документа).

На вкладке «Настройки» можно:

  • Выбрать Период регистрационного номера, который используется для определения временного интервала в течение которого проверяется его уникальность, а также времени выполнения действия сброса (как правило, это запись 1 в поле нумератора). Если установить период равным в «год» и включить уникальность, то сформированный номер будет проверяться на уникальность среди всех значений поля регистрационного номера со сформированным данным действием регистрационным номером в течение текущего года, а в последнюю секунду года будет выполнено действие сброса.
  • Включить Уникальность. Если регистрационный номер будет неуникальным в установленном периоде, будет выполнена настраиваемая запись (то есть изменено какое-то поле, в большинстве случаев изменяется поле нумератора) и сформирован новый номер. Если отключить проверку уникальности возможны документы с одинаковыми номерами в установленном периоде.
  • Настроить Сброс нумератора по окончании «Периода», выбрав настроечное поле с нумератором и записав в него 1.
  • Разрешить Повторную регистрацию. По умолчанию, при запуске действие проверяет поле с регистрационным номером - если это поле будет не пусто, действие завершает выполнение сразу. Но можно настроить действие таким образом, чтобы регистрация выполнялась неограниченное количество раз - всякий раз будет формироваться новый регистрационный номер.

Решение

Действие «Решение» предназначено для настройки процессов согласования, подписания, исполнения и прочих, где от одного или нескольких человек требуется принятия определенных решений. Действие позволяет организовывать параллельное принятие решения, последовательное и смешанное (например, вначале решение о целесообразности приобретения чего-либо выскажут специалисты, причем высказывать могут сразу все, параллельно, а потом решение примет финансист). Участники процесса (как правило, после нажатия кнопки с «Решением») видят диалоговое окно, в котором могут выбрать один из неограниченного количества вариантов, дополнить свой выбор комментарием и / или файлами.

Настройки действия «Решение» разбиты на три вкладки: «Участники», «Настройки» и «Отчет» (в действии может быть и одна вкладка: «Окно» или «Решение»).

Вкладка «Участники» содержит следующие настройки:

  • Действие. «Решение» может запустить процесс принятия решения, показать окно решения или добавить решение за какого-либо участника процесса. Рассматриваемая вкладка «Участники» отображается только при запуске процесса.
  • Участники процесса принятия решения. Здесь выбираются одно или несколько полей (включая некоторые переменные) с участниками процесса принятия решения. Поля могут содержать перечень структурных идентификаторов (сотрудников и подразделений), перечисленных через запятую, например, поле типа «Ссылка», и все участники из такого поля будут работать одновременно, параллельно. Можно также использовать поле типа «Таблица», каждая строка которой будет выполняться последовательно (то есть сначала должны будут отработать те участники, которые находятся в первой строке таблица, затем во второй и т. д.). Если полей будет несколько, они тоже будут работать последовательно (например, два ссылочных поля — сначала работать будут сотрудники из первого поля, а потом из второго). Таким образом можно настраивать сложные смешанные схемы принятия решений (согласований и пр.). К полю «Таблица» предъявляются определенные требования:
    • Участники безусловно загружаются из первого поля (столбца)
    • Во втором столбце может находиться значения для определения реакции при несогласии участника процесса, находящегося в данной строке. Если это значение будет равно 1 — процесс при несогласии будет останавливать, если 2 — продолжен. Например, выполняется согласования по следующей схеме: вначале согласуют специалисты (их мнение может быть проигнорировано, поэтому в строке таблицы со специалистами второй столбец можно установить в значение 2). Затем к делу подключаются заместители директора, которые имеют право вето. И для этой строки во втором столбце понадобится значение, равное 1. Для установки этих значений для второго столбца поля «Таблица» наилучшим вариантом будет поле «Список» со значениями вариантов 1 и 2.
    • В третьем столбце определяется необходимость уведомления автора о каждом принятом решении любого участника в данной строке: уведомлять (1) или не уведомлять (2).
    Поле с участниками процесса принятия решения может содержать не только сотрудников, но и подразделения «Структуры». В этом случае, действие извлекает всех сотрудников из полученных подразделений (включая сотрудников дочерних подразделений), и каждый сотрудник становится участником процесса принятия решения.
  • Варианты решений. Каждый участник для принятия решения получает диалоговое окно (как правило, это окно появляется после нажатия на кнопку с действием «Решение» в режиме показа окна). Варианты определяются на этапе разработки конфигурации, у участника будет возможность прокомментировать свое решение и, при необходимости, добавить один или несколько файлов (если будут включены эти возможности при помощи соответствующих переключателей). Для каждого варианта необходимо указать:
    • Заголовок. Его увидит участник возле переключателя.
    • Значение. Положительное значение означает положительное решение, а отрицательное — отрицательное. Различные веса решения зарезервированы на будущее, на текущий момент значение 1 и 100 равнозначны.
    • Цвет. Этим цветом будет выделен заголовка варианта в автоматически формируемом отчете о решении.
    При наличии только одного варианта и отключенными возможностями комментирования и загрузки файла диалоговое окно принятия решения не будет отображаться.
  • Название процесса. Оно будет отображаться в окне, в котором участник процесса выберет свой вариант решения.

На вкладке «Настройки» (она доступна только при запуске процесса) определяются:

  • Непринявшие решение участники процесса. В этом поле действие автоматически записывает тех, от кого ожидается принятие решения. Если, к примеру, участники процесса переданы через таблицу с двумя строками, в первой из которых находятся Иванов с Петровым, а во второй — Сидоров, и действие «Решение» только что запустило процесс, в поле для непринявших решение будут записаны Иванов и Петров (кстати, они автоматически получат доступ и уведомление на текущий документ, а также сообщение по электронной почте и в Telegram при наличии соответствующих настроек, а в случае завершения процесса до того, как они примут свое решение (например, решение примет супер-участник), уведомления будут автоматически удалены). Это поле обычно используется для делегирования кнопки с действием «Решение» в режиме показа окна, чтобы Иванов и Петров могли нажать на кнопку и выбрать свой вариант. После того, как, скажем, Иванов «выскажет» свое решение, в поле останется только Петров. А после Петрова действие обработает следующую строку нашей гипотетической таблицы и уведомит и запишет в поле Сидорова, который, благодаря этому сможет открыть документ и нажать на соответствующую кнопку.
  • При отказе можно прервать процесс или продолжить. Это общая настройка на весь процесс, которая может быть переопределена, если в качестве передачи участников процесса использовать поле «Таблица».
  • Уведомлять автора о каждом решении или не уведомлять. Эту настройку также можно переопределить использованием поля «Таблица» для участников процесса принятия решения.
  • Завершающая точка маршрута, на которую будет перемещен текущий документ, когда у действия не останется ни одного участника.
  • Точка отклонения используется действием для перемещения текущего документа, если настроено прерывание процесса, и соответствующий участник выбрал вариант с отрицательным значением.
  • Супер-участники. Сотрудники в этом поле становятся супер-участниками процесса решения. Отличие таких участников от обычных заключается в том, что после их решения текущая строка процесса завершается, вне зависимости от наличия участников, не успевших высказать свое мнение. Например, документ согласуется многими сотрудниками организации, среди которых есть очень авторитетный и компетентный Иван Иванович, решение которого настолько веско, что после него нет никакого смысла продолжать процесс. Ивана Ивановича имеет смысла сделать супер-участником.

На вкладке «Отчет» (она также доступна только при запуске процесса) определяются:

  • Поле отчета, в которое записывается автоматически формируемый и обновляемый после каждого решения отчет. Отчет в формате HTML, поэтому следует использовать текстовое поле со включенным редактором.
  • Поле для записи истории. В отличие от отчета, в который записываются только окончательные решения участников процесса, в историю записываются все решения.
  • Формат имени. Можно определить формат имени участников процесса, оказавшихся в отчете.
  • Запись решения. Настройки этой группы позволяют, помимо прочего, создать отчет собственного формата либо просто получить те или иные данные для дальнейшей нестандартной обработки. В настройках выбираются поля, в которые будут записывать соответствующие данные после каждого принятия решения. Поля записываются в том порядке, в котором они перечислены в группе (это важно, если будет использоваться запуск контекста изменения для дополнительной обработки решения).

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

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

Для добавления решения необходимо указать:

  • Поле, которое будет содержать автора решения — участника, от имени которого добавляется решение.
  • Вариант решения — значение соответствующего варианта, настроенного при запуске процесса решения.
  • Комментарий по решению — можно выбрать поле с соответствующим текстом. Этот текст будет добавлен в отчет решения. Поскольку этот отчет имеет собственную HTML-разметку, которая может быть нарушена, теги HTML из добавляемого комментария, по умолчанию, вырезаются. Но можно их разрешить.
  • Файл к решению — поле с соответствующим файлов (файлами).

Создание

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

Действие имеет следующие настройки:

  • Тип документа. В результате выполнения действия будет создан один или несколько документов этого типа.
  • Значения полей. Эта настройка позволяет инициализировать значения полей создаваемого документа. Значения для полей могут быть получены из полей текущего документа (документа, в котором запускается действие «Создание») или из JSON-объекта (как правило, используется поле «JSON»).
    • Из полей текущего документа
      При выборе этого варианта становится доступной таблица сопоставления из двух столбцов: в левом выбираются поля создаваемого документа для инициализации, а в правом — определяются значения, которые могут быть получены из полей (есть возможность применения методов полей) или введены вручную.
    • Из JSON
      Данный вариант часто применяется, когда данные для создания документов поступает от сервиса «REST API», т. к. позволяет легко создать документы на основе полученного JSON. Этот вариант позволяет не только создавать документы, но и осуществлять поиск существующих документов по ключевым полям, и, в случае нахождения, изменять эти документы вместо создания новых. Для указания таких ключевых полей в таблице сопоставления ключей JSON (которая становится доступной после выбора поля с JSON) и полей создаваемого документа добавляется столбец с переключателем, позволяющем выбирать определенные строки. Работая в режиме «Создание или изменение» действие ищет документы, у которых выбранные ключевые поля имеют значения из полученного JSON, чтобы привести все поля, определенные в таблице, значениям соответствующих ключей.
      JSON может быть массивом. В этом случае действие попытается создать не один документ, а столько, сколько элементов будет в этом массиве. Разумеется, каждый элемент такого массива должен содержать ключи, определяемые в таблице сопоставления ключей и полей.
  • Автор. В До́кви каждый документ должен иметь автора. По умолчанию, автором является текущий пользователь. Но этот пользователь может быть не всегда (например, при запуске маршрута документа от «Таймера») или может быть ситуация, когда документ нужно создать от другого пользователя. В этих случаях используется данный атрибут. Следует отметить, что, если автор не будет найден, документ не будет создан. А если авторов будет несколько (например, из «Ссылки» со множественным выбором), то действие создаст несколько документов — для каждого автора свой.
  • Поле для записи результат. В это поле действие запишет идентификатор созданного документа. Если документов будет несколько действие перечислит их идентификаторы через запятую или сформирует массив JSON.
  • Многопоточность. Если текущий и создаваемый документ не зависят друг от друга или, если создается много документов, которые также не зависят ни друг от друга, ни от текущего документа, имеет смысл включить многопоточность, чтобы увеличить скорость создания документов, т. к. в этом случае они будут создаваться одновременно, а не по очереди. Настройка доступна только при запуске действия из маршрута.

Таймер

Действие «Таймер» позволяет в заданное время в будущем переместить документ на заданную точку или записать название таймера в заданное поле.

На вкладке «Настройка» действия можно:

  • Включить или отключить таймер. Поскольку таймеров в одном документе может быть несколько (в отличие от «Контроля», который может быть только один), отключать можно все запущенные таймеры сразу или один по его названию.
  • Время запуска. Здесь выбирается поле со временем (поле типа «Время» или «Таблица»), можно выбрать метод получения данных из поля.
  • Документ. Таймер может быть запущен в текущем документе или в документе, идентификатор которого находится в заданном поле. Если в этом поле будет несколько документов, таймер будет запущен для первого из них.
  • Название таймер. По умолчанию, название таймера формируется автоматически. Именно это название можно записать в момент, когда сработает таймер, в поле, определяемое на вкладке «Настройки». Можно изменить это название, выбрав поле, из которого оно будет загружена. Чтобы иметь возможность отключить таймер по названию, следует определить его в этом параметре. Таймер однозначно определяется его названием и привязкой к документу. Поэтому, если запустить действие «Таймер» второй раз с таким же названием и тем же документом, это приведет к обновлению времени срабатывания уже запущенного таймера, а не к созданию нового.

Вкладка «Действия» позволяет определить действия, которой «Таймер» выполнит в момент срабатывания:

  1. Поле, в которое будет записано его название.
  2. Точку маршрута, на которую будет перемещен документ.

Уведомление

В верхней панели пользовательского интерфейса системы (правее главного меню) находится пиктограмма в виде колокольчика, нажатие на которую приводит к открытию пользовательского центра уведомлений (если сообщений нет, «колокольчик» скрывается). Описываемое действие управляет уведомлениями от документов, которые могут направляться в пользовательский центр уведомлений.

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

Действие имеет следующие настройки:

  • Отправить / удалить уведомление.
  • Получатели уведомления могут быть загружены из поля с возможностью указания метода получения данных (чтения) или выбраны пользователем (в этом случае действие покажет пользователю соответствующее диалоговое окно, в котором можно будет выбрать получателей и ввести текст сообщения). Получателями могут быть как сотрудники, так и подразделения «Структуры». В последнем случае, уведомления получают все сотрудники, находящиеся в заданном подразделении. В частности, если выбрать поле, содержащее компанию (корневой документ «Структуры»), уведомления получат (или оно будет удалено) все сотрудники компании.
  • Документ. Уведомление может быть отправлено (удалено) как на текущий документ, так и на любые иные документы, находящиеся в выбранном в этом параметре поле.
  • Шаблон сообщения позволяет определить текст сообщения. Допускается вставка полей текущего документа и настроечных полей.
  • Переключатель отправки уведомления по электронной почте. Если его включить, сообщение со ссылкой на соответствующий документ будет отправлено получателям по электронной почты (при наличии у них почтового ящика в учетной записи). Дополнительных настроек для почтового сообщения не предусмотрено; если нужны расширенные возможности, следует использовать действие «Электропочта».
  • Переключатель отправки уведомления через Telegram. Если его включить, сообщение со ссылкой на соответствующий документ будет отправлено получателям в Telegram (при включенной интеграции и наличии привязки аккаунта Telegram пользователя в его профиле).

Удаление

Действие предназначено для удаления документов из системы и имеет следующие настройки:

  • Документ для удаления. Можно удалить текущий документ или документы, идентификаторы которых находятся в заданном поле.
  • Перед удалением выполнить контекст удаления текущей точки документа или переместить документ на заданную точку, чтобы выполнить какие-либо действия перед удалением. Если в результате выполнения этих действий документ покинет точку маршрута, на которой они находятся, удаление будет отменено.

Если «Удаление» запускается через кнопку, пользователь должен подтвердить операцию в появляющемся диалоговом окне.

Условие

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

edsncalayerkz
  • Условие, где можно определить одно или несколько условий, связав их логическими И или ИЛИ (ИЛИ имеет приоритет).
  • Условие верно. На этой вкладке определяются действия, которые будут запущены при соблюдении условий.
  • Условие ложно. На этой вкладке определяются действия, которые будут запущены при несоблюдении условий.

На вкладках с действиями доступны переключатели, позволяющие:

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

Экспорт в файл

Действие «Экспорт в файл» предназначено для выгрузки данных из системы До́кви в файлы следующих типов: DOCX, CSV, PDF, XLSX (при запуске действия из кнопки журнала доступен только PDF). В зависимости от настроек файл может быть сразу выдан пользователю или записан в файловое хранилище.

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

DOCX

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

Для экспорта в предварительно подготовленный файл DOCX необходимо выбрать поле, в котором будет находиться идентификатор этого файла с шаблоном (как правило, это поле типа «Файл»). Действие загружает этот файл и заменяет в нем вставки вида d_Название_поля на отображаемые значения соответствующих полей (без HTML-разметки). Все символы вставки d_Название_поля должны иметь единый стиль (нельзя сделать одну из букв с другим начертанием, цветом и пр). Очень важно, чтобы офисный редактор вставил строку d_Название_поля без прерывания тегами оформления, поэтому лучшим вариантом вставки такой строки будет ее непосредственный ввод с клавиатуры. Если вы не уверены, что строка получилась правильной, можно добавить к файлу DOCX расширение zip, распаковать его и проверить файл word/document.xml.

При экспорте в DOCX в новый файл необходимо настроить его содержимое при помощи шаблона, позволяющего вставлять поля. Этот вариант обеспечивает поддержку HTML-разметки.

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

Некоторые типы полей (такие как «Таблица документов», «Коллекция документов», «Хранилище» и пр) на текущий момент не поддерживаются действием.

CSV

Для экспорта в CSV необходимо определить следующие параметры:

  • Источник данных для экспорта. Данные могут быть получены из текущего документа или документа (документов) из заданного поля (во втором случае необходимо указать тип этих документов). Как правило, используется выгрузка из множества документов, записанных заранее в определенное поле при помощи действия «Выборка». Например, если необходимо выгрузить справочник контрагентов, то вначале следует запустить «Выборку», чтобы выбрать всех или отвечающих заданным критериями контрагентов с записью результатов в некое ссылочное поле, а затем выбрать это поле в данном параметре. В итоговом CSV-файле будет столько строк, сколько будет выбрано контрагентов).
  • Сопоставление. В таблице сопоставления определяются колонки CSV-файла. Каждая строка этой таблицы соответствует колонке CSV-файла. В таблице два столбца:
    • Заголовок. Для формирования CSV-файла с заголовками; можно не заполнять.
    • Значение, которое будет загружено из документов, определенных в «Источнике данных».

PDF

Для выгрузки в PDF необходимо настроить шаблон, в который можно вставлять поля, использовать HTML и CSS. Для работы экспорта в PDF на сервере должны быть установлен Wkhtmltopdf. Выгружается только текущий документ, а при запуске из журнала — выбранные в журнале документы.

Некоторые типы полей (такие как «Таблица документов», «Коллекция документов», «Хранилище» и пр) на текущий момент не поддерживаются действием.

XLSX

Выгрузка осуществляется в предварительно подготовленный XLSX-файл, который определяется в параметре «Файл с шаблоном». Это обычный файл, который может быть подготовлен в любом табличном редакторе, поддерживающем формат XLSX. Действие создаст копию этого файла и заполнит указанные ячейки соответствующими данными, которые определяются в параметре Сопоставление. Каждая строка таблицы сопоставления соответствует определенном номеру строки в файле XLSX (используется только первый лист книги). А для каждой строки можно определить значения для любой колонки, используя буквенные обозначения этих колонок. Например, можно подготовить XLSX-файл, в ячейку B3 которого необходимо будет ввести название поставщика. В таблице сопоставления необходимо будет добавить строку с номером 3, в нее добавить колонку с индексом B и определить для нее значение. Значение может быть загружено как из текущего документа (документа, в котором запускается действие), так и из документов, идентификаторы которых находятся в заданном поле. Во втором случае действие будет формировать не одну строку, а несколько (столько, сколько будет документов), при этом все последующие строки будут сдвинуты в сторону увеличения на количество добавленных строк. Например, на 5-й строке выводятся приобретенные согласно накладной товары (пусть будет 7 позиций). Для ввода этих товаров используется поле «Таблица документов», которая для каждой строки создаст отдельный документ. Если выбрать это поле в качестве источника данных, то действие добавит в итоговый XLSX 7 строк, начиная с пятой. При этом в форме действия может быть определена строка номер 6, в которой будет выведено значение общей суммы поступления. В настройках действия строка будет иметь номер 6, но в итоговом файле она станет 6+7=13-й.

Результат

На вкладке «Результат» определяется поле, в которое будет записан идентификатор итогового файла (при запуске действия из кнопки, поле можно не определять, - файл в этом случае будет выдан для загрузки в браузер пользователю, нажавшему на кнопку). Можно также задать название этого файла (по умолчанию используется export.расширение).

Электропочта

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

Действие имеет следующие настройки:

  • Электронная почта. Можно передать непосредственно адреса электронной почты (если несколько, то перечислять следует через запятую), на которые будет отправлено сообщение. Или передать структурные идентификаторы пользователей (проще говоря, документы типа «Структура») - система автоматически извлечет адреса электронной почты из соответствующих полей их учетных записей.
  • Тема письма. Шаблон для определения тему сообщения, позволяющий использовать значения полей. Параметр является локализуемым, то есть при наличии в системе нескольких языков, можно создать тему на каждом из этих языков.
  • Шаблон письма. Редактор позволяет форматировать текст и вставлять поля. Шаблон также является локализуемым.
  • Почтовые вложения (файлы). Можно передавать идентификаторы загруженных в систему файлов (это значения поля типа «Файл») или полный путь к файлам из файловой системы сервера. Во втором случаем, каталоги файловой системы должны быть в списке разрешенных (ключ AllowedCopyDirs в секции [File] конфигурационного файла doc-v.conf, который должен содержать полные пути к каталогам, перечисленные через запятую).

ЭЦП (NCALayer KZ)

Действие предназначено для формирования юридически-значимой электронно-цифровой подписи согласно действующего законодательства Республики Казахстан с использованием сертифицированного программного обеспечения NCALayer.

Для работы действия на пользовательском компьютере должен быть установлен NCALayer. Кроме того, в соответствии с требованиями законодателя сформированная подпись должна пройти обязательную проверку на сервере. Для этой цели на сервер необходимо установить библиотеки, входящие в состав комплекта разработчика НУЦ РК. Этот комплект можно получить бесплатно согласно инструкции. Порядок установки описывается ниже в разделе «Настройка сервиса проверки ЭЦП».

Настройки действия распределены по двум вкладкам: «Основные» и «Дополнительные».

На вкладке «Основные» находятся следующие настройки:

  • Режим.
    • Создание подписи в формате CMS (CADES) со встроенной временной меткой. Можно получить как подпись со встроенными данными в файле формата CMS (который можно проверить через сервис ezSigner), так и «чистую» подпись без данных в BASE64, которую можно записать в текстовое поле До́кви (текстовый редактор должен быть отключен). Подпись осуществляется через NCALayer, никакие ключи До́кви не нужны. Как правило, в режиме создания подписи действие размещается в кнопке. После нажатия на кнопку у пользователя открывается NCALayer, который и формирует подпись, которая потом загружается До́кви. Одновременно может подписываться только один документ.
      • Подпись со вложенными данными. Результатом работы действия может быть как подпись, включающая подписанные данные, так и без них. Если вы планируете в будущем проверять файлы через ezSigner или отправлять другим лицам, следует включать данные в подпись.
      • Подписываемые данные. Выберите поле, содержащее подписываемые данные. Это может быть как файл, так и любые иные данные. Например, поле «XML» с соответствующими данными.
      • Поле для записи подписи. Сформированная NCALayer подпись записывается действием в это поле. Если это поле будет файлового типа будет автоматически сформирован файл с расширением cms, который можно будет проверить через ezSigner (только при наличии вложенных данных).
      • Поле для записи проверки подписи. После получения подписи, действие запускает в фоновом режиме проверку полученной подписи. Результат проверки записывается в это поле. Для выбора доступны только поля типа «Текст» (рекомендуется включить редактор), т. к. результат проверки формируется в HTML-формате.
    • Проверка подписи. Запускается при необходимости проверки подписи. Вне зависимости от настроек действия, такая проверка выполняется сразу же после создания подписи. Данный режиме используется, если нужно проверить данные повторно или в систему загружена подпись в формате CMS, сформированная в сторонней системе.
      • Подпись со вложенными данными. Если в проверяемой подписи нет вложенных данных, необходимо будет указать их, чтобы действие могло выполнить проверку подписи.
      • Подписанные данные. Параметр появляется при проверке подписи без вложенных данных. Необходимо выбрать поле, которое будет содержать те данные, которые были подписаны в том же самом виде.
      • Проверяемая подпись. Поле, содержащее проверяемую подпись. Это может быть любое поле системы, например, файловое.
      • Поле для записи проверки подписи. Результат проверки записывается в это поле.

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

  • После формирования подписи.
  • После успешной проверки подписи.
  • После неудачной проверки. Если в процессе выполнения проверки возникнет ошибка, перемещение выполнено не будет
  • После отмены подписания. Например, пользователь нажмет на кнопку «Отмена» в окне NCALayer.

Настройка сервиса проверки ЭЦП

Для выполнения проверки ЭЦП необходимо дополнительно настроить сервер, установив CSP Kalkan:

  1. Получить комплект SDK разработчика НУЦ РК, т. к. CSP Kalkan не входит в состав дистрибутива До́кви.
  2. Распаковать полученный zip-файл SDK и перейти в него: cd SDK\ 2.0
  3. Установить сертификаты НУЦ, для чего распаковать файл с сертификатами: unzip C/Linux/ca-certs/production.zip установить право на запуск: chmod +x install_production.sh и запустить скрипт на установку: sudo ./install_production.sh
  4. Cкопировать необходимые файлы CSP Kalkan командами: sudo cp -f C/Linux/C/libkalkancryptwr-64.so* /usr/lib/
    sudo cp -rf C/Linux/libs_for_linux/kalkancrypt /opt/
  5. Настроить права доступа: sudo chmod -R 555 /opt/kalkancrypt

Теперь действие «ЭЦП (NCALayer KZ)» сможет проверять подписи. Результаты работы сервиса проверки логируются в файл log/checker.log.

ЭП (КриптоПро)

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

Для работы действия на пользовательском компьютере должен быть установлен КриптоПро CSP, а в браузере настроен плагин «КриптоПро ЭЦП Browser plug-in». Чтобы выполнить проверку подписи на сервере необходимо также установить КриптоПро CSP (проверка выполняется через утилиту cryptcp).

Настройки действия распределены по двум вкладкам: «Основные» и «Дополнительные».

На вкладке «Основные» находятся следующие настройки:

  • Режим.
    • Создание подписи. Подпись осуществляется через плагин браузера КриптоПро CSP, доступ к сертификатам До́кви не имеет. Как правило, в режиме создания подписи действие размещается в кнопке. После нажатия на кнопку у пользователя открывается диалоговое окно, в котором необходимо выбрать сертификат для подписи и нажать на кнопку «Подписать». Одновременно может подписываться только один документ.
      • Подпись со вложенными данными. Можно сформировать подпись со вложенными данными или только «чистую» подпись без данных.
      • Подписываемые данные. Выберите поле, содержащее подписываемые данные. Это может быть как файл, так и любые иные данные.
      • Поле для записи подписи. Сформированная электронная подпись записывается действием в это поле. Если это поле будет файлового типа будет предложен выбор расширения файла. По умолчанию, используется расширение p7s (бинарный формат), можно выбрать формат файла в кодировке Base64 dig (для подписи со вложенными данными) или sgn (без вложенных данных).
      • Поле для записи проверки подписи. После получения подписи от плагина браузера, действие может запустить в фоновом режиме проверку полученной подписи, если выбрать поле для записи результата проверки (выбрать можно только поле типа «Текст»; в поле будет записан краткий итоговый результат проверки, полный результат записывается в «Ход работы»).
      • Команда проверки подписи. Для выполнения проверки необходимо ввести полный путь к утилите cryptcp (по умолчанию, /opt/cprocsp/bin/amd64/cryptcp) и аргументы ее запуска (по умолчанию, -verify; действие автоматически добавит в качестве аргумента полный путь к проверяемому файлу). Проверка возможна только при формировании подписи со встроенными данными и ее записи в файловое поле.
    • Проверка подписи. Запускается при необходимости проверки подписанного файла. Настройки режима аналогичны описанным выше.

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

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

HTTP-запрос

Действие предназначено для выполнения HTTP-запросов к внешним веб-серверам. Действие, в первую очередь, будет полезно для работы со сторонними REST API, оно поддерживает различные методы передачи данных, позволяет передавать данные в формате JSON, загружать файлы или записывать ответ от веб-серверов в поля документов для дальнейшей обработки.

Настройки действия распределены по трем вкладкам (вкладка «Содержание» доступна для определенных HTTP-методов).

Вкладка «Запрос» содержит следующие настройки:

  • URL-адрес. По умолчанию, используется шаблон, в который можно ввести вручную адрес сервиса, добавив в него, при необходимости, значения полей (при включенной интеграцией с Telegram доступна переменная ТОКЕН TELEGRAM-БОТА; она может использоваться, например, для отправки сообщения в Telegram). Для отправки сообщения в Telegram действие HTTP-запрос необходимо настроить следующим образом:
    ○ URL https://api.telegram.org/bot{{ТОКЕН TELEGRAM-БОТА}}/sendMessage
    ○ Метод POST
    ○ Параметры запроса:
      ■ chat_id - поле Telegram ID из учетной записи адресата сообщения
      ■ text — само сообщение
    Дополнительную информацию по методам и параметрам см. Telegram Bot API).
    Вместо шаблона можно выбрать вариант загрузки адреса из поля. Можно передать несколько адресов в формате JSON (одномерный или двумерных JSON-массив; двумерный массив используется, например, для хранения значения полем «Таблица», таким образом, в данный параметр можно передавать значения табличного поля с одной колонкой, хранящей адреса запросов).
  • HTTP-заголовки. Сервисы REST API зачастую требует передачу определенных заголовков (например, ключи аутентификации могут передаваться как в URL, так и через заголовки). Данный параметр представляет собой таблицу из двух колонок: в левой определяется название заголовка, а во второй его значения (оно может быть загружено из поля; используются отображаемые значения полей).
  • HTTP-метод. Доступны методы GET, POST, PUT, PATCH, DELETE. Какой метод использовать определяется по документации используемого сервиса REST API. В зависимости от метода становятся доступными дополнительные настройки:
    • Для метода GET — переключатель для загрузки файла, который должен быть доступен по URL-адресу (если адресов будет несколько — будут загружены несколько файлов)
    • Для методов POST, PUT, PATCH — вкладка «Содержимое», позволяющая определить содержимое запроса.

На вкладке «Содержимое» определяется содержимое запросов POST, PUT, PATCH. Содержимое может быть типа JSON и в этом случае нужно будет выбрать поле, содержащее JSON (как правило, используется поле типа «JSON») или Составными данными. Для настройки составных данных используется таблица из двух колонок: в первой определяется значение параметра, а во второй его значение, которое может быть введено вручную или получено из полей с применением их методов.

Результат запроса записывается в поле, которое определяется на вкладке «Результат». Запись можно выполнять с использованием метода поля (например, для загрузки файлов по нескольким адресам уместно будет выбрать поле типа «Файл» с методом добавления файла).

Поля-переменные

Переменные — это такие поля, которые никак не настраиваются, и управляются До́кви самостоятельно. В действиях могут быть доступны следующие переменные:

  • АВТОР ДОКУМЕНТА (ССЫЛКА). Это поле типа «Ссылка» и оно имеет соответствующие методы чтения. Как и все нижеперечисленные поля-переменные, имеющие в своих названиях (ССЫЛКА)
  • ПОДРАЗДЕЛЕНИЕ ДОКУМЕНТА (ССЫЛКА). Штатное расписание организации может быть изменено и должная позиция, которую занимает автор документа, может быть перемещена в другое подразделение. Чтобы документ по-прежнему относился к предыдущему подразделению, в нем сохраняется подразделение, в котором находился его автора на момент создания документа. Данная переменная позволяет получить это подразделение.
  • ИМЯ АВТОРА ДОКУМЕНТА. Строка с именем автора документа (содержимое поля «Отображаемое имя» «Структуры»).
  • НАЗВАНИЕ ПОДРАЗДЕЛЕНИЯ, в котором был создан документ, и к которому всегда будет относиться (кроме случая, когда это подразделение будет удалено из «Структуры» и все, относившиеся к нему документы будут отнесены к новому подразделению).
  • ТЕКУЩИЙ ПОЛЬЗОВАТЕЛЬ (ССЫЛКА) — тот пользователь, который открыл документ.
  • АВТОР И ЕГО ПОДРАЗДЕЛЕНИЯ. Если документ создал Иванов из отдела технической поддержки (ОТП) департамента информационных технологий (ДИТ), то данная переменная будет содержать Иванова, ОТП, ДИТ и саму организацию.
  • УЧЕТНАЯ ЗАПИСЬ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ (ССЫЛКА). Документ типа «Учетная запись» того пользователя, который открыл документ.
  • ЛОГИН ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ.
  • ТЕКУЩЕЕ ВРЕМЯ.
  • ВРЕМЯ СОЗДАНИЯ ДОКУМЕНТА.
  • ТЕКУЩИЙ ДОКУМЕНТ (ССЫЛКА).
  • ИДЕНТИФИКАТОР НАЖАТОЙ КНОПКИ. Если обработка маршрута была запущена в результате нажатия какой-либо кнопки документа, данная переменная позволяет получить идентификатор этой кнопки.
  • ИДЕНТИФИКАТОР ИЗМЕНЕННОГО ПОЛЯ. В контексте изменения маршрута может понадобится необходимость работы с полем, вызывавшем запуск этого контекста.
  • ИДЕНТИФИКАТОР ТЕКУЩЕЙ ТОЧКИ МАРШРУТА, то есть той точки маршрута, на которой находится документ, а также действие, обращающееся к этой переменной.
  • НАЗВАНИЕ ТЕКУЩЕЙ ТОЧКИ МАРШРУТА.
  • ОПИСАНИЕ ТЕКУЩЕЙ ТОЧКИ МАРШРУТА.
  • ИДЕНТИФИКАТОР ПРЕДЫДУЩЕЙ ТОЧКИ МАРШРУТА. Переменная содержит значение только в том случае, если перемещение на данную точку произошло в рамках текущей сессии. То есть нажал пользователь на кнопку и документ с точки А переместился на точку Б; в действии на точке Б данная переменная будет содержать идентификатор точки А только в момент перехода, в будущем переменная будет пустой.
  • НАЗВАНИЕ ПРЕДЫДУЩЕЙ ТОЧКИ МАРШРУТА.
  • ИДЕНТИФИКАТОР ТЕКУЩЕГО ЖУРНАЛА. Переменная будет содержать идентификатор журнала, из которого открыт документ. Если документ открыт не через журнал или действие запущена не в качестве реакции на какое-либо действие пользователя (например, через действие «Таймер»), переменная будет пустой.
  • СТРУКТУРНЫЕ ИДЕНТИФИКАТОРЫ С ДОСТУПОМ К ДОКУМЕНТУ. Иначе говоря, сотрудники и подразделения, для которых был предоставлен доступ к документу (как через вкладку «Доступ» типа документа, так и через действие «Доступ»).
  • ГИПЕРССЫЛКА НА ТЕКУЩИЙ ДОКУМЕНТ. В качестве текста этой ссылки используется содержимое поля, выбранного в качестве заголовка.
  • ИДЕНТИФИКАТОР ТИПА ДОКУМЕНТА, того типа документа, в котором находится настраиваемое действие
  • ТОКЕН TELEGRAM-БОТА. В этой переменной находится содержимое настройки «Токен Telegram-бота». Может применяться действием «HTTP-запрос» для отправки сообщений.
  • IP-АДРЕС ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ