Разработка управленческих отчетов в конфигурации 1С:Управление торговлей, редакция 11 требует глубокого понимания архитектуры регистров накопления. В этой статье мы подробно разберем, как реализовать отчет, который покажет эффективность каждого менеджера по трем ключевым показателям: выручка, поступившие оплаты и новые заказы, с распределением по месяцам периода.
Для корректного сбора данных в УТ 11 нельзя ограничиваться одним регистром. Разберем, откуда именно мы будем получать показатели:
ВыручкаИСебестоимостьПродаж. Нам понадобится его виртуальная таблица Обороты. Именно здесь фиксируется чистый финансовый результат продаж.РасчетыСКлиентами (также используем таблицу Обороты).ЗаказыКлиентов.Рассмотрим пример запроса, который позволяет вытащить данные по выручке в разрезе менеджеров и документов. Проанализируем ситуацию: нам важно не просто получить общую сумму, но и связать ее с конкретными заказами для последующего соединения с оплатами.
Пример базового запроса к регистру выручки:
ВЫБРАТЬ
ВыручкаОбороты.Менеджер КАК Менеджер,
ВыручкаОбороты.ЗаказКлиента КАК ЗаказКлиента,
СУММА(ВыручкаОбороты.СуммаВыручкиОборот) КАК Выручка,
НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, МЕСЯЦ) КАК ПериодМесяц
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ВыручкаОбороты
СГРУППИРОВАТЬ ПО
ВыручкаОбороты.Менеджер,
ВыручкаОбороты.ЗаказКлиента,
НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, МЕСЯЦ)
Выясним важную техническую особенность: регистр ВыручкаИСебестоимостьПродаж фиксирует не только внешние продажи, но и передачи товаров между собственными организациями (интеркампани). Если их не исключить, данные в отчете будут завышены.
Для этого добавим в параметры виртуальной таблицы или в условие ГДЕ фильтр по хозяйственной операции. Разберем, как это сделать правильно:
ГДЕ
ВыручкаОбороты.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию)
И ВыручкаОбороты.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаТоваровМеждуОрганизациями)
Важный момент: Если ваша база использует схему "Интеркампани" активно, также проверьте исключение возвратов между организациями, чтобы получить чистую выручку по внешним клиентам.
Посмотрим на два способа реализации вывода данных по месяцам. Первый способ — через текст запроса с использованием ВЫБОР, что позволяет пользователю динамически менять периодичность (день, месяц, год). Рассмотрим этот пример:
ВЫБОР &Периодичность
КОГДА "Месяц" ТОГДА НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, МЕСЯЦ)
КОГДА "Год" ТОГДА НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, ГОД)
КОНЕЦ КАК НачалоПериода
Однако более правильным и современным методом в Системе компоновки данных является использование встроенных механизмов периодов. Для этого:
Период (день).ПериодМесяц, ПериодКвартал и так далее. Это позволит избежать громоздкого кода в запросе.Проанализируем распространенную ошибку: использование ЛЕВОЕ СОЕДИНЕНИЕ между выручкой и оплатами в одном запросе. Если на одну реализацию было три платежа, сумма выручки в результате соединения "раздуется" (продублируется трижды).
Чтобы этого избежать, в СКД рекомендуется использовать несколько наборов данных:
РасчетыСКлиентами.Свяжем их на вкладке "Связи наборов данных" по полям Менеджер и ЗаказКлиента. В этом случае СКД сама корректно рассчитает итоги по каждой таблице и объединит их в одну строку отчета без дублирования цифр.
Для того чтобы отчет выглядел наглядно (менеджеры в строках, а месяцы в колонках), выполним следующие настройки в схеме компоновки:
Менеджер (или Подразделение -> Менеджер).ПериодМесяц.Выручка, СуммаОплаты, КоличествоЗаказов.В поле ПериодМесяц желательно настроить формат вывода, чтобы вместо даты "01.01.2024 00:00:00" отображалось понятное "Январь 2024". Это делается в оформлении поля через форматную строку ДФ='MMMM yyyy'.
Рассмотрим ситуацию, когда в марте у менеджера не было продаж. По умолчанию март просто пропадет из колонок отчета. Чтобы сетка месяцев была непрерывной, воспользуемся функцией "Дополнение периода":
Период установим свойство "Дополнение периода".&НачалоПериода и &КонецПериода).Теперь, даже если данных за конкретный месяц нет, колонка в отчете останется, а в полях сумм будут стоять нули, что выглядит профессионально и удобно для анализа динамики.
Таким образом, комбинируя данные из нескольких регистров УТ 11 и используя мощные инструменты связей наборов данных в СКД, мы получаем гибкий и точный инструмент для контроля работы отдела продаж.