Шаблоны файлов¶
ℹ️ Шаблоны печатных документов — это текстовые файлы Microsoft Word, которые наряду с обычным текстом содержат вставки — теги с параметрами
ℹ️ Для работы с шаблонами документов необходим Microsoft Office не ниже версии 2007
Большинство печатных документов формируется на основе типовых шаблонов — например, счета, договоры, листы согласования, описи, протоколы совещаний и т.п.. Вы можете создать шаблон, по которому будет формироваться печатный документ на основе данных из конкретной задачи.
В шаблоне могут использоваться теги для основных и дополнительных параметров, доступных в данной категории.
Теги заключены в двойной знак решетки "##". В момент формирования текстового документа эти теги заменяются соответствующими значениями. Например, в файле-шаблоне может содержаться текст: "Документ № ##TaskId## от ##CreatedTask|DateFormat:dd.MM.yyyy##". В момент создания документа будет сформирован текст: "Документ № 111 от 10.10.2010".
В шаблоне файла могут присутствовать сложные конструкции: условия (если... то... иначе...), циклы (для вывода подписей и пр.). Подробнее работа с шаблонами описана в справочнике.
Порядок создания шаблона¶
1. Нажмите на ссылку Сгенерировать шаблон.
Будет сгенерирован файл, в котором будут присутствовать все основные и дополнительные параметры, которые доступны в категории и могут быть использованы в шаблоне (пример).
2. Используйте этот файл как основу для создания нового, своего шаблона.
3. После создания шаблона загрузите его в категорию: нажмите кнопку Выберите файл, выберите созданный шаблон и нажмите кнопку Загрузить. Шаблон будет добавлен в таблицу ниже.
При загрузке файла с именем, совпадающим с существующим шаблоном, система не создает новую запись, а добавляет новую версию к уже имеющемуся файлу. Соответственно, идентификатор файла (fileid) остается неизменным при обновлении.
По ссылке Скачать вы можете скачать загруженный шаблон, чтобы отредактировать и загрузить снова.
4. В пользовательском интерфейсе по шаблону будет сгенерирован файл с данными вместо тегов (пример итогового документа).
Использование шаблонов¶
Через панель инструментов карточки задачи¶
Чтобы сгенерировать файл docx по шаблону, нужно на панели инструментов задачи в подменю Файлы выбрать пункт Печать и экспорт.
Нажатие на файл инициирует его скачивание на ваш персональный компьютер. Для администраторов доступна кнопка Закрыть окно и перейти в интерфейс управления шаблонами нажатие на нее откроет текущую страницу настроек.
Действия с ДП на переходе¶
При выполнении перехода в задаче можно сформировать текстовый файл по заранее подготовленному шаблону и вложить его в задачу или в ДП типа "Файл".
Подробнее о действиях с ДП на переходе
Автоматизация¶
По созданному шаблону можно создать файл в формате docx, txt, pdf, html, xml и вложить его в задачу или в ДП типа "Файл" автоматически с помощью смарт-действия Сгенерировать файл по шаблону.
Cинтаксис¶
Общий синтаксис тегов: ##Task\<ID задачи> \<Имя параметра задачи>##.
Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории. Например, тег ##TaskId## вернет номер задачи, ##Task## — текст задачи, ##StateDescr## — статус задачи, ##CreatedTask## — дату создания.
Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
Тегами для основных и дополнительных параметров задачи можно задавать стиль: шрифт, размер, цвет. Если значение параметра приводится к простой строке без форматирования (например, параметры с типом "Дата и время", имена пользователей и проч.), то эти настройки сохранятся при генерации отчета. Кроме того, значения таких параметров можно использовать в колонтитулах документов.
Если же значение параметра содержит разметку (например, текст задачи, в настройках категории, которой разрешен html, или значение дополнительного параметра типа "Текст с форматированием"), то сохранится форматирование самого параметра, а настройки стилей, примененные в шаблоне, могут быть проигнорированы.
Модификаторы параметров записываются после имени параметра через знак |. Например,запись ##ExtParamNN|DateFormat:{format}## позволяет выводить дату в нужном формате.
Дата и время¶
Параметры типа "Дата" и "Дата и время" можно выводить в нужном формате, применяя модификатор DateFormat.
Синтаксис: ##\<Параметр>|DateFormat:\<формат даты>##¶
Инструкцию по возможным значениям формата даты можно получить на сайте MSDN.
Чтобы вывести дату прописью, используйте модификатор DateInWords.
Синтаксис: ##\<Параметр>|DateInWords##¶
Кроме того, система принимает параметр NowTime, который вернет текущее время (время генерации файла по шаблону).
| Пример записи | Результат |
|---|---|
| ##CreatedTask|DateFormat:dd.MM.yyyy г., HH:mm## | 26.05.2017 г., 13:44 |
| ##CreatedTask|DateInWords## | шестнадцатое декабря две тысячи семнадцатого года |
| ##NowTime|DateFormat:dd.MM.yyyy## | 11.12.2017 |
Числа и деньги¶
Для форматирования ДП типа число и деньги используется модификатор NumberFormat со строкой форматирования, которая может включать в себя различные символы. Самый простой способ форматирования — использование символов N или n для чисел или символов C или c для денег, после которых можно указать число знаков после запятой (если не указано — выводится так, как это число хранится в БД).
| Пример записи | Результат вывода ДП типа "Число" со значением 99,9 |
|---|---|
| ##ExtParam123|NumberFormat:{0:N}## | 99,9 |
| ##ExtParam123|NumberFormat:{0:N1}## | 99,9 |
| ##ExtParam123|NumberFormat:{0:N3}## | 99,900 |
| ##ExtParam123|NumberFormat:{0:C}## | 99,9 ₽ |
| ##ExtParam123|NumberFormat:{0:C1}## | 99,9 ₽ |
| ##ExtParam123|NumberFormat:{0:C3}## | 99,900 ₽ |
Дополнение числа нулями и пробелами¶
Также для задания числового или денежного форматов можно использовать символы 0 или #. Если используется символ 0, то при отсутствии значения на данной позиции будет выведен 0, а если используется символ # — то при отсутствии значения не будет выведено ничего. Поскольку двойной знак решетки ## используется также для задания начала и конца строки форматирования, то чтобы различать эти варианты использования символа, одиночный # предваряется знаком \, вот так: \#.
| Пример записи | Результат вывода ДП типа "Число" со значением 99 |
|---|---|
| ##ExtParam123|NumberFormat:{0:000}## | 099 |
| ##ExtParam123|NumberFormat:{0:\#}## | 99 |
Вывод дробной части¶
Для отделения дробной части используется точка. После нее указывается то количество символов 0 или \#, сколько знаков после запятой должно выводиться. Символ, который будет выведен на печать в качестве разделителя дробной части, определяется системными настройками.
Синтаксис: ##Параметр|NumberFormat:{0:0.00}##¶
| Пример записи | Результат вывода ДП типа "Число" со значением 55,5 |
|---|---|
| ##ExtParam123|NumberFormat:{0:0.00}## | 55,50 |
Разделение на разряды¶
Для разделения большого числа на разряды (тысячи, миллионы и т.д.) используется запятая. Символ, который будет выведен на печать в качестве разделителя разрядов, также определяется системными настройками.
Синтаксис: ##Параметр|NumberFormat:{0:0,0}##¶
| Пример записи | Результат вывода ДП типа "Число" со значением 456789 |
|---|---|
| ##ExtParam123|NumberFormat:{0:0,0}## | 456 789 |
Перечисленные выше возможности форматирования можно использовать и вместе:
| Пример записи | Результат вывода ДП типа "Число" со значением 123456,78 |
|---|---|
| ##ExtParam123|NumberFormat:{0:0,0.00}## | 123 456,78 |
| ##ExtParam123|NumberFormat:{0:\#,0.\#\#}## | 123 456,78 |
| ### Деньги |
Параметры типа «Деньги» имеют дополнительный модификатор MoneyToString для вывода сумму прописью.
Синтаксис записи для вывода прописи на русском: ##\<Параметр>|MoneyToString:\<RUR/USD/EUR/Number>##.
Синтаксис записи для вывода прописи на английском: ##\<Параметр>|MoneyToString:\<RUR,ENG/USD,ENG/EUR,ENG/Number,ENG>##.
Модификатор MoneyToString:Number выведет сумму прописью без указания валюты.
| Пример записи | Результат вывода ДП типа "Деньги" со значением 30 000 руб. |
|---|---|
| ##ExtParam1516|MoneyToString:RUR## | Тридцать тысяч рублей 00 копеек |
Модификатор MULTIPLY автоматически умножает сумму на указанный множитель (удобно, например, для расчета НДС).
Синтаксис записи: ##\<Параметр>|MULTIPLY:\<число>##.
| Пример записи (расчет НДС 18%) | Результат вывода ДП типа "Деньги" со значением 30 000 руб. |
|---|---|
| ##ExtParam1516|MULTIPLY:0,18## | 5 400,00 |
Инструкцию по возможным значениям формата чисел можно получить на сайте MSDN.
Очистка HTML-форматирования больших текстов¶
В определенных случаях при выводе ДП типа "Большой текст с форматированием" надо игнорировать внутреннее HTML-форматирование текста. Для этого используется модификатор CLEAR_HTML. Он очищает всю разметку, а переносы строк (теги \<br>) заменяет на "\r\n".
Синтаксис: ##\<Параметр>|CLEAR_HTML##
Информация о пользователях¶
Для вывода информации из карточки пользователя используются теги вида:
##User\<ID> \<Параметр>##
либо
##\<Макрокод> \<Параметр>##
где \<ID> — ID пользователя, \<Параметр> — параметр, который необходимо вывести (все доступные параметры можно посмотреть, сгенерировав образец шаблона для конкретной категории).
\<Макрокод> — на текущий момент доступны два макрокода: RespUser соответствует ответственному исполнителю и OwnerUser -- заказчику задачи.
Примеры¶
##User1234 DisplayName##
##OwnerUser CellPhone##
Для вывода информации из ДП "Выбор пользователей" используйте циклический вывод абзацами или в таблицу.
ДП Lookup¶
Теги для дополнительных параметров типа Lookup имеют вид:
##Lookup1234##
где 1234 — это идентификатор ДП типа Lookup.
Вы можете вынести в шаблон любые параметры задач, на которые ссылается ДП типа Lookup в текущей задаче. Для этого необходимо модифицировать приведенный выше тег следующим образом:
##Lookup1234 \<Тег параметра задачи>##
где "Тег параметра задачи" -- это один из тегов, предназначенных для вывода основных или дополнительных параметров задачи или ее комментариев.
Для дополнительных параметров типа Lookup доступен любой тип вложенности ссылок, т.е. вы можете извлечь в документ параметр задачи, на которую ссылается ДП типа Lookup задачи, на которую ссылается ДП типа Lookup задачи и т.д. до бесконечности.
| Пример записи | Результат |
|---|---|
| ##Lookup1234 Task## | текст задачи, на которую ссылается ДП Lookup с ID=1234 в текущей задаче |
| ##Lookup1234 ExtParam56## | значение ДП с ID=56 из задачи, на которую ссылается ДП Lookup с ID=1234 в текущей задаче |
| ##Lookup123 Lookup456 Task## | вложенные ссылки: |
тег обращается к задаче, на которую ссылается ДП Lookup с ID=123 в текущей задаче; в ней отыскивает ДП Lookup с ID=456, обращается к задаче, на которую ссылается этот ДП, и извлекает ее текст
Комментарии¶
Для вывода комментариев в порядке от более ранних к более поздним используется тег ##Comments##.
Для вывода комментариев в порядке от более поздних к более ранним — тег ##Comments_reverse##.
Язык комментариев соответствует языку интерфейса пользователя (см. Мультиязычность и локализация).
Обращение к значениям параметров конкретных задач¶
Для извлечения значений основных или дополнительных параметров конкретных задач используется тег ##Task##.
Синтаксис: ##Task\<ID задачи> \<Имя параметра задачи>##.
Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории.
Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
| Пример записи | Результат |
|---|---|
| ##Task123456 CreatedTask## | дата создания задачи с номером 123456 |
| ##Task123456 ExtParam99## | значение ДП с ID=99 из задачи с номером 123456 |
Изображения¶
Для вставки в шаблон изображений используйте тег ##EpFile##.
Синтаксис: ##EpFile\<ID ДП файл с изображением>##.
Для тега можно использовать модификатор MAXSIZE с указанием размеров. В случае, если изображение будет превышать указанные размеры, при вставке в документ оно будет уменьшено до указанных размеров с сохранением пропорций.
Синтаксис: ##EpFile\<ID ДП файл с изображением>|MAXSIZE:\<width>,\<height>##.
| Пример записи | Результат |
|---|---|
| ##EpFile2222## | вставит в документ изображение из файла в ДП с ID=2222 |
| ##EpFile2222|MAXSIZE:640,480## | вставит в документ изображение из файла в ДП с ID=2222; если изображение будет больше чем 640*480px, то оно будет пропорционально уменьшено |
Штрих-коды и QR-коды¶
Для вставки в документ штрих-кодов и QR-кодов используется тег ##BAR##.
Синтаксис: ##\<Имя параметра> BAR_\<вид штрих-кода>##¶
где \<Имя параметра> -- наименование основного или дополнительного параметра, значение которого будет зашито в штрих- или QR-код,
\<вид штрих-кода> определяет, штрих-код вставляется или QR-код. Возможные значения этого параметра: qrcode и Code128a.
| Пример записи | Результат |
|---|---|
| ##ExtParam1234 BAR_Code128a## | сгенерирует штрих-код, соответствующий значению дополнительного параметра с ID=1234 |
| ##ExtParam1234 BAR_qrcode## | сгенерирует QR-код, соответствующий значению дополнительного параметра с ID=1234 |
Блоки «Используется»¶
Блоки «Используется» вставляются в генерируемый по шаблону документ как группа таблиц. Набор отображаемых в таблицах столбцов зависит от настроек блока в категории.
Эти теги имеют вид:
##TaskUsedAsEp123## — таблицы содержат только активные записи
##TaskUsedAsEp123_all## — таблицы содержат все записи, как при нажатии кнопки Все записи в блоке используется на главной форме задачи
где 123 -- это идентификатор блока "Используется". Значение идентификатора блока можно посмотреть в настройках категории.
Если выгрузка в шаблон таблицы задач из блока "Используется" не удовлетворяет потребностям, которые закрывает шаблон, то можно использовать циклический вывод текстовых фрагментов абзацами или в таблицу.
Подписи¶
Варианты выгрузки и параметры подписей¶
Чтобы вставить в документ, генерируемый по шаблону, список подписей задачи, нужно воспользоваться циклическим выводом абзацами или в таблицу.
В системе поддерживаются следующие варианты выгрузки подписей:
1. Полная история подписей: SIGNATURES_HISTORY.
Такой тип выгрузки поддерживает следующие параметры:
| Наименование | Тег | Тип выводимого значения | Пример |
|---|---|---|---|
| Псевдоним того пользователя, чья подпись запрошена | SignatureNick | Строка | СуперИван |
| Должность того пользователя, чья подпись запрошена | AcceptantOrgUnit | Строка | Руководитель отдела |
| Псевдоним пользователя, запрашивающего подпись | UserName | Строка | СуперПетр |
| Дата и время запроса подписи | InitializeDate | Дата и время | 16.05.2012 14:56:14 |
| Причина запроса подписи | Reason | Строка | Требуется ваша подпись |
| Причина отклонения или утверждения подписи | AcceptDeclineReason | Строка | Запрос отклонен |
| Статус подписи | SignatureStateDescr | Строка | Ожидает подписи |
| Название подписи | SignatureDescription | Строка | Генеральный директор |
| Дата и время подписания | SignDate | Дата и время | 17.11.2011 17:40:15 |
| Активность подписи | IsActive | Булево | True\False |
| ID подписи | SignatureID | Число | 123 |
| ID подписи, запрошенной в конкретной задаче (в специальной таблице в БД) | TaskSignatureID | Число | 4567 |
| Тип вынесенной резолюции | ResolutionType | Строка | Подписать с замечаниями |
2. Слепок всех подписей в текущих состояниях: SIGNATURES_FINAL.
Такой тип выгрузки поддерживает те же параметры, что и тип SIGNATURES_HISTORY.
3. Список активных запрошенных подписей: SIGNATURES_ACTIVEREQUESTS.
Такой тип выгрузки поддерживает следующие параметры:
| Наименование | Тег | Тип выводимого значения | Пример |
|---|---|---|---|
| Дата и время запроса подписи | InitializeDate | Дата и время | 13.05.2011 15:54 |
| Причина запроса подписи | Reason | Строка | Утвердите документ |
| Название подписи | SignatureDescription | Строка | Финансовый директор |
| Запрашивать причину подписи | RequestReasonOnAccept | Булево | True\False |
| Является ли выгружающий задачу по шаблону пользователь акцептантом | IsAcceptant | Булево | True\False |
| ID подписи, запрошенной в конкретной задаче (в специальной таблице в БД) | TaskSignatureID | Число | 1234 |
| Есть ли право удалять подпись | HasDeleteRight | Булево | True\False |
| ID подписи | SignatureID | Число | 123 |
| Срок, в течение которого необходимо принять или отклонить акцепт (дней) | MaxTimeToSign | Число | 3 |
4. Динамические подписи: SIGNATURES_DYNAMIC.
Такой тип выгрузки поддерживает следующие параметры:
| Наименование | Тег | Тип выводимого значения | Пример |
|---|---|---|---|
| ID подписи | SignatureID | Число | 123 |
| Название подписи | Description | Строка | Финансовый директор |
5. Подписи, необходимые для выполнения следующего шага: SIGNATURES_NEXTSTEP.
Такой тип выгрузки поддерживает следующие параметры:
| Наименование | Тег | Тип выводимого значения | Пример |
|---|---|---|---|
| Порядковый номер подписи | SignatureOrder | Число | 1 |
| Название подписи | Description | Строка | Финансовый директор |
6. Необязательные подписи: SIGNATURES_UNREQUIRED.
Такой тип выгрузки поддерживает следующие параметры:
| Наименование | Тег | Тип выводимого значения | Пример |
|---|---|---|---|
| ID подписи | SignatureID | Число | 123 |
| Запрашивать причину подписи | RequestReasonOnAccept | Булево | True\False |
| Название подписи | Description | Строка | Финансовый директор |
| ID пользователя, назначенного акцептантом по умолчанию. Если акцептант по умолчанию не назначен, то -1 | UserID | Число | 456 |
| Должность того пользователя, чья подпись запрошена | AcceptantOrgUnit | Строка | Руководитель отдела |
7. Акцептованные подписи: SIGNATURES_ACCEPTED.
Такой тип выгрузки поддерживает те же параметры, что и тип SIGNATURES_HISTORY.
Отдельная подпись¶
Для вставки в генерируемый документ информации об отдельно взятой подписи используется параметр задачи Sign, модифицируемый следующим образом:
##Sign\<ID подписи>_\<Параметр подписи>##
где \<ID подписи> -- числовой идентификатор нужной подписи,
\<Параметр подписи> -- название параметра, например SignatureDescription.
| Пример записи | Результат |
|---|---|
| ##Sign111_SignatureDescription## | Название подписи с ID=111, например: |
Финансовый директор
Циклический вывод¶
Циклический вывод используется для списков подписей, таблиц блока «Используется» и ДП типа «Выбор нескольких задач из категории».
Циклический вывод абзацами¶
Для вывода таблицы текстовыми абзацами используются открывающий и закрывающий теги ##STARTLOOP## и ##ENDLOOP##, и циклический тег ##LOOP##.
Каждая запись с тегом ##LOOP## будет заменяться на значение указанного в ней параметра задачи, ссылающейся на текущую.
Между тегами ##STARTLOOP## и ##ENDLOOP## можно использовать произвольный текст.
Для каждой задачи, удовлетворяющей заданному в цикле условию, в документе создается отдельный абзац.
ℹ️ Открывающий тег ##STARTLOOP## и закрывающий тег ##ENDLOOP## должны находиться в пределах одного абзаца (без разрывов строк)
ДП «Выбор пользователей»¶
Синтаксис:
##STARTLOOP\<ID цикла> ##USERS_EP\<ID параметра>## ##LOOP\<ID цикла>_ITEM \<Имя параметра>## ... ##ENDLOOP\<ID цикла>##
где \<ID цикла> -- числовой идентификатор цикла, уникальный в пределах шаблона,
\<ID параметра> -- ID ДП "Выбор пользователей",
\<Имя параметра> -- параметр, который необходимо вывести (все доступные параметры можно посмотреть, сгенерировав образец шаблона для конкретной категории).
Пример:
##STARTLOOP1 USERS_EP123## ##LOOP1_ITEM DisplayName## ##ENDLOOP1##
ДП «Адресаты Email»¶
Синтаксис:
##STARTLOOP\<ID цикла> ##ADDRESSES_EP\<ID параметра>## ##LOOP\<ID цикла>_ITEM \<Имя параметра>## ... ##ENDLOOP\<ID цикла>##
где \<ID цикла> -- числовой идентификатор цикла, уникальный в пределах шаблона,
\<ID параметра> -- ID ДП "Адресаты Email",
\<Имя параметра> — Email.
ДП «Выбор нескольких задач из категории»¶
Синтаксис:
##STARTLOOP\<ID цикла> TASKSELECT_EP\<ID параметра>## ##LOOP\<ID цикла>_ITEM \<Имя параметра>## ... ##ENDLOOP\<ID цикла>##
где \<ID цикла> -- числовой идентификатор цикла, уникальный в пределах шаблона,
\<ID параметра> -- ID ДП "Выбор нескольких задач из категории"
\<Имя параметра> -- тег, обозначающий один из основных или дополнительных параметров задачи. Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории. Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
Пример:
##STARTLOOP1 TASKSELECT_EP123## ##LOOP1_ITEM TaskText## ##ENDLOOP1##
Блок «Используется»¶
Синтаксис:
##STARTLOOP\<ID цикла> USED_EP\<ID ссылки>_SUBCAT\<ID категории>## ##LOOP\<ID цикла>_ITEM \<Имя параметра>## ... ##ENDLOOP\<ID цикла>##
где \<ID цикла> -- числовой идентификатор цикла, уникальный в пределах шаблона,
\<ID ссылки> -- ID дополнительного параметра типа Lookup, который ссылается на текущую задачу,
\<ID категории> -- ID категории, из которой берутся ссылающиеся задачи,
\<Имя параметра> -- тег, обозначающий один из основных или дополнительных параметров задачи. Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории. Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
Пример:
##STARTLOOP1 USED_EP99_SUBCAT36## ##LOOP1_ITEM ExtParam17## ##LOOP1_ITEM ExtParam18## ##LOOP1_ITEM ExtParam19## ##ENDLOOP1##
Подписи¶
Синтаксис:
##STARTLOOP\<ID цикла> \<Тип подписи>## ##LOOP\<ID цикла>_ITEM \<Имя параметра>## ... ##ENDLOOP\<ID цикла>##
где \<ID цикла> -- числовой идентификатор цикла, уникальный в пределах шаблона,
\<Тип подписи> -- вариант выгрузки подписей,
\<Имя параметра> -- тег, обозначающий один из параметров подписи.
Пример:
##STARTLOOP1 ## ##LOOP1_ITEM SignatureNick## ##LOOP1_ITEM SignatureStateDescr## ##LOOP1_ITEM ResolutionType## ##ENDLOOP1##
Подзадачи и связанные задачи
Для вывода подзадач используется тег SUBTASKS, для вывода связанных задач — тег LINKEDTASKS. Для обоих тегов доступно обращение ко всем основным и дополнительным параметрам задач.
Синтаксис:
##STARTLOOP\<ID цикла> SUBTASKS## ##LOOP\<ID цикла>_ITEM \<Имя параметра>## ... ##ENDLOOP\<ID цикла>##
##STARTLOOP\<ID цикла> LINKEDTASKS## ##LOOP\<ID цикла>_ITEM \<Имя параметра>## ... ##ENDLOOP\<ID цикла>##
где \<ID цикла> — числовой идентификатор цикла, уникальный в пределах шаблона,
\<Имя параметра> — основной или дополнительный параметр задачи. Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории. Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
Циклический вывод в таблицу¶
Для вывода массива значений в таблицу используется циклический тег ##LOOPROW##.
Для объекта, по которому строится циклический вывод, можно назначить псевдоном с помощью модификатора AS: ##LOOPROW USED_EP11_SUBCAT22 AS T1 ...##
Для вывода массива значений в таблицу с группировкой используется модификатор GROUP BY: ##LOOPROW GROUP BY \<атрибут>##.
Для условного вывода массива значений в таблицу используется модификатор WHERE: ##LOOPROW WHERE \<атрибут>=\<значение>##.
В качестве атрибута для группировки и условного вывода можно использовать любой параметр объекта, по которому строится циклический вывод. Например, для блока "Используется":
##LOOPROW USED_EP11_SUBCAT22 AS T1 WHERE T1.Task ='БИ 1' GROUP BY Task## ##LOOP_ITEM Task##
Порядок настройки¶
Для вывода значений в таблицу выполните следующие действия:
1. Создайте в шаблоне таблицу с одной строкой и необходимым количеством столбцов.
2. В первый столбец первой строки введите необходимым образом модифицированный тег ##LOOPROW##.
3. В каждый столбец таблицы добавьте теги ##LOOP_ITEM## для тех параметров, которые вы хотите отображать в этом столбце.
4. При генерации документа по шаблону строки будут наращиваться вниз в соответствии с количеством подписей или записей в таблице блока "Используется".
ДП «Выбор пользователей»¶
Синтаксис:
##LOOPROW USERS_EP\<ID параметра>## ##LOOP_ITEM \<Имя параметра>## ...
где \<ID параметра> -- ID ДП "Выбор пользователей",
\<Имя параметра> -- параметр, который необходимо вывести (все доступные параметры можно посмотреть, сгенерировав образец шаблона для конкретной категории).
Пример табличного вывода ДП "Выбор пользователей":
| Имя пользователя | |
|---|---|
| ##LOOPROW USERS_EP123## ##LOOP_ITEM DisplayName## ##LOOP_ITEM Email## |
ДП «Адресаты Email»¶
Синтаксис:
##LOOPROW ##ADDRESSES_EP\<ID параметра>## ##LOOP_ITEM \<Имя параметра>## ...
где \<ID параметра> -- ID ДП "Адресаты Email",
\<Имя параметра> — Email.
ДП «Выбор нескольких задач из категории»¶
Синтаксис:
##LOOPROW TASKSELECT_EP\<ID параметра>## ##LOOP_ITEM \<Имя параметра>## ...
где \<ID параметра> -- ID дополнительного параметра типа "Выбор нескольких задач из категории",
\<Имя параметра> -- тег, обозначающий один из основных или дополнительных параметров задачи. Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории. Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
Пример табличного вывода ДП "Выбор нескольких задач из категории":
| Номер задачи | Текст задачи | Поле |
|---|---|---|
| ##LOOPROW TASKSELECT_EP123## ##LOOP_ITEM TaskID## ##LOOP_ITEM Task## ##LOOP_ITEM ExtParam1## |
Блок «Используется»¶
Если блок «Используется» берет данные из таблицы, то используется синтаксис:
##LOOPROW USED_EP\<ID ссылки>_SUBCAT\<ID категории>## ##LOOP_ITEM \<Имя параметра>## ...
где \<ID ссылки> — ID дополнительного параметра типа "Lookup-поле", который ссылается на текущую задачу,
\<ID категории> — ID категории, из которой берутся ссылающиеся задачи,
\<Имя параметра> — тег, обозначающий один из основных или дополнительных параметров задачи. Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории. Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
Если блок "Используется" берет данные из смарт-фильтра, то используется синтаксис:
##LOOPROW TASKSELECT_SMARTFILTERID_\<id_smart_filter>##
где \<id_smart_filter> — идентификатор смарт-фильтра.
Если блок "Используется" берет данные из SQL View, то используется синтаксис:
##LOOPROW TASKSELECT_SQL_\<имя_SQL_view>##
где \<имя_SQL_view> — имя сохраненной SQL View.
Подписи
Синтаксис:
##LOOPROW \<Тип подписи>## ##LOOP_ITEM \<Имя параметра>## ...
где \<Тип подписи> -- один из вариантов выгрузки,
\<Имя параметра> -- тег, обозначающий один из параметров подписи.
Пример табличного вывода списка запрошенных подписей:
| Название подписи | Подпись запрошена (у кого, кем) | Статус подписи | Дата подписания | | --- | --- | --- | --- | --- | | ##LOOPROW SIGNATURES_FINAL## ##LOOP_ITEM SignatureDescription## | ##LOOP_ITEM SignatureNick## | ##LOOP_ITEM SignatureStateDescr## | ##LOOP_ITEM SignDate|DateFormat:dd.MM.yyyy## | ##LOOP_ITEM UserName## |
##LOOP_ITEM UserName## |
Подзадачи и связанные задачи¶
Для вывода подзадач используется тег SUBTASKS, для вывода связанных задач — тег LINKEDTASKS. Для обоих тегов доступно обращение ко всем основным и дополнительным параметрам задач.
Синтаксис:
##LOOPROW SUBTASKS## ##LOOP_ITEM Task## ...
##LOOPROW LINKEDTASKS## ##LOOP_ITEM \<Имя параметра>## ...
где \<Имя параметра> — основной или дополнительный параметр задачи. Основные параметры можно посмотреть, сгенерировав шаблон для конкретной категории. Дополнительные параметры вставляются в виде тегов вида ##ExtParam1234##, где 1234 обозначает уникальный идентификатор ДП.
Индексация записей при циклическом выводе¶
В строках или абзацах, повторяемых в цикле, можно выводить порядковый номер текущего элемента (начиная с 1) при помощи тега ##LOOP_ITEM COUNTER##.
Пример¶
##STARTLOOP1 TABLE_EP1234## ##LOOP1_ITEM COUNTER## ##LOOP1_ITEM COLUMN567## ##ENDLOOP1##
Сортировка записей при циклическом выводе¶
Сортировка записей по одному из полей может производиться с помощью тегов LOOPROW и STARTLOOP. Порядок сортировки указывается после имени объекта в цикле.
Вывод абзацами, тег STARTLOOP¶
Синтаксис:
##STARTLOOP\<ID цикла> \<Тег объекта>|\<Поле для сортировки>:\<Порядок сортировки>## ##LOOP\<ID цикла>_ITEM## ... ##ENDLOOP\<ID цикла>##
где \<Тег объекта> — один из допустимых для циклического перебора тегов (TABLE_EP, USERS_EP, SIGNATURES_FINAL и пр.);
\<Поле для сортировки> — одно из полей, доступных в объекте для вывода;
\<Порядок сортировки> — одно из двух значений: ASC -- сортировка по возрастанию, DESC -- сортировка по убыванию.
Пример печати абзацами¶
Печать списка пользователей из ДП с ID=2472, отсортированного по отображаемому имени пользователя в убывающем порядке.
##STARTLOOP3 USERS_EP2472|DisplayName:DESC## ##LOOP3_ITEM DisplayName## \ ##LOOP3_ITEM Email## \ ##LOOP3_ITEM Gender## ##ENDLOOP3##
Вывод в таблицу, тег LOOPROW¶
Синтаксис:
##LOOPROW \<Тег объекта>|\<Поле для сортировки>:\<Порядок сортировки>## ##LOOP_ITEM## ...
где \<Тег объекта> — один из допустимых для циклического перебора тегов (TABLE_EP, USERS_EP, SIGNATURES_FINAL и пр.);
\<Поле для сортировки> — одно из полей, доступных в объекте для вывода;
\<Порядок сортировки> — одно из двух значений: ASC -- сортировка по возрастанию, DESC -- сортировка по убыванию.
Пример печати таблицы¶
Печать списка подписей в задаче, отсортированного по причине запроса в возрастающем порядке.
| Кто запросил подпись | У кого запрошена подпись | Причина запроса подписи |
|---|---|---|
| ##LOOPROW SIGNATURES_FINAL|Reason:ASC## ##LOOP_ITEM UserName## | ##LOOP_ITEM SignatureNick## | ##LOOP_ITEM Reason## |
| ## Циклический вывод ДП «Таблица» |
Для вывода ДП «Таблица» используется тег TABLE_EP11, где 11 — это ID ДП "Таблица".
Для обращения к значениям колонок используется тег COLUMN22, где 22 — идентификатор колонки ДП "Таблица" (список идентификаторов доступен в настройках ДП).
Таблицам можно назначать псевдонимы с помощью модификатора AS. Тогда к колонкам таблицы можно обращаться, используя этот псевдоним: ##LOOPROW TABLE_EP99 AS T...##.
[Пример вывода ДП "Таблица"](../../
#LOOPROW TABLE_EP99## ##LOOP_ITEM COLUMN11##¶
##LOOP_ITEM COLUMN12##
##LOOP_ITEM COLUMN13##
Группировка¶
При выводе таблицы можно группировать строки по значению какого-то столбца с помощью модификатора GROUP BY: ##LOOPROW TABLE_EP1 GROUP BY COLUMN123## , где 1 — это ID ДП "Таблица", а 123 — это ID столбца группировки.
ℹ️ При выводе с группировкой фактически выполняются два цикла — внешний цикл по группирующим колонкам и внутренний цикл по всем строкам таблицы. Поэтому обращение к группирующим колонкам для внешнего цикла идет без названия таблицы (в примере ниже выделено красным цветом), для внутреннего цикла — с названием таблицы "через точку" (выделено синим цветом).
Пример вывода таблицы с группировкой:
##LOOPROW TABLE_EP99 GROUP BY COLUMN12## ##LOOP_ITEM TABLE_EP99.COLUMN13##
##LOOP_ITEM TABLE_EP99.COLUMN14##
##LOOP_ITEM TABLE_EP99.COLUMN15##
Условный вывод внутри цикла¶
При выводе таблицы можно отбирать строки по значению какого-то столбца с помощью модификатора WHERE: ##LOOPROW TABLE_EP99 WHERE COLUMN123="значение"## , где 99 — это ID ДП "Таблица", а 123 — это ID столбца.
[Пример вывода таблицы с условием внутри цикла](../../
#LOOPROW TABLE_EP99## ##LOOP_ITEM TABLE_EP99.COLUMN11##¶
##LOOP_ITEM TABLE_EP99.COLUMN12 WHERE TABLE_EP99.COLUMN13="да"##
##LOOP_ITEM TABLE_EP99.COLUMN14##
Вложенные циклы по двум таблицам¶
Если в категории используются два ДП «Таблица» или нужен сложный вывод по одной таблице, можно использовать вложенные циклы.
Пример вывода двух таблиц с вложенным циклом:
##LOOPROW TABLE_EP99 GROUP BY COLUMN12## ##LOOP_ITEM TABLE_EP99.COLUMN12##
##LOOP_ITEM TABLE_EP88.COLUMN13 WHERE TABLE_EP88.COLUMN13=TABLE_EP99.COLUMN14##
##LOOP_ITEM TABLE_EP88.COLUMN15##
Колонки Lookup¶
Для вывода колонки типа Lookup используется тег ##LookupCOLUMN123 \<Тег параметра задачи>##
Например:
##LookupCOLUMN123 ExtParam456##
##LookupCOLUMN123 EpFile789##
где 123 -- идентификатор lookup-колонки, 456 — идентификатор нужного ДП в категории, на которую ссылается lookup, а 789 — идентификатор ДП "Файл" в категории, на которую ссылается lookup.
Также возможно обращение к основным параметрам задачи, на которую ссылается lookup-колонка, в соответствии с общим синтаксисом (например, ##LookupCOLUMN123 TaskId## или ##LookupCOLUMN123 Task##).
Пример вывода в таблицу:
Колонка 67 содержит Lookup и выводит текст задачи, на которую он ссылается ##LOOPROW TABLE_EP1## ##LOOP_ITEM LookupCOLUMN67 Task##
Колонки с изображениями¶
Для вывода колонок с изображениями используется модификатор Image: ##LOOP_ITEM COLUMN123|Image##
Если необходимо ограничить максимальные размеры изображения, их можно перечислить через двоеточие после модификатора Image, через запятую (аналогично модификатору MAXSIZE).
Пример вывода в таблицу:
Колонка 67 содержит Lookup и выводит превью файла из ДП с ID=45 в задаче, на которую он ссылается ##LOOPROW TABLE_EP1## ##LOOP_ITEM LookupCOLUMN67 EpFile45|MAXSIZE:150,150##
Вывод таблицы в виде абзацев¶
Синтаксис: ##STARTLOOP TABLE_EP11## ##LOOP_ITEM COLUMN22## ##ENDLOOP##
Пример вывода строк таблицы в виде абзацев:
В ДП Таблица с ID=1 колонка 23 содержит текст, колонка 45 содержит файл с изображением, колонка 67 содержит Lookup и выводит текст задачи, на которую он ссылается: | ##STARTLOOP TABLE_EP1## ##LOOP_ITEM COLUMN23## ##LOOP_ITEM COLUMN45|Image:400,200## ##LOOP_ITEM LookupCOLUMN67 Task## ##ENDLOOP## |
Условный вывод¶
Чтобы настроить вывод поля в зависимости от выполнения определённых условий, используется модификатор IF.
Синтаксис: ##\<Поле>|IF=\<выражение>##
Если значение выражения равно значению поля, то абзац выводится, в противном случае весь абзац игнорируется.
| Пример записи | Результат |
|---|---|
| ##ExtParam1234|IF=Иванов## Директор | Если в данной задаче в ДП с ID=1234 записано значение "Иванов", то будет выведена строка |
Должность: Директор иначе не будет выведено ничего
Смарт-выражения и смарт-скрипты¶
В шаблоне можно использовать результаты, возвращаемые смарт-выражениями и смарт-скриптами. В смарт-выражение и смарт-скрипт передаются контекст текущей задачи и контекст текущего пользователя. Возвращаемый результат должен быть строкой.
Синтаксис:
##SMART\<smartexpressionid>##
##SMARTSCRIPT\<smartscriptid>##
Пример записи Результат ##SMART1234## Строка, возвращаемая смарт-выражением с ID=1234 ##SMARTSCRIPT9876## Строка, возвращаемая смарт-скриптом с ID=9876
ID смарт-выражения можно посмотреть в категории на вкладке SMART или в разделе Общие SMART.
ID смарт-скрипта можно посмотреть в адресной строке при редактировании этого смарт-скрипта.
Поддержка mustache¶
В шаблоне печатных документов можно использовать элементы шаблонизатора mustache и с его помощью выводить параметры задач или результаты смарт-выражений.
Ниже приведены примеры использования элементов mustache, где XXXX — ID смарт-выражения. ID смарт-выражения можно посмотреть в категории на вкладке SMART или в разделе Общие SMART.
Пример записи
Результат
{{smartXXXX}}
Скалярное значение, возвращаемое смарт-выражением
{{FormatDateTime smartXXXX format="dd MM yyyy"}}
Дата, возвращаемая смарт-выражением, в формате 30.12.2020
{{#smartXXXX}}\ {{TaskID}}: {{Description}}\ {{/smartXXXX}}
Циклический вывод номеров и текстов задач из списка, возвращаемого смарт-выражением
{{smartXXXX}}{{\^TaskID}}Нет номера задачи{{/TaskID}}{{#TaskID}}{{TaskID}}{{/TaskID}}{{/smartXXXX}}
Условный вывод: номер задачи, если он есть, или сообщение "Нет номера задачи", если номера нет
Стили
{{#smartXXXX}}\ {{Style="Bold" CreatedTime}}\ {{/smartXXXX}}
Значение выделено жирным шрифтом
{{#smartXXXX}}\ {{Style="Italic" CreatedTime}}\ {{/smartXXXX}}
Значение выделено курсивом
{{#smartXXXX}}\ {{Style="Underlined" CreatedTime}}\ {{/smartXXXX}}
Значение подчеркнуто
Описание настроек шаблонов файлов в прежнем интерфейсе администрирования