Skip to content

Переменные шаблонов

Переменные позволяют подставлять данные из SNABZHENETS+ в печатные формы. Синтаксис переменной: {{path.to.value}}. Список берётся из общего каталога переменных, который также доступен через Variable API.

Модификатор добавляется через |: {{document.date|date}}. Значение по умолчанию задаётся так: {{document.subject|default:поставка товаров}}.

Основные группы

ГруппаЧто содержитПримеры
ДокументНомер, дата, сумма, валюта, тема, условия, модель расчёта КП{{document.number}}, {{document.totalAmount|money}}, {{document.pricingMode}}
НумерацияТекущий формат номера шаблона{{numbering.preview}}, {{numbering.prefix}}
Моя компанияНаименование и реквизиты продавца{{seller.fullName}}, {{seller.inn}}
БанкБанковские реквизиты моей компании{{bank.bankName}}, {{bank.checkingAccount}}
КонтрагентДанные покупателя и его основные реквизиты{{buyer.fullName}}, {{buyer.legalAddress}}
Контакт контрагентаКонтактное лицо покупателя{{buyerContact.fullName}}, {{buyerContact.email}}
Контакт поставщикаКонтактное лицо поставщика в запросе, КП или счёте{{supplierDocument.supplierContact.fullName}}, {{supplierDocument.supplierContact.email}}
ЗаявкаСвязанная заявка, если документ создан из неё{{request.number}}, {{request.projectRef}}
Заявка/сделкаСвязанная заявка или сделка{{procurement.number}}, {{procurement.stage.name}}, {{procurement.customerContact.fullName}}, {{procurement.responsible.email}}
Объект логистикиАдрес, координаты, контакт и код точки доставки или приёмки{{logisticsObject.name}}, {{logisticsObject.latitude}}
Маршрут доставкиУпорядоченные пункты, координаты, перевозчик, водитель и транспорт{{deliveryRoute.name}}, {{deliveryRoute.stops[].address}}
Партия поставкиНомер партии, статус и строки отгрузки{{deliveryBatch.number}}, {{deliveryBatch.items[].name}}
ВодительФИО, телефон, водительское удостоверение и закреплённые ТС{{logisticsDriver.fullName}}, {{logisticsDriver.licenseNumber}}
Транспортное средствоГосномер, марка, модель, тип, прицеп и водитель по умолчанию{{logisticsVehicle.plateNumber}}, {{logisticsVehicle.defaultDriver.fullName}}
Документ поставкиВид, этап, scope и реквизиты перевозчика/доверенного лица{{generatedDocument.stage}}, {{generatedDocument.attorneyName}}
Контур.ДиадокСтатус ЭДО, статус подписи и идентификаторы сообщения{{diadoc.statusText}}, {{diadoc.messageId}}
СБИС / SABYСтатус ЭДО, статус подписи и идентификаторы документа{{saby.statusText}}, {{saby.documentId}}
Калуга АстралСтатус ЭДО, статус подписи и идентификаторы документооборота{{astral.statusText}}, {{astral.docflowId}}
Связанные документыНомера КП, счёта или договора{{related.proposalNumber}}, {{related.contractNumber}}
ПозицииСтроки документа, закупочные цены, комиссии и табличные блоки{{items.count}}, {{items.table}}, {{items.rows[].unitCost}}
ПользователиСоздатель и ответственный{{users.createdBy.name}}, {{users.assignedTo.email}}
СистемныеТекущая дата и название продукта{{system.today|date}}, {{system.productName}}

В документных контекстах дополнительно доступны расширенные поля: document.status, document.series, document.subtotalAmount, document.discountTotalAmount, document.taxTotalAmount, document.paidAmount, document.outstandingAmount, даты жизненного цикла, служебные коды пользователей, а также items.rows[].sku, items.rows[].description, items.rows[].discountAmount, items.rows[].vatAmount.

Для исходящих счетов доступны массивы оплат клиента: document.payments[].date, document.payments[].amount, document.payments[].source, document.payments[].externalSource, document.payments[].externalPaymentId, document.payments[].paymentMethod, document.payments[].paymentReference и document.payments[].note.

Для карточки контрагента доступны основной банк и счета: counterparty.bankName, counterparty.bik, counterparty.checkingAccount, counterparty.correspondentAccount. Если нужно вывести все сохранённые счета, используйте массивы counterparty.paymentRequisites[].label, counterparty.paymentRequisites[].bankName, counterparty.paymentRequisites[].bik, counterparty.paymentRequisites[].checkingAccount, counterparty.paymentRequisites[].correspondentAccount и counterparty.paymentRequisites[].isPrimary.

Для коммерческих предложений доступны безопасные поля расчёта: document.pricingMode, document.proposalModel, document.commissionMode, document.commissionPercent, document.commissionFixedAmount, document.materialsAmount, document.servicesAmount, document.expenseTotalAmount, document.allocatedExpenseAmount, document.commissionAmount. По строкам можно вывести items.rows[].lineType, items.rows[].supplierName, items.rows[].groupLabel, items.rows[].unitCost, items.rows[].markupPercent, items.rows[].allocatedExpenseAmount, items.rows[].commissionAmount, items.rows[].lineCostAmount, items.rows[].grossProfitAmount, items.rows[].grossMarginPercent.

