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

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

Основным параметром является атрибут 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)} План. дата оплаты (для счетов покупателям/поставщиков)
${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()).description} Описание

 

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

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

 

Склад

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

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

 

Договор

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

 

НДС

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

 

Позиции

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

Формула начала перебора <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())} Сер.номера позиции


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

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

Комментарии