Как построить отчет по продажам, оплатам и заказам в разрезе менеджеров и месяцев в 1С:Управление торговлей 11 на СКД

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

Разработка управленческих отчетов в конфигурации 1С:Управление торговлей, редакция 11 требует глубокого понимания архитектуры регистров накопления. В этой статье мы подробно разберем, как реализовать отчет, который покажет эффективность каждого менеджера по трем ключевым показателям: выручка, поступившие оплаты и новые заказы, с распределением по месяцам периода.

Шаг 1. Определяем источники данных

Для корректного сбора данных в УТ 11 нельзя ограничиваться одним регистром. Разберем, откуда именно мы будем получать показатели:

  1. Выручка: Основным источником является регистр накопления ВыручкаИСебестоимостьПродаж. Нам понадобится его виртуальная таблица Обороты. Именно здесь фиксируется чистый финансовый результат продаж.
  2. Оплаты: Данные о поступлении денежных средств в привязке к заказам или реализациям лучше всего брать из регистра РасчетыСКлиентами (также используем таблицу Обороты).
  3. Заказы: Объем новых заказов, принятых менеджером, анализируется по регистру ЗаказыКлиентов.

Шаг 2. Формирование запроса для получения выручки

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

Пример базового запроса к регистру выручки:


ВЫБРАТЬ
    ВыручкаОбороты.Менеджер КАК Менеджер,
    ВыручкаОбороты.ЗаказКлиента КАК ЗаказКлиента,
    СУММА(ВыручкаОбороты.СуммаВыручкиОборот) КАК Выручка,
    НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, МЕСЯЦ) КАК ПериодМесяц
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ВыручкаОбороты
СГРУППИРОВАТЬ ПО
    ВыручкаОбороты.Менеджер,
    ВыручкаОбороты.ЗаказКлиента,
    НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, МЕСЯЦ)

Шаг 3. Исключение внутренних продаж (Интеркампани)

Выясним важную техническую особенность: регистр ВыручкаИСебестоимостьПродаж фиксирует не только внешние продажи, но и передачи товаров между собственными организациями (интеркампани). Если их не исключить, данные в отчете будут завышены.

Для этого добавим в параметры виртуальной таблицы или в условие ГДЕ фильтр по хозяйственной операции. Разберем, как это сделать правильно:


ГДЕ
    ВыручкаОбороты.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию)
    И ВыручкаОбороты.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаТоваровМеждуОрганизациями)

Важный момент: Если ваша база использует схему "Интеркампани" активно, также проверьте исключение возвратов между организациями, чтобы получить чистую выручку по внешним клиентам.

Шаг 4. Настройка периодичности в СКД

Посмотрим на два способа реализации вывода данных по месяцам. Первый способ — через текст запроса с использованием ВЫБОР, что позволяет пользователю динамически менять периодичность (день, месяц, год). Рассмотрим этот пример:


ВЫБОР &Периодичность 
    КОГДА "Месяц" ТОГДА НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, МЕСЯЦ) 
    КОГДА "Год" ТОГДА НАЧАЛОПЕРИОДА(ВыручкаОбороты.Период, ГОД) 
КОНЕЦ КАК НачалоПериода

Однако более правильным и современным методом в Системе компоновки данных является использование встроенных механизмов периодов. Для этого:

  1. В запросе выбираем поле Период (день).
  2. На закладке "Роли" для этого поля указываем тип периода — "День".
  3. СКД автоматически предложит производные поля: ПериодМесяц, ПериодКвартал и так далее. Это позволит избежать громоздкого кода в запросе.

Шаг 5. Объединение данных (Выручка + Оплаты)

Проанализируем распространенную ошибку: использование ЛЕВОЕ СОЕДИНЕНИЕ между выручкой и оплатами в одном запросе. Если на одну реализацию было три платежа, сумма выручки в результате соединения "раздуется" (продублируется трижды).

Чтобы этого избежать, в СКД рекомендуется использовать несколько наборов данных:

Свяжем их на вкладке "Связи наборов данных" по полям Менеджер и ЗаказКлиента. В этом случае СКД сама корректно рассчитает итоги по каждой таблице и объединит их в одну строку отчета без дублирования цифр.

Шаг 6. Настройка внешнего вида (Кросс-таблица)

Для того чтобы отчет выглядел наглядно (менеджеры в строках, а месяцы в колонках), выполним следующие настройки в схеме компоновки:

  1. Перейдем на вкладку "Настройки".
  2. Создадим структуру типа "Таблица".
  3. В "Строки" добавим группировку по полю Менеджер (или Подразделение -> Менеджер).
  4. В "Колонки" добавим группировку по полю ПериодМесяц.
  5. В "Выбранные поля" перетащим наши ресурсы: Выручка, СуммаОплаты, КоличествоЗаказов.

В поле ПериодМесяц желательно настроить формат вывода, чтобы вместо даты "01.01.2024 00:00:00" отображалось понятное "Январь 2024". Это делается в оформлении поля через форматную строку ДФ='MMMM yyyy'.

Шаг 7. Решение проблемы пустых периодов

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

  1. В настройках набора данных для поля Период установим свойство "Дополнение периода".
  2. Укажем начало и конец периода (свяжем их с параметрами отчета &НачалоПериода и &КонецПериода).

Теперь, даже если данных за конкретный месяц нет, колонка в отчете останется, а в полях сумм будут стоять нули, что выглядит профессионально и удобно для анализа динамики.

Таким образом, комбинируя данные из нескольких регистров УТ 11 и используя мощные инструменты связей наборов данных в СКД, мы получаем гибкий и точный инструмент для контроля работы отдела продаж.

← На главную