Как правильно настроить ABC-классификацию в отчете СКД и почему функция возвращает пустые значения?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При разработке аналитических отчетов в системе компоновки данных (СКД) одной из частых задач является проведение ABC-анализа. Платформа 1С предлагает для этого встроенную функцию КлассификацияABC, однако начинающие разработчики часто сталкиваются с ситуацией, когда колонка с классами остается пустой. Рассмотрим подробно, как избежать типичных ошибок и заставить этот механизм работать корректно.

Разбираем синтаксис функции КлассификацияABC

Для начала проанализируем саму функцию и ее параметры. В СКД расчет классификации производится с помощью выражения, которое обычно прописывается на закладке Ресурсы. Синтаксис выглядит следующим образом:

КлассификацияABC(Выражение, КоличествоГрупп, Проценты, ПолеГруппировки)

Разберем назначение каждого параметра:

Пример корректного выражения в ресурсах:

КлассификацияABC("Сумма(Выручка)", 3, "80, 15, 5", "Номенклатура")

Выясняем причину пустых значений: проблема детальных записей

Проанализируем типичную ситуацию: программист верно прописал выражение в ресурсах, но в результате отчета колонка «Класс» пуста. Основная причина кроется в структуре настроек отчета на закладке Настройки. Если в структуре используются Детальные записи, функция работать не будет.

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

Решение: В структуре отчета необходимо заменить «Детальные записи» на группировку по тому полю, которое указано в параметрах функции (например, по Номенклатура). Только на уровне группировки СКД сможет рассчитать ресурс и присвоить ему категорию.

Пошаговая настройка ресурсов

Рассмотрим по шагам, как правильно настроить закладку «Ресурсы», чтобы расчет был точным:

  1. Переходим на закладку Ресурсы.
  2. Добавляем основное поле (например, Выручка) с выражением Сумма(Выручка).
  3. Добавляем новое поле для класса (например, КлассABC).
  4. В колонке «Выражение» пишем нашу функцию: КлассификацияABC("Сумма(Выручка)", 3, "80, 15, 5", "Номенклатура")
  5. Важный момент: В колонке «Рассчитывать по...» обязательно выберите только ту группировку, для которой предназначен расчет (в нашем примере — Номенклатура). Не оставляйте это поле пустым и не выбирайте «Общий итог», иначе расчет может не выполниться.

Важность сортировки данных

Проанализируем еще один нюанс, который часто упускают. Алгоритм ABC-анализа строится на расчете накопленного итога. Чтобы накопленный итог соответствовал логике «от большего к меньшему», данные должны быть отсортированы.

Перейдем в настройки отчета на закладку Сортировка. Здесь необходимо добавить поле, по которому ведется расчет (например, Выручка), и установить направление По убыванию. Без явной сортировки система может распределить классы случайным образом, что сделает анализ бессмысленным.

Обработка пустых значений и нулевых итогов

Посмотрим на ситуацию, когда в данных присутствуют значения NULL или нулевые обороты. Если ресурс для конкретной позиции равен нулю, встроенная функция может вернуть некорректный результат или оставить ячейку пустой. Чтобы этого избежать, рекомендуем обрабатывать значения еще на уровне запроса:


ВЫБРАТЬ
    Продажи.Номенклатура КАК Номенклатура,
    ЕСТЬNULL(Продажи.СуммаОборот, 0) КАК Выручка
ИЗ
    РегистрНакопления.Продажи.Обороты КАК Продажи

Это гарантирует, что функция классификации всегда будет работать с числовыми данными.

Визуализация результата через условное оформление

Чтобы отчет был читаемым, настроим цветовое выделение групп. Класс «A» традиционно выделяют красным или жирным шрифтом, «B» — желтым, «C» — зеленым.

Рассмотрим, как это сделать:

  1. В настройках отчета перейдем на закладку Условное оформление.
  2. Добавим новое оформление (например, Цвет фона = Светло-зеленый).
  3. В условии укажем: КлассABC Равно 3 (или «C», в зависимости от того, как возвращает значение функция в вашей версии конфигурации).
  4. В оформляемых полях выберем поле КлассABC.

Повторим эти действия для всех трех групп. Таким образом, мы получим наглядный инструмент для принятия управленческих решений.

Альтернатива: расчет через запрос

Если встроенная функция КлассификацияABC не подходит под ваши специфические задачи (например, нужно вывести класс именно в детальных записях или использовать сложную логику процентов), можно реализовать классификацию в самом тексте запроса. Это сложнее, но дает полный контроль. Алгоритм будет следующим:

  1. Создаем временную таблицу с суммами по объектам.
  2. Вычисляем общую сумму по всем объектам.
  3. Соединяем таблицу саму с собой по условию Т1.Сумма <= Т2.Сумма для получения нарастающего итога.
  4. Вычисляем процент накопленного итога от общей суммы.
  5. Через оператор ВЫБОР присваиваем буквенный код группы.

Однако для большинства стандартных задач в УТ 11.4 или ERP вполне достаточно корректно настроенной функции в СКД, если соблюдать правила работы с группировками и ресурсами, которые мы разобрали выше. При необходимости интерактивного проведения расчетов без изменения конфигурации можно использовать обработку для платформенного анализа данных на базе СКД.

← На главную