При работе в современных конфигурациях на платформе 1С (таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация 2 или 1С:Управление торговлей 11) пользователи часто сталкиваются с задачей анализа продаж или взаиморасчетов в разрезе сегментов клиентов. Однако при попытке настроить стандартные отчеты (например, ведомость расчетов с партнерами или отчет по продажам) выясняется, что добавить группировку по сегментам в настройках компоновки данных невозможно — доступен только отбор.
В этой статье мы подробно разберем, почему разработчики фирмы 1С сознательно наложили такое ограничение на систему компоновки данных (СКД), к каким ошибкам в учете может привести обход этого ограничения и какие существуют архитектурно правильные альтернативные варианты решения данной задачи.
Проанализируем механику работы сегментов. В конфигурациях 1С связь между справочником Партнеры и сегментами строится по принципу «многие-ко-многим». Это означает, что один и тот же клиент (партнер) может одновременно входить в неограниченное количество сегментов. Например, «Дядя Вадя» может одновременно являться участником сегментов «Оптовые покупатели», «Проблемные клиенты» и «Региональные дилеры».
Представим, что мы все-таки добавили жесткую группировку по сегментам в отчет по задолженности. Если «Дядя Вадя» должен нашей компании 10 000 рублей, то в отчете с группировкой по сегментам мы увидим следующую картину:
При подсчете общего итога по отчету система СКД просуммирует эти строки, и итоговая задолженность превратится в 30 000 рублей вместо реальных 10 000 рублей. Обычный менеджер или руководитель, посмотрев на такой отчет, получит недостоверные данные о дебиторской задолженности компании. Именно поэтому стандартная группировка по сегментам в типовых отчетах не предусмотрена.
Рассмотрим по шагам несколько эффективных способов решения этой проблемы, которые позволяют получить необходимую аналитику без искажения финансовых результатов.
Самый простой и методологически верный способ, не требующий изменения конфигурации — использование отборов в настройках отчета.
Сегмент партнеров (или Сегмент клиентов).В списке или Равно и выберем интересующий нас сегмент.При таком подходе отчет выведет точные и корректные суммы по конкретной выборке клиентов, полностью исключая риск дублирования строк и искажения общего итога.
Если для бизнес-анализа вам жизненно необходима именно жесткая группировка (иерархия строк) в отчете, то сегменты для этой цели не подходят. Вместо них мы рекомендуем использовать механизм Дополнительных реквизитов для справочника Партнеры.
В отличие от сегментов, дополнительный реквизит гарантирует связь «один-к-одному» (или «многие-к-одному»). У одного партнера может быть заполнено только одно значение конкретного реквизита.
Разберем процесс настройки по шагам:
Партнеры и добавим новый дополнительный реквизит, например, «Основная категория клиента» с типом значения «Дополнительное значение».Партнер и выбрать наш дополнительный реквизит Основная категория клиента.Поскольку у каждого клиента может быть только одна категория, суммы в отчете сгруппируются идеально, без какого-либо задвоения итогов.
Если пользователи категорически настаивают на том, чтобы видеть сегменты клиентов непосредственно в строках отчета по продажам, программист может доработать схему компоновки данных. Но вместо создания группировки мы применим технический обход: выведем все сегменты, в которые входит клиент, в одну строку через запятую.
Для реализации этого метода выполним следующие действия в СКД:
ПартнерыВСегментах.СписокСегментов.СписокСегментов как ресурс и в поле Выражение напишем специальную агрегатную функцию СКД:
СоединитьСтроки(ТаблицаЗначений(Сегмент))
Такое решение позволит вывести в отчет красивую и информативную колонку: например, напротив контрагента «Дядя Вадя» в колонке «Сегменты» будет выведено «Оптовики, Проблемные». При этом сама строка в отчете останется единственной, и итоговая сумма долга в 10 000 рублей не задвоится.
Анализируя работу с отборами по сегментам, важно учитывать еще один нюанс платформы. Стандартный отбор по сегментам в СКД работает по логике «ИЛИ». То есть, если вы укажете в отборе два сегмента («Опт» и «VIP»), система выведет клиентов, которые принадлежат хотя бы к одному из этих сегментов.
Если же перед вами стоит задача найти пересечение сегментов — то есть отобрать клиентов по логике «И» (клиент должен быть одновременно и в сегменте «Опт», и в сегменте «Проблемные»), стандартными настройками отчета этого сделать не удастся. Для решения этой специфической задачи потребуется привлечение программиста 1С для написания вложенного запроса к таблице регистра РегистрСведений.ПартнерыВСегментах.
Таким образом, мы убедились, что кажущееся неудобство типовой конфигурации 1С на самом деле является продуманной защитой от грубых ошибок в финансовой отчетности предприятия. Используя предложенные альтернативные варианты (отборы или дополнительные реквизиты), вы сможете получить качественную и достоверную аналитику.