Ознакомьтесь с полным списком формул в статье Основные формулы вывода данных из документа.
Перечисленные ниже формулы выводятся в теле перебора по товарам.
<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} | |
${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} | |
${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} |
По аналогии можно выводить другие поля из карточки контрагента, перечень которых опубликован в отдельной статье.
Справочник — Товары
Формула | Поле в элементе справочника |
${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} | |
${formatter.findAttribute(formatter.loadOperation(row.id), "Наименование поля").employeeValue.description} | Описание |
Значения из Фильтра
Перечисленные ниже формулы выводят то значение, что было выбрано в Фильтре при формировании списка документов.
Формула | Значение |
${formatter.printIf(!empty(global_periodFilter.parameters[0].value), formatter.format("%1$td.%1$tm.%1$tY", formatter.getExcelDate(global_periodFilter.parameters[0].value)))} | Период от |
${formatter.printIf(!empty(global_periodFilter.parameters[1].value), formatter.format("%1$td.%1$tm.%1$tY", formatter.getExcelDate(global_periodFilter.parameters[1].value)))} | Период до |
${formatter.printIf(!empty(global_deliveryPeriodFilter.parameters[0].value), formatter.format("%1$td.%1$tm.%1$tY", formatter.getExcelDate(global_deliveryPeriodFilter.parameters[0].value)))} | План. дата отгрузки от |
${formatter.printIf(!empty(global_deliveryPeriodFilter.parameters[1].value), formatter.format("%1$td.%1$tm.%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} | Владелец-отдел |