Skip to Content
ШаблоныФормулыОсновные формулы вывода данных из документа

Основные формулы вывода данных из документа

Описанные формулы предназначены для добавления в шаблон, который печатается прямо из документа. Т.е. когда в интерфейсе вы открыли непосредственно сам заказ покупателя, сам счет, саму отгрузку и т.д. 

Основным параметром является атрибут o, который указывает на обращение к текущему документу.

Формулы вывода полей с типом даты должны размещаться в шаблоне в отдельных ячейках с форматом Дата (форматирование ячеек в Excel).

Скачать шаблон отладки на примере документа Заказ покупателя.

Основные поля

ФормулаЗначение
${o.name}Номер
${formatter.getExcelDate(o.moment)}Дата
${formatter.printIf(o.applicable, “Да”)}Проведено
${o.state.name}Статус
${o.description}Комментарий
${formatter.operationWeight(o)}Вес
${formatter.operationVolume(o)}Объем
${o.addressFull}Адрес доставки
${formatter.getExcelDate(o.deliveryPlannedMoment)}План. дата отгрузки или приемки (для заказов покупателей и заказов поставщикам)
${formatter.getExcelDate(o.paymentPlannedMoment)}План. дата оплаты (для счетов покупателям и счетов поставщиков)
${o.incomingNumber}Входящий номер (для счетов поставщиков, приемок, счетов-фактур полученных, полученных отчетов комиссионеров и входящих платежей)
${formatter.getExcelDate(o.incomingDate)}Входящая дата (для счетов поставщиков, приемок, счетов-фактур полученных, полученных отчетов комиссионеров и входящих платежей)
${formatter.getExcelDate(o.updated)}Дата последнего изменения
${formatter.getExcelDate(o.created)}Дата создания
${o.externalCode}Внешний код
${o.id}ID
${formatter.qrCode(o)}QR номера документа по размеру ячейки
${formatter.qrCode(o, true)}QR номера документа фиксированного размера

Владелец

ФормулаЗначение
${o.getOwnerName()}Владелец-сотрудник
${o.getGroupName()}Владелец-отдел
${formatter.printIfElse(o.getShared(), “Да”, “Нет”)}Общий доступ

Подробные поля из карточки сотрудника, указанного в документе в качестве Владельца-сотрудника:

ФормулаЗначение
${formatter.getEmployeeForId(o.getOwnerId()).lastName}Фамилия
${formatter.getEmployeeForId(o.getOwnerId()).firstName}Имя
${formatter.getEmployeeForId(o.getOwnerId()).middleName}Отчество
${formatter.getEmployeeForId(o.getOwnerId()).phone}Телефон
${formatter.getEmployeeForId(o.getOwnerId()).email}E-mail
${formatter.getEmployeeForId(o.getOwnerId()).position}Должность
${formatter.getEmployeeForId(o.getOwnerId()).inn}ИНН
${formatter.getEmployeeForId(o.getOwnerId()).description}Описание

Адрес доставки

Формулы действуют в Заказах покупателей и Отгрузках.

ФормулаЗначение
${o.address.country.name}Страна
${o.address.region.name}Регион
${o.address.postalCode}Индекс
${o.address.city}Город
${o.address.street}Улица
${o.address.house}Дом
${o.address.apartment}Квартира или офис
${o.address.addInfo}Другое
${o.address.comment}Комментарий к адресу
${o.addressFull}Полный адрес

Организация и Контрагент

Формулы вывода данных из карточки контрагента/юр.лица опубликованы в отдельной статье.

Склад

Во описанных формулах используется атрибут source - это формулы вывода реквизитов склада, с которого отгружается товар (используется в документах раздела Продажи и в документе Перемещение в поле Со склада), измените на атрибут target, если требуется вывести реквизиты склада на который приходуется товар (используется в документах раздела Закупки и в документе Перемещение в поле На склад).

ФормулаЗначение
${o.sourceStore.name}Наименование
${o.sourceStore.address}Адрес
${o.sourceStore.description}Комментарий
${o.sourceStore.code}Код
Адрес раздельно по полям
${o.sourceStore.detailedAddress.postalCode}Индекс
${o.sourceStore.detailedAddress.country.name}Страна
${o.sourceStore.detailedAddress.region.name}Регион
${o.sourceStore.detailedAddress.city}Город
${o.sourceStore.detailedAddress.street}Улица
${o.sourceStore.detailedAddress.house}Дом
${o.sourceStore.detailedAddress.apartment}Квартира или офис
${o.sourceStore.detailedAddress.addInfo}Другое
${o.sourceStore.detailedAddress.comment}Комментарий к адресу

Другие поля (в документе Отгрузка)

ФормулаПоле в элементе справочника
${o.extension.consignee.requisite.agent.name}Грузополучатель
${o.extension.carrier.requisite.agent.name}Перевозчик
${o.extension.transportFacility}Транспортное средство
${o.extension.carNumber}Номер автомобиля
${o.extension.loadName}Наименование груза
${o.extension.goodPackQuantity}Всего мест
${o.extension.consignorIndication}Указания грузоотправителя
${o.idStateContract}ИД гос. контракта

