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

Формулы вывода данных в отчете Прибыльности

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

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

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

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

Формулы для отчета Прибыльности по товарам 

Поля из отчета

ФормулаЗначение
${row.goodRef.name}Наименование
${row.goodRef.code}Код
${row.productCode}Артикул
${row.out.quantity}Кол-во проданного
${row.out.sellAmount/100}Сумма проданного
${row.out.amount/100}Себестоимость проданного
${row.out.operationCount}Кол-во документов продаж
${row.returns.quantity}Кол-во возвратов
${row.returns.sellAmount/100}Сумма возвратов
${row.returns.amount/100}Себестоимость возвратов
${row.returns.operationCount}Кол-во документов возвратов
${(((row.out.sellAmount)-(row.out.amount))-((row.returns.sellAmount)-(row.returns.amount)))/100}Прибыль
${row.out.reward/100}Продажи → Комиссия
${row.returns.reward/100}Возвраты → Комиссия
${row.costReward/100}Возвраты → Комиссия из продаж
${row.stock.reward/100}Комиссия (для отчета с детализацией)

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

ФормулаЗначение
${row.goodRef.name}Наименование с учетом модификации
${formatter.loadGood(row.goodRef.id).name}Наименование без учета модификации
${row.modificationCode}Код с учетом модификации
${formatter.loadGood(row.goodRef.id).code}Код без учета модификации
${formatter.loadGood(row.goodRef.id).productCode}Артикул
${formatter.loadGood(row.goodRef.id).parent.name}Группа товара
${formatter.loadGood(row.goodRef.id).pathName}Все группы товара
${formatter.loadGood(row.goodRef.id).country.name}Страна
${row.uomName}Единица измерения, наименование
${formatter.loadGood(row.goodRef.id).uom.name}Единица измерения, наименование
${formatter.loadGood(row.goodRef.id).uom.code}Единица измерения, код
${formatter.loadGood(row.goodRef.id).weight}Вес
${formatter.loadGood(row.goodRef.id).volume}Объем
${formatter.loadGood(row.goodRef.id).vat}НДС, %
${formatter.loadGood(row.goodRef.id).minimumBalance}Неснижаемый остаток
${formatter.loadGood(row.goodRef.id).supplier.name}Поставщик
${formatter.loadGood(row.goodRef.id).description}Описание
${formatter.loadGood(row.goodRef.id).externalCode}Внешний код
${formatter.loadGood(row.goodRef.id).id}UUID

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

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

Упаковка

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

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

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

ФормулаЗначение
${formatter.loadFeature(row.featureId).name}Наименование характеристик
${formatter.loadFeature(row.featureId).code}Код
${formatter.loadFeature(row.featureId).description}Описание
${formatter.findAttribute(formatter.loadFeature(row.featureId), “Размер”).value}Характеристика:Размер
${formatter.loadFeature(row.featureId).externalCode}Внешний код
${formatter.loadFeature(row.featureId).id}UUID

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

Screenshot

Изображение

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

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

Штрихкод цифровой

ФормулаЗначение
${formatter.printIf(formatter.loadGood(row.goodRef.id).getBarcodes().size() > 0, formatter.loadGood(row.goodRef.id).defaultBarcode.barcode)}Штрихкод основного товара
${formatter.printIf(formatter.loadFeature(row.featureId).defaultConsignment.getBarcodes().size() > 0, formatter.loadFeature(row.featureId).defaultConsignment.defaultBarcode.barcode)}Штрихкод с учетом модификации
${formatter.printBarcodeList(formatter.loadFeature(row.featureId).defaultConsignment)}Все штрихкоды товара через запятую
${!empty(formatter.loadFeature(row.featureId).name) ? formatter.printIf(formatter.loadFeature(row.featureId).getBarcodes().size() > 1, formatter.loadFeature(row.featureId).getBarcodes().get(1).barcode) : formatter.printIf(formatter.loadGood(row.goodRef.id).getBarcodes().size() > 1, formatter.loadGood(row.goodRef.id).getBarcodes().get(1).barcode)}Второй штрихкод у учетом модификации

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

Цены

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

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

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

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

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

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

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

Формулы для отчета Прибыльности по товарам с детализацией

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

Такие же, как для отчета прибыльности по товарам

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

Такие же, как для отчета прибыльности по товарам

Упаковка

Такие же, как для отчета прибыльности по товарам.

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

ФормулаЗначение
${formatter.loadFeature(row.featureRef.id).name}Наименование характеристик
${formatter.loadFeature(row.featureRef.id).code}Код
${formatter.loadFeature(row.featureRef.id).description}Описание
${formatter.findAttribute(formatter.loadFeature(row.featureRef.id), “Размер”).value}Характеристика:Размер
${formatter.loadFeature(row.featureRef.id).externalCode}Внешний код
${formatter.loadFeature(row.featureRef.id).id}UUID

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

