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

Формулы вывода данных в списке документов

Перечисленные ниже формулы выводятся в рамках перебора:

<jx:forEach items="${rows}" var="row"> // формула вывода поля </jx:forEach>

Формулы подходят для стандартных шаблонов в списках документов — Заказы, Счета, Отгрузки, Приемки, Оприходования, Возвраты, Перемещения, Списания.  

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

Основные поля документа

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

Владелец - сотрудник

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

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

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

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

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

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

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

В качестве примера используется Заказ покупателя. В других документах роли меняются, например, в отгрузке. 

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

${row.sourceAgentRef.name}

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

  • targetAgentRef или sourceAgentRef — указатель на источник данных, это либо карточка контрагента (кто покупает — source), либо информация из закладки Юр. лица (кто — target).
  • name — сама переменная, которую требуется вывести на печать.

Во всех формулах используется source — это формулы покупателя в документе, измените на target, если требуется напечатать реквизит получателя в документа.

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

ФормулаЗначение
${row.sourceAgentRef.name}Наименование 
${formatter.loadAgent(row.sourceAgentRef.id).code}Код
${formatter.loadAgent(row.sourceAgentRef.id).contact.phones}Телефон
${formatter.loadAgent(row.sourceAgentRef.id).contact.faxes}Факс
${formatter.loadAgent(row.sourceAgentRef.id).contact.email}E-mail
${formatter.loadAgent(row.sourceAgentRef.id).state.name}Статус
${formatter.loadAgent(row.sourceAgentRef.id).requisite.actualAddress}Фактический адрес
${formatter.loadAgent(row.sourceAgentRef.id).description}Комментарий
${formatter.loadAgent(row.sourceAgentRef.id).tags}Группы
${formatter.loadAgent(row.sourceAgentRef.id).externalCode}Внешний код

Юридические реквизиты 

ФормулаЗначение
${formatter.loadAgent(row.sourceAgentRef.id).requisite.legalTitle}Полное наименование
${formatter.loadAgent(row.sourceAgentRef.id).getCompanyType().name}Тип контрагента
${formatter.loadAgent(row.sourceAgentRef.id).requisite.legalAddress}Юридический адрес
${formatter.loadAgent(row.sourceAgentRef.id).requisite.INN}ИНН
${formatter.loadAgent(row.sourceAgentRef.id).requisite.KPP}КПП
${formatter.loadAgent(row.sourceAgentRef.id).requisite.okpo}ОКПО
${formatter.loadAgent(row.sourceAgentRef.id).requisite.ogrn}ОГРН
${formatter.loadAgent(row.sourceAgentRef.id).requisite.ogrnip}ОГРНИП
${formatter.loadAgent(row.sourceAgentRef.id).requisite.nomerSvidetelstva}Номер свидетельства
${formatter.loadAgent(row.sourceAgentRef.id).requisite.dataSvidetelstva}Дата свидетельства
${formatter.loadAgent(row.sourceAgentRef.id).directorPosition}Должность
${formatter.loadAgent(row.sourceAgentRef.id).director}ФИО руководителя

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

Склад

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

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

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

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

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

ФормулаЗначение
${formatter.printIfElse(row.noCashSumTO.sum > 0, formatter.printIfElse(row.sumTO.sum == row.noCashSumTO.sum, “Безналичными”, “Смешанная”), “Наличными”)}Способ оплаты
${row.retailStoreRef.name}Наименование точки продаж
${row.retailStoreRef.address}Адрес точки продаж
${(row.sumTO.sum-row.noCashSumTO.sum-row.prepaymentTotalInCurrency) / 100}Сумма наличными
${row.byCardSumTO.sum/100}Сумма по карте
${row.byQrCodeSumTO.sum/100}Сумма по QR

Канал продаж

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

Договор

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

Проект

ФормулаЗначение
${row.projectRef.name}Наименование
${formatter.loadOperation(row.id).project.code}Код
${formatter.loadOperation(row.id).project.description}Описание

Валюта

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

Сумма

ФормулаЗначение
${row.sumTO.sum / 100}Сумма в валюте по умолчанию
${formatter.loadOperation(row.id).sum.sumInCurrency / 100}Сумма в валюте документа
${formatter.printAmount(formatter.getCurrency(row), formatter.loadOperation(row.id).sum.sumInCurrency)}Сумма в валюте документа прописью
${formatter.calcTotalAmount(formatter.getServices(formatter.loadOperation(row.id))) / 100}Сумма услуг
${formatter.calcTotalAmount(formatter.getGoods(formatter.loadOperation(row.id))) / 100}Сумма товаров
${row.payedSum / 100}Оплачено
${(row.sumTO.sum - row.payedSum) / 100}Осталось оплатить
${formatter.loadOperation(row.id).getPayments().iterator().next().name}Номер связанного платежа
${formatter.loadOperation(row.id).getPayments().iterator().next().moment}Дата связанного платежа

НДС

ФормулаЗначение
${formatter.printIfElse(formatter.calcVat(formatter.loadOperation(row.id).getPositions())>0, “с НДС  ”, “без НДС”)}с НДС или без НДС
${formatter.calcVat(formatter.loadOperation(row.id).getPositions())}Сумма НДС
${formatter.printAmount(formatter.getCurrency(row), formatter.calcVat(formatter.loadOperation(row.id).getPositions())*100)}Сумма НДС прописью

Количество

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Значения из Фильтра

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

ФормулаЗначение
${formatter.printIf(!empty(global_periodFilter.parameters[0].value), formatter.format(“%1td.td.%1tm.%1$tY”, formatter.getExcelDate(global_periodFilter.parameters[0].value)))}Период от
${formatter.printIf(!empty(global_periodFilter.parameters[1].value), formatter.format(“%1td.td.%1tm.%1$tY”, formatter.getExcelDate(global_periodFilter.parameters[1].value)))}Период до
${formatter.printIf(!empty(global_deliveryPeriodFilter.parameters[0].value), formatter.format(“%1td.td.%1tm.%1$tY”, formatter.getExcelDate(global_deliveryPeriodFilter.parameters[0].value)))}План. дата отгрузки от
${formatter.printIf(!empty(global_deliveryPeriodFilter.parameters[1].value), formatter.format(“%1td.td.%1tm.%1$tY”, formatter.getExcelDate(global_deliveryPeriodFilter.parameters[1].value)))}План. дата отгрузки до
${formatter.printIfElse(global_operationApprovalState.parameters[0].printValue==“false”, “Нет”, formatter.printIf(global_operationApprovalState.parameters[0].printValue==“true”, “Да”))}Проведено
${global_stateFilter.parameters[0].printValue}Статус
${salesChannelIdFilter.parameters[0].printValue}Канал продаж
${global_goodIdFilter.parameters[0].printValue}Товар или группа
${global_storeFilter.parameters[0].printValue}Склад
${global_contractFilter.parameters[0].printValue}Договор
${global_projectFilter.parameters[0].printValue}Проект
${global_agentSourceFilter.parameters[0].printValue}Контрагент
${global_agentSourceFilter_tag.parameters[0].printValue}Группа контрагента
${global_agentTargetFilter.parameters[0].printValue}Организация
${global_ownerFilter.parameters[0].printValue}Владелец-сотрудник
${global_ownerGroupFilter.parameters[0].printValue}Владелец-отдел