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

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

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

В прайс-листе нельзя вывести остатки, резервы и ожидания.

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

<jx:forEach items="${o.positions}" var="row"> // формула по товару </jx:forEach>

Стандартный шаблон отчета выводится с группировкой по категориям товара. В этом случае используется двойной перебор.

<jx:forEach items="${o.positions}" groupBy="category"> ${group.item.category} <jx:forEach items="${group.items}" var="row"> // формула по товару </jx:forEach> </jx:forEach>

Поля прайс-листа

Основные поля прайс-листа

ФормулаЗначение
${o.name}Название прайс-листа
${formatter.getExcelDate(o.moment)}Дата прайс-листа
${o.state.name}Статус
${o.description}Описание
${formatter.printIf(o.applicable, “Да”)}Проведено

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

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

Организация из прайс-листа

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

В прайс-листе есть только организация, контрагента нет.

Поля из карточки товара

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

ФормулаЗначение
${row.printName}Наименование
${row.good.name}Наименование без учета модификации
${row.good.code}Код
${row.good.productCode}Артикул
${row.good.parent.name}Группа
${row.good.country.name}Страна
${row.good.uom.name}Единица измерения наименование
${row.good.uom.code}Единица измерения код
${row.good.weight}Вес
${row.good.volume}Объем
${row.good.vat}НДС, %
${row.good.minimumBalance}Неснижаемый остаток
${row.good.supplier.name}Поставщик
${row.good.description}Описание

Модификация товара

ФормулаЗначение
${row.consignment.feature.name}Наименование
${row.consignment.feature.code}Код
${row.consignment.feature.description}Описание
${formatter.findAttribute(row.getConsignment(). getFeature(), “Цвет”).value}Характеристика:цвет
${row.consignment.feature.externalCode}Внешний код
${row.consignment.feature.id}Uuid

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

ФормулаЗначение
${row.good.externalCode}Внешний код
${row.good.id}Uuid
${formatter.printIfElse(row.good.archived==“true”, “Да”, “Нет”)}Архивный

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

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

Упаковка

ФормулаЗначение
${formatter.loadGood(row.good.id).getGoodPacks() .get(0).uom.name}Наименование упаковки
${formatter.loadGood(row.good.id).getGoodPacks() .get(0).uom.code}Код упаковки
${formatter.loadGood(row.good.id).getGoodPacks() .get(0).quantity}Количество ед. в упаковке
${formatter.printIf(!empty(formatter.loadGood(row.good.id).getGoodPacks().get(0).uom.name), formatter.loadGood(row.good.id).getGoodPacks().get(0).defaultBarcode.barcode)}Штрихкод упаковки

Изображение

Первое по счету:

ФормулаЗначение
${!row.good.isService() ? formatter.printIfElse(row.good.getImages().size()>0, formatter.image(row.good.getImages().get(0)), formatter.getNotFoundPicture()) : formatter.getNotFoundPicture()}Изображение основного товара по размеру ячейки
${!row.good.isService() ? formatter.printIfElse(row.good.getImages().size()>0, formatter.image(row.good.getImages().get(0), true), formatter.getNotFoundPicture()) : formatter.getNotFoundPicture()}Изображение основного товара в оригинальном размере
${!row.good.isService() ? formatter.printIfElse(row.consignment.feature.getImages().size()>0, formatter.image(row.consignment.feature.getImages().get(0)), formatter.getNotFoundPicture()) : formatter.getNotFoundPicture()}Изображение модификации товара по размеру ячейки
${!row.good.isService() ? formatter.printIfElse(row.consignment.feature.getImages().size()>0, formatter.image(row.consignment.feature.getImages().get(0), true), formatter.getNotFoundPicture()) : formatter.getNotFoundPicture()}Изображение модификации товара в оригинальном размере
${!row.good.isService() ? row.consignment.feature.getImages().size()>0 ? formatter.image(row.consignment.feature.getImages().get(0)) : formatter.printIfElse(row.good.getImages().size()>0, formatter.image(row.good.getImages().get(0)), formatter.getNotFoundPicture()) : formatter.getNotFoundPicture()}Изображение позиции по размеру ячейки
${!row.good.isService() ? row.consignment.feature.getImages().size()>0 ? formatter.image(row.consignment.feature.getImages().get(0), true) : formatter.printIfElse(row.good.getImages().size()>0, formatter.image(row.good.getImages().get(0), true), formatter.getNotFoundPicture()) : formatter.getNotFoundPicture()}Изображение позиции в оригинальном размере

