Переменные шаблонов
Переменные позволяют подставлять данные из 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:.
Для рабочих файлов пустые значения не ломают генерацию: система оставляет место пустым и продолжает формировать документ.