Документи 9 хв читання

Шаблони документів

Конструктор шаблонів друку: змінні, цикли, фільтри форматування, сума прописом і формування PDF.

Що це і навіщо

Шаблон документа працює як «бланк» з місцями для даних. Ви один раз оформлюєте вигляд рахунку, видаткової накладної, договору чи акта, а система щоразу підставляє в нього реальні дані з картки (клієнта, суми, позиції, дати) і перетворює на PDF. Так виходить друкований рахунок із вашим логотипом, реквізитами й потрібним текстом за одну кнопку «Друк».

Шаблони створюються окремо для кожного виду запису: замовлення, рахунок, документ, угода, закупівля, надходження, відвантаження, переміщення, списання, повернення, інвентаризація (у вікні створення є ще «Витрата»).

Де знайти

  • Список шаблонів: Налаштування → Шаблони документів, адреса /settings/document-template.
  • Конструктор (редактор): /document-template-constructor/номер, відкривається кліком по шаблону в списку.
  • Використання: кнопка «Друк» у картках замовлення, рахунку, документа та інших записів; у меню «Дії» пункт «Зберегти PDF у файли».

У списку є колонка «Назва» і кнопка «Додати шаблон». У системі вже є стартові шаблони: «Видаткова накладна», «Замовлення», «Договір / Акт», «Комерційна пропозиція», «Рахунок-фактура». Їх можна відкрити й змінити під себе. Правою кнопкою миші на рядку шаблону є меню з пунктом «Видалити».

Створення шаблону

Кнопка «Додати шаблон» відкриває вікно «Створити шаблон»:

Список шаблонів документів
Список шаблонів документів
ПолеОбов'язкове?Що це
НазваТак (до 30 символів)Так шаблон називатиметься в меню «Друк». Наприклад: «Рахунок з ПДВ».
СутністьТакДля якого запису шаблон: Замовлення, Рахунок, Документ, Угода, Витрата, Закупівля, Надходження, Відвантаження, Переміщення, Списання, Повернення, Інвентаризація. Від цього залежить набір змінних і те, у яких картках шаблон з'явиться в «Друк».
Орієнтація листаТакКнижкова чи альбомна (у цьому вікні варіанти підписані «Книжний» і «Портретний», хоча другий означає саме альбомну орієнтацію; у конструкторі вони підписані точно: «Книжкова (Portrait)» і «Альбомна (Landscape)»).
Формат листаТакA4, A5, A6, A7, A8, A9. Менші формати підходять для чеків і етикеток.
ТипТак«HTML Редактор»: ви пишете код (HTML і CSS) з повним контролем над виглядом. «Текстовий редактор»: візуальний редактор, як у Word, де ви форматуєте текст мишею, а змінні вставляєте кліком. Після створення тип змінити не можна.

Після «Зберегти» відкривається конструктор.

Конструктор шаблонів

Екран із трьох колонок і рядка дій зверху. У рядку: «Довідник» (підручник із мови шаблонів), «Попередній перегляд» та «Зберегти шаблон» (активна лише коли є зміни).

Конструктор шаблону: HTML-код і панель змінних
Конструктор шаблону: HTML-код і панель змінних
КолонкаЩо в ній
Ліворуч: список шаблонівКнопка «Новий шаблон», пошук «Пошук шаблону...» і список шаблонів, згрупований за сутністю. Клік перемикає на інший шаблон.
Центр: налаштування й редакторПоля «Назва шаблону»*, «Сутність у системі», «Формат аркуша», «Орієнтація», нижче сам редактор. У режимі «HTML Редактор» це код (з підказками автодоповнення) і підказка внизу про умови й цикли; у «Текстовому» візуальний редактор.
Праворуч: «Змінні (Variables)»Поле пошуку «Пошук змінної...» і розгортні групи змінних. Клікніть на змінну, і вона вставиться в позицію курсора. Дивіться також розділ нижче.

Зверніть увагу: зміна поля «Сутність у системі» змінює набір змінних праворуч, але не перебудовує вже написаний текст, тож переконайтеся, що в тілі шаблону використано змінні саме цієї сутності.

«Попередній перегляд»

Створює PDF за шаблоном на основі запису з номером 1 вибраної сутності (наприклад, замовлення №1) і відкриває його в новій вкладці. Якщо запису з таким номером немає, перегляд не відкриється; тоді перевірте шаблон, надрукувавши його з реальної картки. Не забувайте спершу зберегти шаблон: перегляд береться зі збереженої версії.

Як влаштована мова шаблонів

Змінні пишуться у подвійних фігурних дужках: {{ model.Name }}. Логіка пишеться в дужках із відсотками: {% if … %}, {% for … %}. Синтаксис схожий на Django та Jinja2 (у довіднику він називається Pongo2). Скористайтесь кнопкою «Довідник», де є розділи: основи, фільтри форматування, калькулятор, умови, цикли, товари й послуги, додаткові поля та приклад повного шаблону.

Головний об'єкт: model

Усі поля самого запису (замовлення, рахунку, документа тощо) доступні як model.Поле: {{ model.Name }}, {{ model.Number }}, {{ model.Cost|divide100 }}. Пов'язані записи доступні через крапку: {{ model.Account.Name }} (контрагент), {{ model.Contact.Phone }}, {{ model.Provider.Name }} (ваша компанія), {{ model.Currency.Symbol }}, {{ model.Owner.Name }}. Права колонка показує потрібні змінні готовими до вставки, тому вручну їх писати не доведеться.

Позиції: products, goods, services

