Шаблоны печатных документов — это текстовые файлы Microsoft Word, которые наряду с обычным текстом содержат вставки — теги с параметрами. |
---|
Для работы с шаблонами документов необходим Microsoft Office не ниже версии 2007 |
---|
Большинство печатных документов формируется на основе типовых шаблонов — например, счета, договоры, листы согласования, описи, протоколы совещаний и т.п.. Вы можете создать шаблон, по которому будет формироваться печатный документ на основе данных из конкретной задачи.
В шаблоне могут использоваться теги для основных и дополнительных параметров, доступных в данной категории.
Теги заключены в двойной знак решетки "##". В момент формирования текстового документа эти теги заменяются соответствующими значениями. Например, в файле-шаблоне может содержаться текст: "Документ № ##TaskId## от ##CreatedTask|DateFormat:dd.MM.yyyy##". В момент создания документа будет сформирован текст: "Документ № 111 от 10.10.2010".
В отличие от печатной формы, в шаблоне файла могут присутствовать сложные конструкции: условия (если... то... иначе...), циклы (для вывода подписей и пр.). Подробнее работа с шаблонами описана в справочнике.
Порядок создания шаблона
1. Нажмите на ссылку Сгенерировать шаблон.
Генерация шаблона файла
Будет сгенерирован файл, в котором будут присутствовать все основные и дополнительные параметры, которые доступны в категории и могут быть использованы в шаблоне (пример).
Пример автоматически сгенерированного шаблона для категории "Анкеты кандидатов"
2. Используйте этот файл как основу для создания нового, своего шаблона.
Пример шаблона анкеты
3. Если в шаблоне используется смарт-выражение и шаблонизатор mustache, вы можете предварительно проверить результат, который будет возвращать смарт-выражение. Для этого перейдите по ссылке Проверить смарт-выражение.
Открыть окно проверки смарт-выражения
В открывшемся окне выберите смарт-выражение для проверки (1), укажите номер задачи, из которой нужно взять данные для проверки (2) и нажмите кнопку Обновить. В поле (3) вы увидите результат, возвращаемый смарт-выражением.
Проверка смарт-выражения
4. После создания шаблона загрузите его в категорию: нажмите кнопку Выберите файл, выберите созданный шаблон и нажмите кнопку Загрузить. Шаблон будет добавлен в таблицу ниже.
Загрузка нового шаблона
Вы можете открыть загруженный шаблон для просмотра (кнопка рядом с названием файла), скачать шаблон (например, чтобы отредактировать и загрузить снова) или создать доп. форму для использования шаблона (кнопка Создать доп.форму).
5. В пользовательском интерфейсе по шаблону будет сгенерирован файл с данными вместо тегов (пример итогового документа).
Пример анкеты, сгенерированной по шаблону
Использование шаблонов в пользовательском интерфейсе
Через панель инструментов карточки задачи
Чтобы сгенерировать файл docx по шаблону нужно:
1.На панели инструментов задачи в подменю Документы выбрать Печать и экспорт.
2.В открывшемся окне нажать ссылку Сгенерировать по шаблону.
3.В открывшемся окне выбрать нужный шаблон.
С помощью доп. форм
Генерацию docx файла по шаблону можно вынести в блок дополнительных форм в карточке задачи. Пользователи увидят ссылку для генерации в блоке Доп. формы.
По клику на ссылку будет сгенерирован файл. В зависимости от настроек доп. формы, файл может быть вложен в задачу или в ДП или просто открыт для просмотра.
С помощью ДП "Файл" в качестве источника шаблона
Если есть необходимость позволить пользователям самостоятельно создавать или редактировать шаблоны, то в качестве источника шаблона можно использовать значение ДП типа "Файл".
Для этого надо добавить ДП типа "Файл" и настроить его, чтобы он принимал только файлы с расширением docx, и добавить в категорию доп. форму, которая будет использовать данный ДП.
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}## или ##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 UserName## |
##LOOP_ITEM SignatureStateDescr## |
##LOOP_ITEM SignDate|DateFormat:dd.MM.yyyy## |
Подзадачи и связанные задачи
Для вывода подзадач используется тег 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}} |
Циклический вывод номеров и текстов задач из списка, возвращаемого смарт-выражением |
{{smartXXXX}}{{^TaskID}}Нет номера задачи{{/TaskID}}{{#TaskID}}{{TaskID}}{{/TaskID}}{{/smartXXXX}} |
Условный вывод: номер задачи, если он есть, или сообщение "Нет номера задачи", если номера нет |
Стили |
|
{{#smartXXXX}} |
Значение выделено жирным шрифтом |
{{#smartXXXX}} |
Значение выделено курсивом |
{{#smartXXXX}} |
Значение подчеркнуто |
Полезные ссылки