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

Оскільки поточна система підтримує друк лише окремих записів, ми натиснемо «Друк» на сторінці «Деталі договору», і система автоматично отримає відповідний запис колекції contracts, а також пов'язані parties та іншу інформацію, і заповнить їх у документах Word або PDF.
Зверніть увагу, що наш плагін «Друк за шаблоном» є комерційним і потребує придбання та активації перед виконанням операцій друку.

Перевірка активації плагіна:
На будь-якій сторінці створіть блок деталей (наприклад, для users) і перевірте, чи є відповідна опція конфігурації шаблону в налаштуваннях дії:


Створіть основну колекцію сутностей, колекцію договорів та колекцію товарних позицій, розроблені вище (виберіть лише основні поля).
| Категорія поля | Назва поля для відображення | Назва поля | Інтерфейс поля |
|---|---|---|---|
| Поля первинного та зовнішнього ключів | |||
| ID | id | Integer | |
| ID покупця | buyer_id | Integer | |
| ID продавця | seller_id | Integer | |
| Поля асоціацій | |||
| Пункти договору | contract_items | One to many | |
| Покупець (Сторона А) | buyer | Many to one | |
| Продавець (Сторона Б) | seller | Many to one | |
| Загальні поля | |||
| Номер договору | contract_no | Single line text | |
| Дата початку поставки | start_date | Datetime (with time zone) | |
| Дата закінчення поставки | end_date | Datetime (with time zone) | |
| Відсоток передоплати (%) | deposit_ratio | Percent | |
| Днів оплати після поставки | payment_days_after | Integer | |
| Назва банківського рахунку (бенефіціара) | bank_account_name | Single line text | |
| Назва банку | bank_name | Single line text | |
| Номер банківського рахунку (бенефіціара) | bank_account_number | Single line text | |
| Загальна сума | total_amount | Number | |
| Коди валют | currency_codes | Single select | |
| Відсоток залишку (%) | balance_ratio | Percent | |
| Днів залишку після поставки | balance_days_after | Integer | |
| Місце поставки | delivery_place | Long text | |
| Ім'я підписанта Сторони А | party_a_signatory_name | Single line text | |
| Посада підписанта Сторони А | party_a_signatory_title | Single line text | |
| Ім'я підписанта Сторони Б | party_b_signatory_name | Single line text | |
| Посада підписанта Сторони Б | party_b_signatory_title | Single line text | |
| Системні поля | |||
| Створено о | createdAt | Created at | |
| Створено ким | createdBy | Created by | |
| Останнє оновлення о | updatedAt | Last updated at | |
| Останнє оновлення ким | updatedBy | Last updated by |
| Категорія поля | Назва поля для відображення | Назва поля | Інтерфейс поля |
|---|---|---|---|
| Поля первинного та зовнішнього ключів | |||
| ID | id | Integer | |
| Загальні поля | |||
| Назва сторони | party_name | Single line text | |
| Адреса | address | Single line text | |
| Контактна особа | contact_person | Single line text | |
| Контактний телефон | contact_phone | Phone | |
| Посада | position | Single line text | |
| Електронна пошта | |||
| Вебсайт | website | URL | |
| Системні поля | |||
| Створено о | createdAt | Created at | |
| Створено ким | createdBy | Created by | |
| Останнє оновлення о | updatedAt | Last updated at | |
| Останнє оновлення ким | updatedBy | Last updated by |
| Категорія поля | Назва поля для відображення | Назва поля | Інтерфейс поля |
|---|---|---|---|
| Поля первинного та зовнішнього ключів | |||
| ID | id | Integer | |
| ID договору | contract_id | Integer | |
| Поля асоціацій | |||
| Договір | contract | Many to one | |
| Загальні поля | |||
| Назва продукту | product_name | Single line text | |
| Специфікація / Модель | spec | Single line text | |
| Кількість | quantity | Integer | |
| Ціна за одиницю | unit_price | Number | |
| Загальна сума | total_amount | Number | |
| Дата поставки | delivery_date | Datetime (with time zone) | |
| Примітка | remark | Long text | |
| Системні поля | |||
| Створено о | createdAt | Created at | |
| Створено ким | createdBy | Created by | |
| Останнє оновлення о | updatedAt | Last updated at | |
| Останнє оновлення ким | updatedBy | Last updated by |
Введіть зразки даних:


Налаштуйте правила зв'язування для автоматичного розрахунку загальної суми та залишку платежу:

Створіть блок перегляду, підтвердьте дані та активуйте дію «Друк за шаблоном»:


Додайте конфігурацію шаблону, наприклад, «Договір поставки та закупівлі»:


Далі перейдіть на вкладку «Список полів», де ви побачите всі поля поточного об'єкта. Після натискання «Копіювати» ви зможете почати заповнювати шаблон.

