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

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

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

Для вывода списка позиций документа используются формулы цикла (перебора). Общим правилом создания цикла является наличие функции его начала, описания и окончания.

В шаблонах документов существует три варианта циклов: по позиции, по товару, по услугам.

<jx:forEach items="$\{o.positions\}" var="position"> </jx:forEach> \{/* по всем позициям документа */\} <jx:forEach items="$\{formatter.getGoods(o)\}" var="position"> </jx:forEach> \{/* только по Товарам */\} <jx:forEach items="$\{formatter.getServices(o)\}" var="position"> </jx:forEach> \{/* только по Услугам */\}

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

Основные поля из карточки товара

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

Поля позиций по документу

ФормулаЗначение
${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 && position.nullableVat != null, position.nullableVat + ”%”, “Без НДС”)}НДС, %
${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())}Сер.номера товаров
${formatter.printNameList(position.getCrptEnrolls())}Коды маркировки товаров
${formatter.printIfElse(position.good.type==“Kit”, “Комплект”, formatter.printIfElse(position.good.type==“Service”, “Услуга”, formatter.printIfElse(empty(position.consignment.feature.name),“Товар”,“Модификация”)))}Тип позиции

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

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

Изображение

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

Если необходим вывод второго по счету изображения из перечня, то в формуле изменяется значение get(0) на get(1), а >0 на >1. Для последующих изображений в формуле указывается значение get(n-1) и >n-1, где n — порядковый номер изображения.

Маркировка

ФормулаЗначение
${position.consignment.getTnvedCode()}ТН ВЭД
${formatter.getTargetGender(position.good)}Целевой пол

Упаковка

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

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

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

Штрихкод

Цифровой:

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

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

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

Цены

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

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

Дополнительная цена выводится по ее наименованию. Наименование цены необходимо вписать в кавычки — “Оптовая”. 

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

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

Дополнительная цена выводится по ее наименованию. Наименование цены необходимо вписать в кавычки — “Оптовая”. 

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

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

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

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

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

Региональные поля (Узбекистан)

Формулы для товаров, комплектов и услуг:

ФормулаТип поля
${position.good.ikpu}ИКПУ
${position.good.uomCode}Код упаковки ТАСНИФ
${position.good.barcodeTasnif}Штрихкод ТАСНИФ

Формулы для модификаций:

ФормулаТип поля
${position.consignment.feature.ikpu}ИКПУ
${position.consignment.feature.uomCode}Код упаковки ТАСНИФ
${position.consignment.feature.barcodeTasnif}Штрихкод ТАСНИФ