Screenshot

Изображение

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

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

Штрихкод цифровой

ФормулаЗначение
${formatter.printIf(formatter.loadGood(row.goodRef.id).getBarcodes().size() > 0, formatter.loadGood(row.goodRef.id).defaultBarcode.barcode)}Штрихкод основного товара
${formatter.printIf(formatter.loadFeature(row.featureRef.id).defaultConsignment.getBarcodes().size() > 0, formatter.loadFeature(row.featureRef.id).defaultConsignment.defaultBarcode.barcode)}Штрихкод с учетом модификации
${formatter.printBarcodeList(formatter.loadFeature(row.featureRef.id).defaultConsignment)}Все штрихкоды товара через запятую
${!empty(formatter.loadFeature(row.featureRef.id).name) ? formatter.printIf(formatter.loadFeature(row.featureRef.id).getBarcodes().size() > 1, formatter.loadFeature(row.featureRef.id).getBarcodes().get(1).barcode) : formatter.printIf(formatter.loadGood(row.goodRef.id).getBarcodes().size() > 1, formatter.loadGood(row.goodRef.id).getBarcodes().get(1).barcode)}Второй штрихкод у учетом модификации

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

Цены

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

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

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

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

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

Такие же, как для отчета прибыльности по товарам

Данные из документа продажи 

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

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

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

ФормулаЗначение
${formatter.loadOperation(row.deliveryID).name}Номер
${formatter.getExcelDate(formatter.loadOperation(row.deliveryID).moment)}Дата
${formatter.loadOperation(row.deliveryID).state.name}Статус
${formatter.loadOperation(row.deliveryID).description}Комментарий
${formatter.operationWeight(formatter.loadOperation(row.deliveryID))}Вес
${formatter.operationVolume(formatter.loadOperation(row.deliveryID))}Объем
${formatter.loadOperation(row.deliveryID).addressFull}Адрес доставки
${formatter.loadOperation(row.deliveryID).getOwnerName()}Владелец-сотрудник
${formatter.loadOperation(row.deliveryID).getGroupName()}Владелец-отдел
${formatter.loadOperation(row.deliveryID).sourceStore.name}Склад
${formatter.loadOperation(row.deliveryID).salesChannel.name}Канал продаж
${formatter.loadOperation(row.deliveryID).project.name}Проект
${formatter.loadOperation(row.deliveryID).contract.name}Номер договора
${formatter.getExcelDate(formatter.loadOperation(row.deliveryID).contract.moment)}Дата договора

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

ФормулаЗначение
${formatter.printIfElse(formatter.loadOperation(row.deliveryID).nonCash, formatter.printIfElse((formatter.loadOperation(row.deliveryID).sum.sum-formatter.loadOperation(row.deliveryID).noCashSum.sum) > 0, “Смешанная”, “Картой”),“Наличными”)}Способ оплаты
${formatter.loadOperation(row.deliveryID).retailStore.name}Наименование точки продаж
${formatter.loadOperation(row.deliveryID).retailStore.address}Адрес точки продаж

Суммы

ФормулаЗначение
${formatter.loadOperation(row.deliveryID).sum.sumInCurrency / 100}Общая сумма документа
${formatter.loadOperation(row.deliveryID).currency.name}Валюта документа
${formatter.loadOperation(row.deliveryID).tail.payedSum / 100}Общая оплаченная сумма документа
${formatter.calcVat(formatter.loadOperation(row.deliveryID).getPositions())}Общая сумма НДС документа

Дополнительные поля документа

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

Данные из карточки контрагента

В документе отгрузки/продажи 2 стороны — покупатель и ваша организация.

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

Например:

  • адрес из карточки покупателя — ${formatter.loadOperation(row.deliveryID).targetAgentRequisite.actualAddress}
  • адрес из карточки организации —${formatter.loadOperation(row.deliveryID).sourceAgentRequisite.actualAddress}

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

ФормулаЗначение
${formatter.loadOperation(row.deliveryID).targetAgent.name}Наименование 
${formatter.loadOperation(row.deliveryID).targetAgent.code}Код
${formatter.loadOperation(row.deliveryID).targetAgent.contact.phones}Телефон
${formatter.loadOperation(row.deliveryID).targetAgent.contact.email}E-mail
${formatter.loadOperation(row.deliveryID).targetAgent.state.name}Статус
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.actualAddress}Фактический адрес
${formatter.loadOperation(row.deliveryID).targetAgent.description}Комментарий
${formatter.loadAgent(formatter.loadOperation(row.deliveryID).targetAgent.id).tags}Группы
${formatter.getEmployeeForId(formatter.loadOperation(row.deliveryID).targetAgent.getOwnerId()).name}Владелец-сотрудник
${formatter.loadAgent(formatter.loadOperation(row.deliveryID).targetAgent.id).tail.balance / 100}Баланс

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

