Каждый документ в Controlata печатается по шаблону. В каждом разделе уже есть стандартный шаблон, по нему печать работает сразу, настраивать ничего не нужно.
Свой шаблон нужен, когда документ должен выглядеть определенным образом: фирменный бланк с логотипом и реквизитами, свой набор колонок и итогов, форма, которую просит контрагент или бухгалтерия. Шаблонов в одном разделе может быть несколько.
Устроен шаблон просто: это файл Excel, в ячейках которого стоят переменные вида {{number}}. При печати Controlata подставляет в них данные операции и сохраняет все оформление файла: шрифты, заливку, границы, объединенные ячейки, изображения.
Шаблоны работают во всех разделах: материалы, продукты, поставки, производство, заказы, списания, ресурсы, перемещения, инвентаризации, поставщики и покупатели. Печатать можно в Excel или в PDF.
С чего начать
Собирать шаблон с нуля не нужно, возьмите за основу стандартный.
-
Откройте Настройки → Шаблоны печати.
-
Найдите нужный раздел и нажмите значок скачивания у Стандартного шаблона. Вы получите тот же файл, по которому печатает Controlata, со всеми переменными на местах.
-
Откройте файл в Excel и измените его под себя. Менять можно все: оформление, состав и порядок колонок, подписи, добавлять свои блоки и изображения. Например, поставить логотип компании.
-
Вернитесь в настройки, нажмите Добавить шаблон, выберите раздел, укажите название и приложите файл.
Шаблон появится в списке раздела и будет предлагаться в окне печати наряду со стандартным. Порядок в списке меняется перетаскиванием: тот шаблон, что стоит первым, выбран по умолчанию.
Управлять шаблонами может администратор компании. Поддерживаются файлы .xlsx и .xls.
Стандартный шаблон остается на месте всегда. По нему можно напечатать в любой момент или скачать его заново, если потребуется начать сначала.
Переменные
Переменная это имя поля в двойных фигурных скобках. При печати она заменяется значением, оформление ячейки при этом сохраняется:
Заказ № {{number}} от {{date_placed}}
У связанных объектов поля пишутся через точку:
{{customer.name}}
Какие переменные доступны, зависит от раздела. Полный перечень собран в отдельной статье Переменные в шаблонах печати.
Если в переменной ошибка или поля с таким именем в разделе нет, в ячейке напечатается #ОШИБКА с пояснением. Так опечатка видна сразу, а не по пустой колонке в готовом документе.
Права доступа
Шаблон один для всех сотрудников, но данные в нем зависят от прав. Если у сотрудника нет доступа к ценам или себестоимости, эти значения придут пустыми, а подписи и колонки останутся на месте. Структуру документа права не меняют.
Таблицы
Состав документа печатается таблицей. В шаблоне для нее нужны две строки.
Первая это строка-образец, переменные в ней начинаются с префикса таблицы:
{{item.number}} {{item.name}} {{item.sku}} {{item.quantity}} {{item.price}} {{item.total}}
Вторая стоит прямо под ней и задает, сколько строк печатать:
{{ repeatRow(15) }}
При печати строка-образец размножается по числу позиций, а строка с repeatRow в документ не попадает. Оформление образца повторяется на каждой строке: шрифты, заливка, границы, высота строки, объединенные ячейки. Если позиций нет вовсе, строка-образец удаляется.
Префикс у каждой таблицы свой, он указан в списке переменных. Таблиц в одном документе может быть несколько: у производства их три, это произведенные продукты, использованные материалы и ресурсы.
Функции
Внутри переменных доступны четыре функции.
| Функция | Описание |
|---|---|
| repeatRow(n) | Повторяет строку-образец по числу позиций, но не больше n раз. Пишется под образцом и в документ не попадает. По умолчанию n равно 1000, это же и предел. |
| removeRow() | Удаляет строку, в которой стоит. |
| removeColumn() | Удаляет колонку, в которой стоит. |
| length() | Вызывается у таблицы, например items.length(), и возвращает число строк, которые вышли на печать. У обычного поля возвращает длину значения в символах. |
Удаление строки, если поле не заполнено. Подпись и значение исчезнут вместе:
{{ customer.phone ? "Телефон" : removeRow() }}
{{ customer.phone ? customer.phone : removeRow() }}
Счетчик напечатанных строк:
Показаны {{ orders.length() }} из {{ orders_count }} заказов
Условия
Условие записывается тернарным оператором, как в Excel или в языках программирования:
{{ условие ? значение если да : значение если нет }}
Текст в условии пишется в двойных кавычках. Если кавычка нужна внутри текста, поставьте ее дважды: ""Ромашка"".
Что можно использовать в условии:
-
Проверка на заполненность.
{{ notes ? "Заметки" : "" }}напечатает слово «Заметки», если поле notes заполнено, и оставит ячейку пустой, если нет. -
Отрицание
!.{{ !notes ? "Заметок нет" : "" }}напечатает «Заметок нет», когда поле пустое. -
Сравнение
==и!=.{{ type == "materials" ? "Материалы" : "Продукты" }}напечатает «Материалы», если перемещаются материалы, и «Продукты» во всех остальных случаях. -
Сравнение чисел
>,<,>=,<=.{{ total > 10000 ? "Крупный заказ" : "" }}напечатает «Крупный заказ» для заказов дороже 10 000. -
Логические
&&и||.{{ phone && email ? "Контакты" : "" }}напечатает «Контакты», только если заполнены оба поля. С||достаточно одного из них. -
Склейка текста
&.{{ "Заказ № " & number }}напечатает «Заказ № 0103».
Оформление
Область печати
Область печати задает, что попадет на печать из Excel. В стандартном шаблоне она уже настроена и растягивается вниз сама, когда таблица позиций разрастается. Но если вы дописали свои блоки за ее прежними границами, она за ними не расширится.
Поэтому после правки шаблона проверьте область печати и при необходимости задайте ее заново: Разметка страницы → Область печати → Задать. Убедитесь, что в нее попали все ваши блоки.
На печать в PDF из Controlata область не влияет: PDF собирается из листа целиком, и область печати в этом не участвует. Она важна тогда, когда вы скачиваете документ в Excel и печатаете уже из него.
Границы таблиц
Разделители между строками задавайте нижней границей строки-образца: только она повторится под каждой позицией. Верхнюю границу при размножении строки Controlata не учитывает.
Номера, ИНН, телефоны
Если значение это идентификатор, а не число, задайте ячейке формат Текстовый. Иначе Excel посчитает его числом: у КПП «077201001» пропадет ведущий ноль, а значение прижмется к правому краю. Для сумм и количеств текстовый формат, наоборот, не нужен, тогда сработает ваш числовой или денежный формат.
Если что-то пошло не так
-
В ячейке напечаталось «#ОШИБКА: неизвестное поле». Такого поля в этом разделе нет. Обычно это опечатка. Сверьтесь со списком переменных.
-
В ячейке напечаталось «#ОШИБКА» с другим пояснением. Ошибка в самой записи: вместо сравнения
==написано одно=, не закрыта кавычка, опечатка в названии функции. -
Переменная напечаталась как есть, вместе со скобками. Скорее всего, скобки не парные или в имени поля лишний пробел.
-
Значение пустое. Поле есть, но не заполнено в самой операции, либо у сотрудника нет прав на него.
-
Строка-образец напечаталась один раз, с переменными вместо данных. Проверьте префикс таблицы, он должен совпадать с указанным в списке переменных.
-
Таблица обрывается. Сработало ограничение
repeatRow. Увеличьте число или уберите аргумент. -
Часть документа не печатается из Excel. Проверьте область печати, ваши блоки могли оказаться за ее границами.
Если шаблон никак не удается заставить работать, скачайте стандартный заново и перенесите в него свое оформление, так будет быстрее, чем искать поломку.