Файл шаблону договору Word
Заздалегідь підготуйте шаблон договору (файл .docx), наприклад: SUPPLY AND PURCHASE CONTRACT.docx
У цьому прикладі ми надаємо спрощену версію «Договору поставки та закупівлі», яка містить зразки заповнювачів:
{d.contract_no}: Номер договору{d.buyer.party_name}, {d.seller.party_name}: Назви покупця та продавця{d.total_amount}: Загальна сума договоруДалі ви можете скопіювати та вставити поля з вашої колекції в Word.
Заповнення базових полів:
Наприклад, номер договору у верхній частині або об'єкт, що підписує договір. Натисніть «Копіювати» та вставте безпосередньо у відповідне порожнє місце в договорі.


У шаблонах часто потрібно форматувати поля, особливо поля дати. Формат дати, скопійований безпосередньо, зазвичай довгий (наприклад, Wed Jan 01 2025 00:00:00 GMT), і його потрібно відформатувати, щоб відобразити бажаний стиль.
Для полів дати можна використовувати функцію formatD() для вказівки формату виведення:
Приклад:
Наприклад, якщо оригінальне поле, яке ми скопіювали, це {d.created_at}, і нам потрібно відформатувати дату у формат 2025-01-01, тоді змініть це поле на:
Поширені стилі форматування дати:
YYYY - Рік (чотири цифри)MM - Місяць (дві цифри)DD - День (дві цифри)HH - Година (24-годинний формат)mm - Хвилиниss - СекундиПриклад 2:
Припустимо, є поле суми, наприклад {d.total_amount} у договорі. Ми можемо використовувати функцію formatN() для форматування чисел, вказуючи кількість десяткових знаків та роздільник тисяч.
Синтаксис:
2 означає дві десяткові позиції.true або false.Приклад 1: Форматування суми з роздільником тисяч та двома десятковими знаками
Це відформатує d.amount до двох десяткових знаків і додасть роздільник тисяч.
Приклад 2: Форматування суми до цілого числа без десяткових знаків
Це відформатує d.amount до цілого числа і додасть роздільник тисяч.
Приклад 3: Форматування суми з двома десятковими знаками, але без роздільника тисяч
Це вимикає роздільник тисяч і зберігає лише два десяткові знаки.
Інші потреби у форматуванні сум:
Для рядкових полів можна використовувати :upperCase для вказівки формату тексту, наприклад, перетворення регістру.
Синтаксис:
Поширені методи перетворення:
upperCase - Перетворити на ВЕЛИКІ ЛІТЕРИlowerCase - Перетворити на малі літериupperCase:ucFirst - Зробити першу літеру великоюПриклад:
Коли нам потрібно надрукувати таблицю, що містить кілька підпунктів (наприклад, деталі продукту), зазвичай потрібно використовувати циклічний друк. Таким чином, система генеруватиме рядок вмісту для кожного елемента у списку, доки не будуть переглянуті всі елементи.
Припустимо, у нас є список продуктів (наприклад, contract_items), який містить кілька об'єктів продуктів. Кожен об'єкт продукту має кілька атрибутів, таких як назва продукту, специфікація, кількість, ціна за одиницю, загальна сума та примітки.
Крок 1: Заповніть поля в першому рядку таблиці
Спочатку, у першому рядку таблиці (не в заголовку), ми безпосередньо копіюємо та заповнюємо змінні шаблону. Ці змінні будуть замінені відповідними даними та відображені у виводі.
Наприклад, перший рядок таблиці виглядає так:
| Назва продукту | Специфікація / Модель | Кількість | Ціна за одиницю | Загальна сума | Примітка |
|---|---|---|---|---|---|
| {d.contract_items[i].product_name} | {d.contract_items[i].spec} | {d.contract_items[i].quantity} | {d.contract_items[i].unit_price} | {d.contract_items[i].total_amount} | {d.contract_items[i].remark} |
Тут d.contract_items[i] представляє i-й елемент у списку продуктів, а i — це індекс, що позначає порядок поточного продукту.
Крок 2: Змініть індекс у другому рядку
Далі, у другому рядку таблиці, ми змінюємо індекс поля на i+1 і заповнюємо лише перший атрибут. Це тому, що під час циклічного друку нам потрібно отримати наступний елемент даних зі списку та відобразити його в наступному рядку.
Наприклад, другий рядок заповнюється так:
| Назва продукту | Специфікація / Модель | Кількість | Ціна за одиницю | Загальна сума | Примітка |
|---|---|---|---|---|---|
| {d.contract_items[i+1].product_name} |
У цьому прикладі ми змінили [i] на [i+1], щоб отримати дані наступного продукту у списку.
Крок 3: Автоматичний циклічний друк під час рендерингу шаблону
Коли система обробляє цей шаблон, вона діятиме за такою логікою:
d.contract_items, циклічно заповнюючи кожен рядок у форматі таблиці, доки не будуть надруковані всі деталі продукту.i у кожному рядку буде збільшуватися, забезпечуючи відображення різної інформації про продукт у кожному рядку.


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