Эта документация была автоматически переведена ИИ.
В сценариях цепочки поставок или торговли часто требуется быстро создавать стандартизированный «Договор поставки и закупки» и динамически заполнять его содержимое на основе информации из источников данных, такой как данные о покупателях, продавцах и деталях товаров. Ниже, на примере упрощенного сценария использования «Договора», мы покажем вам, как настроить и использовать функцию «Шаблонная печать» для сопоставления данных с заполнителями в шаблоне договора, тем самым автоматически генерируя готовый документ договора.
В нашем примере существуют следующие основные коллекции (нерелевантные поля опущены):

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

Проверка активации плагина:
На любой странице создайте блок деталей (например, для пользователей) и проверьте, есть ли в настройках действий соответствующая опция настройки шаблона:


Создайте основные коллекции сущностей, договоров и позиций товаров, как описано выше (выберите только основные поля).
| Категория поля | Отображаемое имя поля | Имя поля | Интерфейс поля |
|---|---|---|---|
| Поля первичного и внешнего ключей | |||
| ID | id | Целое число | |
| ID покупателя | buyer_id | Целое число | |
| ID продавца | seller_id | Целое число | |
| Поля связей | |||
| Позиции договора | contract_items | Один ко многим | |
| Покупатель (Сторона А) | buyer | Многие к одному | |
| Продавец (Сторона Б) | seller | Многие к одному | |
| Общие поля | |||
| Номер договора | contract_no | Однострочный текст | |
| Дата начала поставки | start_date | Дата и время (с часовым поясом) | |
| Дата окончания поставки | end_date | Дата и время (с часовым поясом) | |
| Коэффициент залога (%) | deposit_ratio | Процент | |
| Дни оплаты после поставки | payment_days_after | Целое число | |
| Название банковского счета (бенефициара) | bank_account_name | Однострочный текст | |
| Название банка | bank_name | Однострочный текст | |
| Номер банковского счета (бенефициара) | bank_account_number | Однострочный текст | |
| Общая сумма | total_amount | Число | |
| Коды валют | currency_codes | Единичный выбор | |
| Коэффициент остатка (%) | balance_ratio | Процент | |
| Дни остатка после поставки | balance_days_after | Целое число | |
| Место поставки | delivery_place | Длинный текст | |
| Имя подписанта Стороны А | party_a_signatory_name | Однострочный текст | |
| Должность подписанта Стороны А | party_a_signatory_title | Однострочный текст | |
| Имя подписанта Стороны Б | party_b_signatory_name | Однострочный текст | |
| Должность подписанта Стороны Б | party_b_signatory_title | Однострочный текст | |
| Системные поля | |||
| Создано в | createdAt | Создано в | |
| Создано | createdBy | Создано | |
| Последнее обновление в | updatedAt | Последнее обновление в | |
| Последнее обновление | updatedBy | Последнее обновление |
| Категория поля | Отображаемое имя поля | Имя поля | Интерфейс поля |
|---|---|---|---|
| Поля первичного и внешнего ключей | |||
| ID | id | Целое число | |
| Общие поля | |||
| Название стороны | party_name | Однострочный текст | |
| Адрес | address | Однострочный текст | |
| Контактное лицо | contact_person | Однострочный текст | |
| Контактный телефон | contact_phone | Телефон | |
| Должность | position | Однострочный текст | |
| Электронная почта | Электронная почта | ||
| Веб-сайт | website | URL | |
| Системные поля | |||
| Создано в | createdAt | Создано в | |
| Создано | createdBy | Создано | |
| Последнее обновление в | updatedAt | Последнее обновление в | |
| Последнее обновление | updatedBy | Последнее обновление |
| Категория поля | Отображаемое имя поля | Имя поля | Интерфейс поля |
|---|---|---|---|
| Поля первичного и внешнего ключей | |||
| ID | id | Целое число | |
| ID договора | contract_id | Целое число | |
| Поля связей | |||
| Договор | contract | Многие к одному | |
| Общие поля | |||
| Название продукта | product_name | Однострочный текст | |
| Спецификация / Модель | spec | Однострочный текст | |
| Количество | quantity | Целое число | |
| Цена за единицу | unit_price | Число | |
| Общая сумма | total_amount | Число | |
| Дата поставки | delivery_date | Дата и время (с часовым поясом) | |
| Примечание | remark | Длинный текст | |
| Системные поля | |||
| Создано в | createdAt | Создано в | |
| Создано | createdBy | Создано | |
| Последнее обновление в | updatedAt | Последнее обновление в | |
| Последнее обновление | updatedBy | Последнее обновление |
Ввод примерных данных:


Правила связывания настроены следующим образом для автоматического расчета общей суммы и остатка платежа:

Создайте блок просмотра, подтвердите данные, затем включите действие «Шаблонная печать»:


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


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

Файл шаблона договора 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, в зависимости от поддержки плагина.Желаем успешного использования! С помощью функции «Шаблонная печать» вы значительно сократите объем повторяющейся работы в управлении договорами, избежите ошибок ручного копирования и вставки, а также добьетесь стандартизированного и автоматизированного вывода договоров.