Для документа Розничной продажи

ФормулаЗначение
${o.sum.sum == o.byCardSum.sum ? “Картой” : (o.sum.sum == o.byQrCodeSum.sum ? “По QR-коду” : (o.sum.sum == o.advancePaymentSum.sum ? “Из аванса” : (o.sum.sum == (o.sum.sum-o.noCashSum.sum-o.prepaymentCashSum.sum-o.prepaymentNoCashSum.sum-o.advancePaymentSum.sum) ? “Наличными” : “Смешанная”)))}Способ оплаты
${o.retailStore.name}Наименование точки продаж
${o.retailStore.address}Адрес точки продаж
${(o.sum.sumInCurrency-o.noCashSum.sumInCurrency-o.prepaymentCashSum.sumInCurrency-o.prepaymentNoCashSum.sumInCurrency-o.advancePaymentSum.sumInCurrency)/ 100}Сумма наличными
${o.noCashSum.sumInCurrency / 100}Сумма безналичными
${o.byCardSum.sumInCurrency / 100}Сумма по карте
${o.byQrCodeSum.sumInCurrency / 100}Сумма по QR
${o.advancePaymentSum.sumInCurrency / 100}Из аванса
${o.prepaymentCashSum.sumInCurrency/ 100}Сумма предоплаты наличными
${o.prepaymentNoCashSum.sumInCurrency/ 100}Сумма предоплаты б/н
${o.prepaymentByQrCodeSum.sumInCurrency/ 100}Сумма предоплаты по QR

Канал продаж

ФормулаЗначение
${o.salesChannel.name}Название
${o.salesChannel.type}Тип
${o.salesChannel.description}Описание
${o.salesChannel.ownerName}Владелец-сотрудник канала
${o.salesChannel.groupName}Владелец-отдел канала

Договор

ФормулаЗначение
${o.contract.name}Номер
${formatter.getExcelDate(o.contract.moment)}Дата
${o.contract.sum.sum / 100}Сумма
${o.contract.code}Код
${o.contract.description}Комментарий
${o.contract.state.name}Статус

Проект

ФормулаЗначение
${o.project.name}Наименование
${o.project.code}Код
${o.project.description}Описание

Валюта

ФормулаЗначение
${o.currency.name}Краткое наименование валюты документа
${o.currency.fullName}Полное наименование валюты документа
${o.currency.code}Цифровой код валюты документа
${o.currency.letterCode}Буквенный код валюты документа
${o.rate}Курс валюты по документу
${o.currency.rate}Курс валюты по справочнику

Сумма

ФормулаЗначение
${o.sum.sum / 100}Сумма в валюте по умолчанию
${o.sum.sumInCurrency / 100}Сумма в валюте документа
${formatter.printAmount(formatter.getCurrency(o), o.sum.sumInCurrency)}Сумма в валюте документа прописью
${formatter.calcTotalAmount(formatter.getServices(o)) / 100}Сумма услуг
${formatter.printAmount(formatter.getCurrency(o), formatter.servicesAmount(o))}Сумма услуг прописью
${formatter.calcTotalAmount(formatter.getGoods(o)) / 100}Сумма товаров
${formatter.printAmount(formatter.getCurrency(o), formatter.goodsAmount(o))}Сумма товаров прописью
${o.tail.payedSum / 100}Оплачено
${(o.sum.sum - o.tail.payedSum) / 100}Осталось оплатить
${formatter.allSum(o)/100}Сумма без учета скидки
${formatter.allDiscount(o)/100}Сумма скидки
${o.getPayments().iterator().next().incomingNumber}Номер связанного платежа
${o.getPayments().iterator().next().incomingDate}Дата связанного платежа

НДС

ФормулаЗначение
${formatter.printIfElse(o.vatIncluded, “с НДС  ”, “без НДС”)} с НДС или без НДС
${formatter.calcVat(o.getPositions())}Сумма НДС общая
${formatter.printAmount(formatter.getCurrency(o), formatter.calcVat(o.getPositions())*100)}Сумма НДС общая (прописью)
${formatter.calcVat(formatter.getGoods(o))}Сумма НДС Товаров
${formatter.printAmount(formatter.calcVat(formatter.getGoods(o)) * 100)}Сумма НДС Товаров (прописью)
${formatter.calcVat(formatter.getServices(o))}Сумма НДС Услуг
${formatter.printAmount(formatter.calcVat(formatter.getServices(o)) * 100)}Сумма НДС Услуг (прописью)

Количество

ФормулаЗначение
${formatter.calcTotalQuantity(o)}Количество по всем позициям
${formatter.countServices(o)}Количество услуг
${formatter.calcTotalGoodsQuantity(o)} Количество товаров
${o.getPositions().size()}Количество порядковых записей позиций
${formatter.printNumber(o.getPositions().size())}Количество порядковых записей прописью
${formatter.getGoods(o).size()}Количество порядковых записей товаров
${formatter.printNumber(formatter.getGoods(o).size())}Количество порядковых записей товаров прописью
${formatter.getServices(o).size()}Количество порядковых записей услуг
${formatter.printNumber(formatter.getServices(o).size())}Количество порядковых записей услуг прописью

