Как в 1С:УТ 11 правильно собрать данные для отчета по выручке, оплатам и заказам через СКД?

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

При разработке отчетов в системе «1С:Предприятие 8», особенно в таких сложных конфигурациях, как «Управление торговлей 11» (УТ 11), начинающие разработчики часто совершают классическую ошибку — пытаются собирать данные напрямую из документов ЗаказКлиента или РеализацияТоваровУслуг. Рассмотрим, почему это неэффективно, и разберем правильный архитектурный подход к созданию отчета, объединяющего показатели выручки, оплат и заказов.

Почему нельзя делать отчет по документам?

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

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

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

Рассмотрим ключевые поля этого регистра:

  1. СуммаВыручки: общая сумма продажи. Важно помнить, что по умолчанию она включает НДС.
  2. Количество: объем проданного товара.
  3. АналитикаУчетаПоПартнерам: через это поле мы получаем доступ к Клиенту (Партнеру), Контрагенту и Организации.
  4. ЗаказКлиента: если продажа велась по заказу, это поле будет заполнено, что позволит нам связать данные.

Проанализируем пример запроса к этому регистру:


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

Шаг 2. Получаем данные по Заказам клиентов

Для анализа заказов нам потребуется регистр накопления ЗаказыКлиентов. Здесь важно понимать цель: если нам нужно увидеть, на какую сумму были созданы заказы в выбранном периоде, мы используем таблицу Обороты (приход по регистру). Если же мы хотим увидеть остатки невыполненных обязательств, нам нужна таблица Остатки.

Выясним причину, по которой стоит использовать именно обороты: отчет для менеджера обычно подразумевает анализ эффективности за период — «сколько заказов менеджер принял в работу». В этом случае мы берем ресурс Сумма из оборотов по приходу.

Шаг 3. Самый сложный этап — Оплаты

Оплаты в УТ 11 фиксируются в регистрах расчетов. Самым надежным источником является регистр РасчетыСКлиентами или РасчетыСКлиентамиПоДокументам. Оплата в системе — это уменьшение долга клиента перед нами.

Посмотрим на структуру данных:

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

Шаг 4. Объединение данных в Системе компоновки данных (СКД)

Теперь выясним, как собрать эти три разных потока данных (Выручка, Заказы, Оплаты) в одну таблицу. В СКД существует два основных способа: объединение запросов в одном наборе данных через ОБЪЕДИНИТЬ ВСЕ или использование нескольких наборов данных с последующей связью.

Рассмотрим более гибкий вариант с объединением (UNION ALL):

  1. Создаем первый запрос к выручке, выбираем поля (Партнер, Заказ, Выручка, 0 как СуммаЗаказа, 0 как СуммаОплаты).
  2. Объединяем со вторым запросом к заказам (Партнер, Заказ, 0 как Выручка, СуммаЗаказа, 0 как СуммаОплаты).
  3. Объединяем с третьим запросом к оплатам (Партнер, Заказ, 0 как Выручка, 0 как СуммаЗаказа, СуммаОплаты).

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

Шаг 5. Тонкости и настройки (чек-лист)

Проанализируем детали, которые часто упускают из виду:

Таким образом, используя виртуальные таблицы оборотов регистров ВыручкаИСебестоимостьПродаж, ЗаказыКлиентов и РасчетыСКлиентами, мы создаем надежный и быстрый инструмент для анализа работы отдела продаж, который будет устойчив к изменениям в документах и корректно отобразит финансовую картину предприятия.

← На главную