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.stage.enteredAt}}, {{procurement.customerContact.fullName}}, {{procurement.responsible.email}}, {{procurement.responsible.jobTitle}}, {{procurement.participants[].roleLabel}}
Объект логистикиАдрес, координаты, контакт и код точки доставки или приёмки{{logisticsObject.name}}, {{logisticsObject.latitude}}
Маршрут доставкиУпорядоченные пункты, координаты, перевозчик, водитель и транспорт{{deliveryRoute.name}}, {{deliveryRoute.stops[].address}}
Партия поставкиНомер партии, статус и строки отгрузки{{deliveryBatch.number}}, {{deliveryBatch.items[].name}}
Рейс доставкиМашина, водитель, график, точки, распределение груза и последние события{{deliveryTrip.status}}, {{deliveryTrip.stops[].address}}, {{deliveryTrip.allocations[].plannedQuantity}}
ЭТрНРейс, оператор, внешний ID, ссылка и состояние черновика{{etrn.status}}, {{etrn.externalDocumentId}}, {{etrn.externalUrl}}
ВодительФИО, телефон, водительское удостоверение и закреплённые ТС{{logisticsDriver.fullName}}, {{logisticsDriver.licenseNumber}}
Транспортное средствоГосномер, марка, модель, тип, прицеп и водитель по умолчанию{{logisticsVehicle.plateNumber}}, {{logisticsVehicle.defaultDriver.fullName}}
Документ поставкиВид, этап, scope и реквизиты перевозчика/доверенного лица{{generatedDocument.stage}}, {{generatedDocument.attorneyName}}
Связанные документыНомера КП, счёта, договора, RFQ, ответа поставщика или прихода{{related.proposalNumber}}, {{related.supplierQuoteNumber}}, {{related.stockReceiptStatus}}
ПозицииСтроки документа, закупочные цены, комиссии и табличные блоки{{items.count}}, {{items.table}}, {{items.rows[].unitCost}}
СистемныеТекущая дата и название продукта{{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.

Для документов поставщиков доступны supplierDocument.title, supplierDocument.subject и supplierDocument.round.*. В RFQ название используется как основная тема запроса и как тема Email при отправке поставщику. Номер RFQ доступен через supplierDocument.number, а в контексте RFQ-конструктора также через numbering.preview. Если RFQ или КП поставщика привязаны к закупочному раунду, используйте supplierDocument.round.type, supplierDocument.round.status, supplierDocument.round.title и supplierDocument.round.dueDate. По строкам ответов поставщика доступны supplierDocument.items[].availabilityStatus, supplierDocument.items[].availabilityLabel и supplierDocument.items[].availabilityText.

Для исходящих счетов доступны массивы оплат клиента: 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.

Для supplier-профиля доступны безопасные поля поставщика, включая supplier.status, supplier.prequalificationStatus, supplier.category, supplier.rating, supplier.isPreferred, supplier.paymentTerms и supplier.deliveryTerms. По предполагаемым торговым категориям доступны только безопасные array-пути supplier.assumedTradingCategories[].name, supplier.assumedTradingCategories[].label, supplier.assumedTradingCategories[].confidence, supplier.assumedTradingCategories[].source и supplier.assumedTradingCategories[].okved.

Для поставщика из каталога можно вывести безопасное происхождение данных: supplier.directory.legalSourceUrl, supplier.directory.contactSourceUrl, supplier.directory.assortmentSourceUrl, supplier.directory.checkedAt, supplier.directory.rfqReady, а также supplier.directory.assortmentEvidence[].sourceUrl, supplier.directory.assortmentEvidence[].observedAt и supplier.directory.assortmentEvidence[].confidence. Эти пути не раскрывают личные каналы контактов, ID import job или служебный снимок адресатов RFQ.

Для коммерческих предложений доступны безопасные поля расчёта: 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.

Для закупочного governance-контура доступны безопасные поля заявки: procurement.rounds[].type, procurement.rounds[].status, procurement.techDecisions[].status, procurement.techDecisions[].customerComment, procurement.competitiveMap.status, procurement.competitiveMap.version, procurement.competitiveMap.lines[].supplierName, procurement.competitiveMap.lines[].unitPrice, procurement.competitiveMap.lines[].technicalStatus, procurement.approvals[].status, procurement.approvals[].currentStepOrder, procurement.approvals[].steps[].name, procurement.approvals[].steps[].status, procurement.approvals[].steps[].approver.name, procurement.approvals[].steps[].approverRoleCode, procurement.approvals[].steps[].dueAt, procurement.approvals[].steps[].decidedBy.name, procurement.approvals[].steps[].delegatedTo.name, procurement.approvals[].steps[].comment, procurement.documents[].documentType, procurement.documents[].direction и procurement.documents[].visibility.

Для сценариев с несколькими закупочными воронками доступны procurement.pipeline.id, procurement.pipeline.externalId, procurement.pipeline.name и procurement.pipeline.isMain. Используйте UUID заявки как уникальную ссылку: отображаемый номер может повторяться после переноса между воронками.

Для документов поставки доступны безопасные поля logisticsObject.*, deliveryRoute.*, deliveryBatch.*, deliveryTrip.*, logisticsDriver.*, logisticsVehicle.* и generatedDocument.*: адреса, координаты, активность маршрута или партии, пункты маршрута, номер партии, строки партии, перевозчик, водитель, ТС, доверенное лицо, получатель, адрес доставки, этап и способ генерации. Рейс дополнительно предоставляет status, health, schedulePrecision, плановые и фактические отметки времени, точки, количества plannedQuantity / shippedQuantity / acceptedQuantity / rejectedQuantity и безопасную ленту recentEvents. Значение schedulePrecision=DATE означает, что исторический план содержит только дату, а не точное время. Служебные ссылки хранения, audit payload и внутренние JSON-поля в шаблоны не передаются.

Для сущности ЭТрН доступны etrn.id, etrn.deliveryTripId, etrn.status, etrn.provider, etrn.providerStatus, etrn.externalDocumentId, etrn.externalUrl, etrn.lastSyncedAt, etrn.createdAt и etrn.updatedAt. Ключ идемпотентности, исходный снимок данных, настройки подключения и ответы оператора в переменные не передаются.

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

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

ПеременнаяЧто выводит
{{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 в контексте этой сущности. Документный контекст также поддерживает namespace custom, когда значение передано в контекст генерации. Служебные поля подключённых внешних систем в публичный каталог переменных не включаются.

Дополнительные поля номенклатуры, заполненные в товарах или через импорт заявки, доступны в строках документов как 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:не указан}}.

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

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

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

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