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