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

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

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

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

 

Основные реквизиты

Формула Значение
${o.name} Номер
${formatter.getExcelDate(o.moment)} Дата
${formatter.printIf(o.applicable, "Да")} Проведено
${o.state.name} Статус
${o.description} Комментарий
${formatter.operationWeight(o)} Вес
${formatter.operationVolume(o)} Объем
${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

 

Владелец

Формула Значение
${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} Описание

 

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

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

 

Склад

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

Формула Значение
${o.sourceStore.name} Наименование
${o.sourceStore.address} Адрес
${o.sourceStore.description} Комментарий
${o.sourceStore.code} Код

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

Формула Значение
${formatter.printIfElse(o.tail.nonCash,"Картой","Наличными")} Способ оплаты
${o.retailStore.name} Наименование точки продаж
${o.retailStore.address} Адрес точки продаж

 

Договор

Формула Значение
${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.calcTotalAmount(formatter.getGoods(o)) / 100} Сумма товаров
${o.tail.payedSum / 100} Оплачено
${(o.sum.sum - o.tail.payedSum) / 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.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}

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

  • - указатель на источник данных - текущий документ.
  • "Наименование поля" - точное наименование дополнительного поля в кавычках (с учетом регистра, дополнительных символов и т.д.).
  • 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} Описание

 

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

Формула Поле в элементе справочника
${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} ИД гос. контракта

 

Позиции

Перечисленные ниже формулы выводятся в теле перебора по позициям.

Формула начала перебора <jx:forEach items="${o.positions}" var="position"> 

Формула окончания перебора </jx:forEach>

Также позиции могут выводиться перебором по атрибуту shipment<jx:forEach items="${o.shipments}" var="shipment">, а данном случае в формулах вывода значения по позициям, перечисленных ниже, необходимо заменить атрибут position на атрибут shipment.

Формула Значение
${position.printName} Наименование
${position.consignment.modificationCode} Код
${position.quantity} Количество
${position.good.uom.name} Ед. измерения
${position.goodPack.uom.name} Упаковка по позиции
${position.goodPack.quantity} Количество в одной упаковке
${formatter.printIf(position.goodPack.quantity > 0, position.quantity / position.goodPack.quantity)} Количество упаковок по позиции
${position.reserve} Резерв/Ожидание по документу (в заказах покупателя/поставщику)
${formatter.shipped(position)} Отгружено/Принято (в заказах покупателя/поставщику)
${position.good.weight * position.quantity} Вес позиции
${position.good.volume * position.quantity} Объем позиции
${position.price.sumInCurrency / 100} Цена с учетом скидки
${formatter.round(position.price.sumInCurrency * position.quantity) / 100.0} Сумма с учетом скидки
${position.basePrice.sumInCurrency / 100} Цена без учета скидки
${formatter.round(position.basePrice.sumInCurrency * position.quantity) / 100.0} Сумма без учета скидки
${position.discount} Скидка, %
${(position.basePrice.sumInCurrency * position.quantity) / 100 - (position.price.sumInCurrency * position.quantity) / 100} Сумма скидки позиции
${formatter.printIfElse(o.sourceAgentRequisite.agent.payerVat || o.getClass().getSimpleName() == "PurchaseReturn" , position.vat + "%", "Без НДС")} НДС, %
${formatter.roundToCents(position.price.sumInCurrency * position.quantity / 100 - position.price.sumInCurrency * position.quantity / (100 + position.vat))} Сумма НДС позиции
${formatter.cost(position) / position.quantity} Себестоимость ед. (в документах, изменяющих остаток)
${formatter.cost(position)} Себестоимость (в документах, изменяющих остаток)
${formatter.printNameList(position.getThings())} Сер.номера позиции

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


Поля структурированного адреса

Для вывода полного адреса (объединения адресов из гранулярных полей) можно пользоваться формулами:

Формула Поле в элементе справочника

${o.sourceAgentRequisite.actualAddress}

Фактический адрес контрагента или юрлица

${o.targetAgentRequisite.legalAddress}

Юридический адрес контрагента или юрлица 

${o.sourceStore.address}

Адреса склада

${o.retailStore.address}

Адреса точки продаж

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

Формула Поле в элементе справочника

${o.sourceAgentRequisite.detailedLegalAddress.postalCode}

Индекс

${o.sourceAgentRequisite.detailedLegalAddress.country.name}

Страна

${o.sourceAgentRequisite.detailedLegalAddress.region.name}

Регион

${o.sourceAgentRequisite.detailedLegalAddress.city}

Город

${o.sourceAgentRequisite.detailedLegalAddress.street}

Улица

${o.sourceAgentRequisite.detailedLegalAddress.house}

Дом

${o.sourceAgentRequisite.detailedLegalAddress.apartment}

Квартира или офис

${o.sourceAgentRequisite.detailedLegalAddress.addInfo}

Другое

${o.sourceAgentRequisite.detailedLegalAddress.comment}

Комментарий к адресу

Для получения всех этих полей для Фактического адреса, нужно заменить o.sourceAgentRequisite.detailedLegalAddress на o.sourceAgentRequisite.detailedAddress.

Для получения полей адреса Точки продаж, заменить o.sourceAgentRequisite.detailedLegalAddress на o.retailStore.detailedAddress.

Для получения полей адреса Склада, заменить o.sourceAgentRequisite.detailedLegalAddress на o.sourceStore.detailedAddress.

Работа с параметрами source и target, а также способ работы с дополнительными полями не менялись.

Еще есть вопросы? Отправить запрос

Комментарии