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