Дополнительные поля

Общим правилом оформления любой формулы дополнительного поля является структура

${formatter.findAttribute(o, “Наименование поля”).value}

Основные параметры: 

  • o - указатель на источник данных - текущий документ.
  • “Наименование поля” - точное наименование дополнительного поля в кавычках (с учетом регистра, дополнительных символов и т.д.).
  • value - тип, по которому создано пользовательское поле.
ФормулаТип поля
${formatter.findAttribute(o, “Наименование поля”).valueString}Строка
${formatter.findAttribute(o, “Наименование поля”).valueText}Текст
${formatter.findAttribute(o, “Наименование поля”).value}Ссылка
${formatter.findAttribute(o, “Наименование поля”).longValue}Число целое
${formatter.findAttribute(o, “Наименование поля”).doubleValue}Число дробное
${formatter.findAttribute(o, “Наименование поля”).timeValue}Дата
${formatter.printIfElse(formatter.findAttribute(o, “Наименование поля”).booleanValue==“true”, “Да”, “Нет”)}Флажок

Для поля по типу Файл используется два варианта вывода изображения, добавленного в поле в форматах *.png или *.jpg:

ФормулаФормат вывода изображения
${formatter.imageAttribute(o, “Наименование поля”, true)}В реальном размере
${formatter.imageAttribute(o, “Наименование поля”, false)}По границам ячейки

Для полей, созданных по типу Справочник (дополнительный или стандартный) возможно вывести не только отображаемые в поле наименования, но и другие поля из карточки элемента справочника.

Дополнительный справочник

ФормулаПоле в элементе справочника
${formatter.findAttribute(o, “Наименование поля”).entityValue.name}Наименование
${formatter.findAttribute(o, “Наименование поля”).entityValue.code}Код
${formatter.findAttribute(o, “Наименование поля”).entityValue.description}Описание

Справочник - Контрагенты

ФормулаПоле в элементе справочника
${formatter.findAttribute(o, “Наименование поля”).agentValue.name}Наименование
${formatter.findAttribute(o, “Наименование поля”).agentValue.code}Код
${formatter.findAttribute(o, “Наименование поля”).agentValue.contact.phones}Телефон
${formatter.findAttribute(o, “Наименование поля”).agentValue.contact.email}E-mail

По аналогии можно выводить другие поля из карточки контрагента, перечень которых опубликован в отдельной статье.

Справочник - Товары

ФормулаПоле в элементе справочника
${formatter.findAttribute(o, “Наименование поля”).goodValue.name}Наименование
${formatter.findAttribute(o, “Наименование поля”).goodValue.code}Код
${formatter.findAttribute(o, “Наименование поля”).goodValue.productCode}Артикул

По аналогии можно выводить другие поля из карточки товара, перечень которых опубликован в отдельной статье.

Справочник - Склады

ФормулаПоле в элементе справочника
${formatter.findAttribute(o, “Наименование поля”).warehouseValue.name}Наименование
${formatter.findAttribute(o, “Наименование поля”).warehouseValue.address}Адрес
${formatter.findAttribute(o, “Наименование поля”).warehouseValue.description}Комментарий
${formatter.findAttribute(o, “Наименование поля”).warehouseValue.code}Код

Справочник - Проекты

ФормулаПоле в элементе справочника
${formatter.findAttribute(o, “Наименование поля”).projectValue.name}Наименование
${formatter.findAttribute(o, “Наименование поля”).projectValue.code}Код
${formatter.findAttribute(o, “Наименование поля”).projectValue.description}Описание

Справочник - Договоры

ФормулаПоле в элементе справочника
${formatter.findAttribute(o, “Наименование поля”).contractValue.name}Номер
${formatter.findAttribute(o, “Наименование поля”).contractValue.moment}Дата
${formatter.findAttribute(o, “Наименование поля”).contractValue.sum.sum / 100}Сумма
${formatter.findAttribute(o, “Наименование поля”).contractValue.code}Код
${formatter.findAttribute(o, “Наименование поля”).contractValue.description}Комментарий
${formatter.findAttribute(o, “Наименование поля”).contractValue.state.name}Статус

Справочник - Сотрудники

ФормулаПоле в элементе справочника
${formatter.findAttribute(o, “Наименование поля”).employeeValue.name}ФИО
${formatter.findAttribute(o, “Наименование поля”).employeeValue.lastName}Фамилия
${formatter.findAttribute(o, “Наименование поля”).employeeValue.firstName}Имя
${formatter.findAttribute(o, “Наименование поля”).employeeValue.middleName}Отчество
${formatter.findAttribute(o, “Наименование поля”).employeeValue.phone}Телефон
${formatter.findAttribute(o, “Наименование поля”).employeeValue.email}E-mail
${formatter.findAttribute(o, “Наименование поля”).employeeValue.description}Описание