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

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

| Колонка | Що в ній |
|---|---|
| Ліворуч: список шаблонів | Кнопка «Новий шаблон», пошук «Пошук шаблону...» і список шаблонів, згрупований за сутністю. Клік перемикає на інший шаблон. |
| Центр: налаштування й редактор | Поля «Назва шаблону»*, «Сутність у системі», «Формат аркуша», «Орієнтація», нижче сам редактор. У режимі «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 символів. |