При построении отчетов в 1С:Предприятие часто возникает задача проведения АВС-анализа. Классический подход предполагает использование функции КлассификацияАВС, которая ранжирует данные по одному ресурсу. Однако на практике часто требуется учитывать сразу несколько параметров, например, сумму продаж и количество проданных товаров. Рассмотрим, как решить эту задачу, не прибегая к сложному программированию в цикле.
Функция КлассификацияАВС в СКД ожидает один числовой показатель, по которому будет строиться накопленный итог. Если вы попытаетесь применить её одновременно к сумме и количеству, система не сможет определить приоритет, так как эти показатели имеют разные единицы измерения и разную значимость. Для решения этой проблемы мы используем логическое выражение ВЫБОР.
Чтобы классифицировать товар, учитывая и сумму, и количество, мы можем рассчитать класс для каждого показателя отдельно, а затем сравнить их. В качестве критерия выбора можно использовать правило «худшего» или «лучшего» показателя. Разберем подробнее, как прописать это в вычисляемом поле ресурса:
Для создания такого условия перейдем в настройки СКД, добавим новое вычисляемое поле и в выражении ресурса пропишем следующую логику:
ВЫБОР
КОГДА КлассификацияABC("Сумма(СуммаВыручкиОборот)", 3, "20,50", "Номенклатура") <
КлассификацияABC("Сумма(КоличествоОборот)", 3, "20,50", "Номенклатура")
ТОГДА КлассификацияABC("Сумма(СуммаВыручкиОборот)", 3, "20,50", "Номенклатура")
ИНАЧЕ КлассификацияABC("Сумма(КоличествоОборот)", 3, "20,50", "Номенклатура")
КОНЕЦ
Здесь мы используем функцию КлассификацияАВС дважды. В данном примере мы сравниваем результаты классификации и выбираем тот показатель, который дает наиболее строгое значение (в системе АВС 1-й класс - это А, 2-й - В, 3-й - С, поэтому оператор «меньше» возвращает класс с более высоким приоритетом).
"Сумма(Показатель)" — ресурс, по которому ведется расчет.3 — количество групп классификации (А, В, С)."20,50" — границы диапазонов в процентах. В данном случае: до 20% — класс А, от 20% до 50% — класс В, свыше 50% — класс С."Номенклатура" — группировка, в рамках которой рассчитываются итоги.Если отчет с большим количеством номенклатур начинает работать медленно из-за двойного вычисления функции в каждой строке, рекомендуем следующие подходы:
(Сумма * 0.7 + КолВо * 0.3)) и передать полученный результат в функцию КлассификацияАВС. Это значительно ускорит выполнение отчета.Конструкторе запроса. Рассчитайте общую сумму и доли для каждой записи до того, как данные попадут в СКД. Это позволит СКД просто вывести уже готовое поле Класс без дополнительных вычислений «на лету».Использование конструкции ВЫБОР внутри ресурсов СКД — это мощный инструмент, позволяющий гибко управлять ранжированием товаров. Мы убедились, что классификация по нескольким признакам возможна, если мы предварительно определяем правило сравнения результатов. Этот метод позволяет сделать отчет более информативным, не перегружая при этом конфигурацию программным кодом в модулях формы.
Помните, что при настройке параметров "20,50" важно следить за корректностью синтаксиса: отсутствие кавычек или неправильное количество параметров приведет к ошибке формирования отчета. Всегда проверяйте, чтобы переданные значения соответствовали количеству групп, указанному во втором аргументе функции.