Если необходим вывод второго по счету изображения из перечня, то в формуле изменяется значение get(0) на get(1).

Штрихкод

Цифровой:

ФормулаЗначение
${row.good.defaultBarcode.barcode}Штрихкод товара
${row.consignment.feature.defaultBarcode.barcode}Штрихкод модификации
${formatter.printIfElse(row.consignment.feature != null, row.consignment.feature.defaultBarcode.barcode, row.good.defaultBarcode.barcode)}Штрихкод с проверкой на наличие модификации
${formatter.getBarcode(row)}Штрихкод позиции

Графический:

ФормулаЗначение
${barcode4j.generateCode(row.good.defaultBarcode. barcodeType, row.good.defaultBarcode.barcode ,null, null, “0.3”, “9”, null, null, null, null, null, null)}Штрихкод товара
${barcode4j.generateCode (row.consignment.feature.defaultBarcode.barcodeType, row.consignment.feature.defaultBarcode.barcode ,null, null, “0.3”, “9”, null, null, null, null, null, null)}Штрихкод модификации
${formatter.printIfElse(row.consignment.feature != null, barcode4j.generateCode (row.consignment.feature.defaultBarcode.barcodeType, row.consignment.feature.defaultBarcode.barcode ,null, null, “0.3”, “9”, null, null, null, null, null, null), barcode4j.generateCode(row.good.defaultBarcode.barcodeType, row.good.defaultBarcode.barcode ,null, null, “0.3”, “9”, null, null, null, null, null, null))}Штрихкод с проверкой на наличие модификации

Цены

Основного товара:

ФормулаЗначение
${formatter.loadGood(row.good.id).minPrice / 100}Минимальная цена
${formatter.loadGood(row.good.id).buyPrice/100}Закупочная цена
${formatter.loadGood(row.good.id).buyCurrency.name}Валюта закупочной цены
${formatter.loadGood(row.good.id).salePrice/100}Цена продажи
${formatter.loadGood(row.good.id).saleCurrency.name}Валюта цены продажи
${formatter.loadGood(row.good.id).salePrices. findPrice(“Опт”).value / 100}Дополнительная цена продажи (“Опт”)
${formatter.loadGood(row.good.id) .salePrices.findPrice(“Опт”).currency.name}Валюта цены продажи (“Опт”)

С учетом цен модификаций:

ФормулаЗначение
${formatter.loadConsignment(row.consignment.id). feature.effectiveMinPrice/100}Минимальная цена
${formatter.loadConsignment(row.consignment.id). feature.effectiveBuyPriceValue/100}Закупочная цена
${formatter.loadConsignment(row.consignment.id) .feature.effectiveBuyPriceCurrency.name}Валюта закупочной цены
${formatter.loadConsignment(row.consignment.id). feature.effectiveSalePrice/100}Цена продажи
${formatter.loadConsignment(row.consignment.id) .feature.effectiveSalePrices.defaultPrice.currency.name}Валюта цены продажи
${formatter.loadConsignment(row.consignment.id). feature.effectiveSalePrices.findPrice(“Опт”).priceValue/100}Дополнительная цена продажи (“Опт”)
${formatter.loadConsignment(row.consignment.id) .feature.effectiveSalePrices.findPrice(“Опт”).currency.name}Валюта цены продажи (“Опт”)

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

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

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

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

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