ФормулаЗначение
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.legalTitle} Полное наименование
${formatter.loadOperation(row.deliveryID).targetAgent.getCompanyType().name} Тип контрагента
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.legalAddress} Юридический адрес
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.INN} ИНН
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.KPP}КПП
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.okpo}ОКПО
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.ogrn}ОГРН
${formatter.loadOperation(row.deliveryID).targetAgentRequisite.ogrnip}ОГРНИП

Дополнительные поля из карточки контрагента

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

Формулы для отчета прибыльности по сотрудникам

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

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

ФормулаЗначение
${formatter.loadAgent(row.employeeRef.id).name}ФИО
${formatter.loadAgent(row.employeeRef.id).lastName}Фамилия
${formatter.loadAgent(row.employeeRef.id).firstName}Имя
${formatter.loadAgent(row.employeeRef.id).middleName}Отчество
${formatter.loadAgent(row.employeeRef.id).phone}Телефон
${formatter.loadAgent(row.employeeRef.id).email}E-mail
${formatter.loadAgent(row.employeeRef.id).description}Описание
${formatter.loadAgent(row.employeeRef.id).getGroupName()}Отдел

Дополнительные поля из карточки сотрудника

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

Формулы для отчета прибыльности по покупателям

Отчет прибыльности по покупателям отражает общие показатели продаж по каждому контрагенту из документа отгрузки/продажи. Данный отчет не содержит проданные наименования товаров. 

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

ФормулаЗначение
${formatter.loadAgent(row.agentRef.id).name}Наименование
${formatter.loadAgent(row.agentRef.id).code}Код
${formatter.loadAgent(row.agentRef.id).contact.phones}Телефон
${formatter.loadAgent(row.agentRef.id).contact.email}Email
${formatter.loadAgent(row.agentRef.id).requisite.actualAddress}Фактический адрес
${formatter.loadAgent(row.agentRef.id).description}Комментарий
${formatter.loadAgent(row.agentRef.id).tags}Группы
${formatter.loadAgent(row.agentRef.id).state.name}Статус
${formatter.loadAgent(row.agentRef.id).getOwnerName()}Владелец-сотрудник
${formatter.loadAgent(row.agentRef.id).getGroupName()}Отдел
${formatter.loadAgent(row.agentRef.id).discountCardNumber}Номер дисконтной карты

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

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

Банковские реквизиты

Основной счет:

ФормулаЗначение
${formatter.loadAgent(row.agentRef.id).requisite.account.BIC}БИК
 ${formatter.loadAgent(row.agentRef.id).requisite.account.bankName}Банк
${formatter.loadAgent(row.agentRef.id).requisite.account.bankLocation}Адрес
${formatter.loadAgent(row.agentRef.id).requisite.account.correspondentAccount}Корр. Счёт
${formatter.loadAgent(row.agentRef.id).requisite.account.accountNumber}Расчётный счет

Контактные лица

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

ФормулаЗначение
${formatter.loadAgent(row.agentRef.id).getContactPersons().get(0).name}ФИО
${formatter.loadAgent(row.agentRef.id).getContactPersons().get(0).position}Должность
${formatter.loadAgent(row.agentRef.id).getContactPersons().get(0).phone}Телефон
${formatter.loadAgent(row.agentRef.id).getContactPersons().get(0).email}E-mail
${formatter.loadAgent(row.agentRef.id).getContactPersons().get(0).description}Комментарий

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

Дополнительные поля из карточки покупателя

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

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

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

ФормулаЗначение
${formatter.printIf(!empty(periodFilter.parameters[0].value), formatter.format(“%1td.td.%1tm.%1$tY”, formatter.getExcelDate(periodFilter.parameters[0].value)))}Период от
${formatter.printIf(!empty(periodFilter.parameters[1].value), formatter.format(“%1td.td.%1tm.%1$tY”, formatter.getExcelDate(periodFilter.parameters[1].value)))}Период до
${formatter.printIf(global_entityTypeFilter.parameters[0].printValue==“Demand”, “Отгрузки”)}${formatter.printIf(global_entityTypeFilter.parameters[0].printValue==“RetailDemand”, “Розничные продажи”)}Тип
${salesChannelIdFilter.parameters[0].printValue}Канал продаж
${goodIdFilter.parameters[0].printValue}Товар или группа
${storeIdFilter.parameters[0].printValue}Склад
${global_retailStoreFilter.parameters[0].printValue}Точка продаж
${contractIdFilter.parameters[0].printValue}Договор
${projectIdFilter.parameters[0].printValue}Проект
${agentIdFilter.parameters[0].printValue}Контрагент
${agentIdFilter_tag.parameters[0].printValue}Группа контрагента
${organizationIdFilter.parameters[0].printValue}Организация