Для документів із позиціями є три списки: products (усе), goods (лише товари), services (лише послуги). Їх перебирають циклом. Права колонка має готовий «Блок циклу (For loop)». Клік по ньому вставляє шаблон рядка таблиці:

{% for item in products %}
<tr>
  <td>{{ forloop.Counter }}</td>
  <td>{{ item.Name }}</td>
  <td>{{ item.Quantity|divide1000 }}</td>
  <td>{{ item.Price|divide100 }}</td>
  <td>{{ item.Total|divide100 }}</td>
</tr>
{% endfor %}

Поля позиції: item.Name, item.Quantity, item.Price, item.Discount, item.DiscountAmount, item.Total, item.Description, а також дані товару: item.Product.Sku, item.Product.Unit.Name (одиниця виміру), item.Product.Category.Name та інші.

Фільтри: цифри, дати, суми прописом

Що потрібноЯк писатиПояснення
Гроші{{ model.Cost|divide100 }}Суми в системі зберігаються в копійках, тому їх ділять на 100.
Кількість{{ item.Quantity|divide1000 }}Кількості зберігаються з точністю до тисячних (1 шт = 1000).
Дата{{ model.Date|datefmt:"02.01.2006" }}Формат задається зразком: 02 означає день, 01 місяць, 2006 рік, 15 години, 04 хвилини.
Сума з роздільниками{{ x|number_format }}, |number_format:0Наприклад, 1 500 000,00.
Округлення|round:2
Арифметика|multiply:1.2, |subtract:500, |abs, |percentageТакож можна створювати змінні: {% set total = model.Cost * 120 / 100 %}.
Сума прописом{{ x|divide100|num2words }}Українською; для 1500,50 виведе «одна тисяча п'ятсот грн 50 коп».
Сьогодні{{ today|datefmt:"02.01.2006" }}Поточна дата й час друку.
Назва шаблону{{ title }}
Додаткове поле{{ f_5 }}Значення додаткового поля з номером 5 (номер видно в налаштуваннях додаткових полів, див. додаткові поля). Для списків виводиться текст варіанта, а не його код.

Умови

{% if model.Contact %}Контакт: {{ model.Contact.Name }}{% else %}Контакт не вказано{% endif %}
{% if model.Status == "signed" %}Підписано{% endif %}
{% if model.Cost > 0 %}Вартість: {{ model.Cost|divide100 }}{% endif %}

Друк і збереження PDF

  • У картці запису (наприклад, замовлення) натисніть «Друк» і виберіть шаблон зі списку; PDF відкриється в новій вкладці, звідки його можна надрукувати чи завантажити. У списку показуються лише шаблони цієї сутності. Якщо шаблонів немає, пункт «Новий шаблон» веде до налаштувань.
  • «Дії» → «Зберегти PDF у файли» зберігає готовий PDF у вкладку «Файли» картки (повідомлення «PDF збережено у файли»). Пункт видно, лише якщо є хоча б один шаблон для цієї сутності.
  • У списках рахунків є «Друк» у контекстному меню; у POS-терміналі є друк рахунку після продажу.
  • Документ із підписантами: коли його відправляють на підписання, PDF за вибраним шаблоном формується автоматично, і саме цей файл підписують (див. Документи).

Назва файлу PDF складається з назви шаблону й поточна дата, наприклад «Рахунок-фактура 24.09.2026.pdf».

Що відбувається в обліку

Друк і збереження PDF нічого не змінюють ані в складі, ані у фінансах, бо лише зчитують дані з картки. Змінюються тільки файли запису (якщо ви обрали «Зберегти PDF у файли» чи відправили документ на підписання).

Права доступу

  • Створювати, змінювати й видаляти шаблони можна за правом на «Шаблони документів» (у налаштуваннях ролі; див. Ролі та права). Розділ у налаштуваннях доступний тим, у кого відкриті налаштування.
  • Друкувати й зберігати PDF може той, хто має право переглядати сам запис (замовлення, рахунок тощо): друк є вивантаженням вмісту картки.

Типові помилки і питання

ПроблемаЩо робити
PDF не відкривається (або з'являється повідомлення про помилку шаблону)У коді шаблону синтаксична помилка (незакрита дужка, {% if %} без {% endif %}, невідома змінна чи фільтр). Виправте помилку (якщо є текст повідомлення, орієнтуйтеся на нього) і звіртеся з «Довідником».
Порожні місця замість данихПов'язаного запису немає в картці (наприклад, не вказано контакт) або змінну вписано для іншої сутності. Огорніть блок умовою {% if model.Contact %}…{% endif %}.
Суми виводяться величезними числами (наприклад, 5110000)Ви забули фільтр |divide100: гроші в системі зберігаються в копійках.
«Попередній перегляд» не відкриваєтьсяНемає запису №1 вибраної сутності або є помилка в шаблоні; надрукуйте з реальної картки.
Шаблон не з'являється в меню «Друк»Перевірте, що його «Сутність» збігається з типом картки (шаблон «Рахунок» не показується в замовленні).
Вигляд PDF відрізняється від того, що ви бачите в редакторіPDF будується окремим рушієм (на основі старішого браузерного рушія), тому складні сучасні CSS-макети можуть відображатися інакше. Користуйтеся таблицями й простими стилями та перевіряйте результат друком.
Чому не можна змінити тип шаблону (HTML/Текстовий)?Тип фіксується при створенні. Створіть новий шаблон потрібного типу й перенесіть вміст.
Завелика назваНазва шаблону може мати не більше 30 символів.

Дивіться також

Як це працює у вашій галузі

До розділу «Документи»