Для документов поставки доступны безопасные поля logisticsObject.*, deliveryRoute.*, deliveryBatch.*, logisticsDriver.*, logisticsVehicle.* и generatedDocument.*: адреса, координаты, активность маршрута или партии, пункты маршрута, номер партии, строки партии, перевозчик, водитель, ТС, доверенное лицо, получатель, адрес доставки, этап и способ генерации. Служебные ссылки хранения, audit payload и внутренние JSON-поля в шаблоны не передаются.

Если документ отправлен через Контур.Диадок, в шаблонах доступны diadoc.status, diadoc.signatureStatus, diadoc.statusText, diadoc.senderBoxId, diadoc.recipientBoxId, diadoc.messageId, diadoc.attachmentEntityId, diadoc.documentId, diadoc.sentAt, diadoc.syncedAt и diadoc.signedAt. OAuth-токены, настройки интеграции, raw-ответы и файловые хэши в шаблоны не передаются.

Если документ отправлен через СБИС / SABY ЭДО, в шаблонах доступны saby.status, saby.signatureStatus, saby.statusText, saby.statusDetails, saby.documentId, saby.revisionId, saby.attachmentId, saby.counterpartyParticipantId, saby.counterpartyName, saby.counterpartyInn, saby.counterpartyKpp, saby.lastEventId, saby.lastEventName, saby.sentAt, saby.syncedAt и saby.signedAt. Пароль, настройки интеграции, raw-ответы и файловые хэши в шаблоны не передаются.

Если документ отправлен через Калуга Астрал ЭДО, в шаблонах доступны astral.status, astral.signatureStatus, astral.statusText, astral.statusDetails, astral.direction, astral.senderAbonentId, astral.recipientId, astral.draftId, astral.docflowId, astral.documentId, astral.signingRequestId, astral.counterpartyName, astral.counterpartyInn, astral.counterpartyKpp, astral.lastEventId, astral.lastEventName, astral.sentAt, astral.syncedAt и astral.signedAt. API-токен, настройки интеграции, raw-ответы и файловые хэши в шаблоны не передаются.

Таблицы позиций

Для строк документа доступны готовые табличные переменные:

ПеременнаяЧто выводит
{{items.table}}Стандартная таблица: номер, наименование, количество, единица, цена, НДС, сумма
{{items.table.compact}}Компактная таблица: номер, наименование, количество, сумма
{{items.table.withVat}}Таблица с явным акцентом на сумму с НДС
{{items.table.noPrices}}Таблица без цен: подходит для договоров и приложений
{{items.table.openCommission}}Таблица для открытой комиссии: закупочная цена, расходы, комиссия и сумма
{{items.table.supplierDetail}}Таблица с детализацией поставщиков и закупочной суммы
{{items.table.costAppendix}}Приложение «закупочные цены + комиссия»

Табличную переменную лучше ставить отдельной строкой в поле Условия / текст шаблона.

Если нужно вывести отдельные значения строк, используйте array-paths, например {{items.rows[].sku}} или {{items.rows[].description}}. В шаблоне такие значения выводятся списком через запятую.

Дополнительные переменные

Дополнительные поля портала появляются в Variable API как custom.<key>, если они заведены для нужного типа сущности. Например поле с ключом vendorCode будет доступно как custom.vendorCode в контексте этой сущности. amoCRM-интеграция автоматически заводит для PR поля custom.amocrmLeadId, custom.amocrmProcurementNumber, custom.amocrmActualTotal, custom.amocrmSelectedSupplier, custom.amocrmExportFile и другие поля обмена. Документный контекст также поддерживает namespace custom, когда значение передано в контекст генерации.

Дополнительные поля номенклатуры, заполненные в товарах или через импорт PR, доступны в строках документов как items.rows[].custom.<key>. Например поле товара colorCode можно вывести через {{items.rows[].custom.colorCode}}.

Для пользовательских шаблонов важно: новое бизнес-поле или дополнительное поле должно быть добавлено в настройках портала. Тогда оно будет одинаково работать в документах, API и будущих интеграциях.

Переменные КП не раскрывают служебные JSON-данные, токены, webhook payload, внутренние конфиги или секреты. В шаблоны попадают только бизнес-поля расчёта и сохранённые снимки поставщиков/групп строк.

Модификаторы

МодификаторНазначениеПример
dateФорматирует дату{{document.date|date}}
datetimeФорматирует дату и время{{system.now|datetime}}
moneyФорматирует сумму с валютой документа{{document.totalAmount|money}}
numberФорматирует число{{items.count|number}}
uppercaseПереводит текст в верхний регистр{{buyer.fullName|uppercase}}
lowercaseПереводит текст в нижний регистр{{buyer.email|lowercase}}
initialsСокращает ФИО до инициалов{{buyerContact.fullName|initials}}
default:текстПодставляет резервный текст, если данных нет{{document.subject|default:без темы}}

Модификаторы можно комбинировать. Например: {{document.validUntil|date|default:не указан}}.

Пустые значения

Если документ связан с PR, buyerContact.* берётся из выбранного контакта заказчика в PR. Если он не выбран, система использует основной контакт компании заказчика. Для документов поставщика доступны supplierDocument.supplierContact.*: система берёт контакт, сохранённый в запросе, ответе поставщика или входящем счёте. Если документ не связан с заявкой, закупкой или контактом, соответствующие переменные будут пустыми. В предпросмотре такие поля выводятся в предупреждении, чтобы администратор мог заменить переменную или добавить default:.

Для рабочих файлов пустые значения не ломают генерацию: система оставляет место пустым и продолжает формировать документ.

Документация платформы SNABZHENETS+.