Ознакомьтесь с полным списком формул в статье Основные формулы вывода данных из документа.
Отчет прибыльности разделен на несколько печатных отчетов. Для каждого отчета свои формулы.
Перечисленные ниже формулы выводятся в теле перебора по товарам.
<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 |
При использовании формул с учетом модификаций товаров, отчет прибыльности необходимо разбить по модификациям.
Изображение
Формула | Значение |
${!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 |
При использовании формул с учетом модификаций товаров, отчет прибыльности необходимо разбить по модификациям.
Изображение
Формула | Значение |
${!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} | |
${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} | |
${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} | |
${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} | |
${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("%1$td.%1$tm.%1$tY", formatter.getExcelDate(periodFilter.parameters[0].value)))} | Период от |
${formatter.printIf(!empty(periodFilter.parameters[1].value), formatter.format("%1$td.%1$tm.%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} | Организация |