Как вывести и сгруппировать поле «Организация» в отчете по потерянным клиентам в 1С:УТ 11.5?

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

Разработка отчетов в системе компоновки данных (СКД) часто сопряжена с нюансами работы пакетов запросов и виртуальных таблиц. Типичная ситуация: программист добавляет поле в запрос, но оно не отображается в отчете или по нему не срабатывает группировка. Особенно это актуально для сложных аналитических отчетов, таких как «Потерянные клиенты» в конфигурации 1С:Управление торговлей 11.5. В этой статье мы подробно разберем, как правильно выстроить архитектуру такого отчета, чтобы все поля выводились корректно.

Анализируем выбор источника данных

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

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

Для корректного построения отчета по продажам и клиентам мы рекомендуем использовать регистр накопления ВыручкаИСебестоимостьПродаж. В этом регистре измерение Организация является базовым, что гарантирует корректную работу всех стандартных механизмов группировки.

Разбираем работу с пакетом запросов в СКД

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

Проанализируем структуру правильного пакета запросов для поиска потерянных клиентов:

Запрос 1: Получение клиентов прошлого периода (Базовый период)


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

Запрос 2: Получение клиентов текущего периода


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

Запрос 3: Итоговый выбор (Где чаще всего совершается ошибка)

Выясним причину, почему группировка не работает. В итоговом запросе необходимо явно выбрать поле Организация из временной таблицы. Если вы просто сделаете соединение по партнеру, но забудете пробросить организацию в список ВЫБРАТЬ, поле будет недоступно для настроек СКД.


ВЫБРАТЬ
    ВТ_ПрошлыйПериод.Организация КАК Организация,
    ВТ_ПрошлыйПериод.Партнер КАК Партнер,
    ВТ_ПрошлыйПериод.СуммаПрошлогоПериода КАК СуммаПрошлогоПериода
ИЗ
    ВТ_ПрошлыйПериод КАК ВТ_ПрошлыйПериод
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТекущийПериод КАК ВТ_ТекущийПериод
        ПО ВТ_ПрошлыйПериод.Партнер = ВТ_ТекущийПериод.Партнер
ГДЕ
    ВТ_ТекущийПериод.Партнер ЕСТЬ NULL

Методология поиска потерянных клиентов

Рассмотрим подробнее логику ЛЕВОГО СОЕДИНЕНИЯ. Чтобы найти «потерянных» клиентов, мы берем всех, кто совершал покупки в прошлом периоде (левая таблица), и пытаемся сопоставить их с теми, кто покупал в текущем (правая таблица). Условие ГДЕ ВТ_ТекущийПериод.Партнер ЕСТЬ NULL отфильтрует только тех, кто был в прошлом, но отсутствует в текущем.

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

Настройка СКД для корректного вывода

После того как запрос написан правильно, перейдем к настройкам схемы компоновки данных. Выполним следующие шаги:

  1. Вкладка «Наборы данных»: Проверьте, что у поля Организация заполнена колонка «Роль». Для него должно быть указано, что это Измерение. Это позволит СКД правильно рассчитывать итоги.
  2. Вкладка «Настройки» — Структура: Чтобы организация была «вверху», как заголовок группы, создайте новую группировку и выберите в ней поле Организация. Все остальные поля (Партнер, Сумма) должны находиться внутри этой группировки (как детальные записи или вложенные группировки).
  3. Выбранные поля: Убедитесь, что Организация добавлена в список выбранных полей на уровне группировки. Если поле добавлено только в итоговый отчет, но не в саму группировку, оно может не отображаться в заголовке.

Решение проблемы при наличии нескольких организаций

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

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

← На главную