Отчеты и Аналитика · 12 мин
Как добавить детальные записи в отчет на СКД в 1С
Как добавить детальные записи в СКД 1С: настройка группировок, выбранных полей, ресурсов и иерархии. Пошаговая инструкция, типичные ошибки и проверка результата.
Детальные записи в системе компоновки данных (СКД) — это строки отчета без группировки: каждая строка результата запроса выводится отдельно, без свертки по какому-либо измерению. Именно они позволяют увидеть конкретные документы, номенклатуру или контрагентов «в разрезе», а не только итоговые цифры по группам. Без детальных записей отчет показывает только агрегированные данные, и пользователь не может провалиться до первичной информации.
Типичная ситуация: отчет построен с группировками «Организация» и «Месяц», показывает суммы продаж, а руководитель просит видеть под итогами список самих документов реализации. Решается это добавлением в структуру отчета элемента «Детальные записи» — либо внутри существующей группировки, либо как отдельной ветки структуры.
Ниже разобраны способы добавления детальных записей в конструкторе СКД, настройка их полей и ресурсов, влияние на производительность и типичные ошибки, из-за которых детальные строки не появляются или дублируются.
Что такое детальные записи и когда они нужны
В структуре СКД есть три базовых элемента: группировка, таблица и диаграмма. Группировка сворачивает данные по указанным полям и выводит итоги по ресурсам. Детальные записи — это вырожденный случай группировки без полей группировки: каждая строка набора данных выводится как есть. По сути, это самый нижний уровень дробления данных в отчете.
Детальные записи нужны, когда пользователь должен видеть первичные строки: номера и даты документов, конкретные товары внутри оборота по контрагенту, расшифровку суммы по проводкам. Без них расшифровка ячейки отчета невозможна или требует отдельного отчета.
Важно понимать разницу между детальными записями и иерархической группировкой. Иерархия по справочнику (например, по номенклатуре с группами) все равно агрегирует данные по элементам. Детальные записи не агрегируют ничего — это просто линейный список строк набора данных, отфильтрованный условиями родительской группировки.
Добавление детальных записей в настройках СКД
Основной способ — работа на закладке «Настройки» схемы компоновки данных в конструкторе. Откройте схему компоновки (в конфигураторе: макет отчета типа «Схема компоновки данных», кнопка «Открыть схему компоновки»), перейдите на закладку «Настройки».
- 1Откройте схему компоновки данных отчета и перейдите на закладку «Настройки»
- 2В дереве структуры выделите группировку, внутри которой нужны детальные строки (или корень «Отчет», если детали нужны без группировок)
- 3Нажмите кнопку добавления и выберите «Новая группировка», либо правой кнопкой — «Добавить» → «Детальные записи»
- 4В диалоге выбора поля группировки оставьте поле пустым и нажмите «ОК» — пустая группировка и есть детальные записи
- 5Выделите добавленный элемент и на закладке «Выбранные поля» отметьте поля, которые должны выводиться в детальных строках
- 6Сформируйте отчет и проверьте, что под итогами группировки появились детальные строки
Ключевой момент: «Детальные записи» — это группировка с пустым полем. Если в диалоге выбора поля вы случайно укажете какое-то поле, получится обычная группировка, и данные свернутся. Поэтому при добавлении через «Новая группировка» нажимайте «ОК» сразу, не выбирая поле.
Если детальные записи добавить в корень структуры (на один уровень с существующими группировками), отчет выведет сначала одну ветку, потом другую. Если добавить их внутрь группировки — детали будут раскрываться под каждой строкой группировки. Второй вариант чаще всего и требуется на практике.
Настройка выбранных полей и ресурсов для деталей
После добавления элемента «Детальные записи» важно правильно настроить его выбранные поля. Выделите элемент в структуре, перейдите на закладку «Выбранные поля» нижней части окна настроек и добавьте нужные поля: документ, номенклатура, количество, сумма и т.д. Поля берутся из набора данных — если поля нет в запросе или оно не помечено как доступное, в список выбора оно не попадет.
Обратите внимание на ресурсы. Если поле определено как ресурс (на закладке «Ресурсы» схемы) и для него задано выражение агрегирования, например Сумма(СуммаОборот), то в детальных записях ресурсы обычно выводятся без агрегации — как есть. Но если вы хотите видеть в деталях именно «сырые» значения, убедитесь, что в выбранные поля детальных записей добавлено само поле данных, а не только его агрегат.
Порядок колонок в детальных строках определяется порядком полей в списке выбранных полей — перетаскивайте их мышью или кнопками перемещения. Для читаемости имеет смысл ставить первыми идентифицирующие поля (дата, номер, контрагент), а числовые показатели — в конец.
Детальные записи в пользовательских настройках и в коде
Если отчет уже работает в режиме предприятия и менять схему нельзя, пользователь с правами настройки может добавить детальные записи сам. В форме отчета: «Ещё» → «Изменить вариант» (или «Настройки» → «Расширенные»), в структуре выделить нужную группировку и добавить вложенную группировку с пустым полем — механика та же, что в конструкторе. После этого вариант сохраняется под своим именем.
При программной доработке отчета детальные записи добавляются через объектную модель СКД. В настройках компоновщика создается группировка без полей:
НоваяГруппировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
НоваяГруппировка.Использование = Истина;
// Поля группировки не добавляем — это и есть детальные записи
Поле = НоваяГруппировка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Поле.Поле = Новый ПолеКомпоновкиДанных("Документ");
Тот же прием работает и при добавлении внутрь существующей группировки — только добавлять элемент нужно не в Настройки.Структура, а в коллекцию Структура найденной группировки. Найти нужную группировку удобно по имени или по полю группировки обходом дерева структуры.
Почему детальные записи не выводятся: диагностика
Самая частая жалоба — «добавил детальные записи, а отчет пустой или показывает только итоги». Причин несколько, и проверять их стоит в определенном порядке.
Как проверить результат
Элемент есть, флажок использования установлен
Элемент отключен флажком или добавлен не в ту ветку
Список заполнен, поля доступны в наборе данных
Список пуст или поля зачеркнуты как недоступные
Отбор не задан или пропускает строки
Отбор отсекает все строки детализации
Запрос возвращает детальные строки (проверить консолью запросов)
Запрос уже агрегирует данные — детализировать нечего
Отдельный случай — запрос набора данных уже содержит группировку (СГРУППИРОВАТЬ ПО) или итоги. Тогда в наборе данных физически нет детальных строк: СКД получает уже свернутые данные, и детальные записи покажут те же агрегаты. Решение — убрать агрегацию из запроса и переложить свертку на саму СКД через ресурсы.
Еще одна причина — поля детализации не включены в доступные поля. Если поле в запросе есть, но на закладке «Компоновка данных» → «Поля» (или в настройках полей набора) ему запрещено использование, выбрать его в детальных записях не получится. Проверьте также роли полей: поле-период, поле-счет и другие специальные роли влияют на то, как СКД обрабатывает значение.
Производительность и ограничения
Детальные записи резко увеличивают объем выводимых данных. Отчет, который с группировками выводит 50 строк итогов, с деталями может вывести сотни тысяч строк. Это влияет на время формирования, потребление памяти на сервере и удобство чтения.
Практические приемы снижения нагрузки: выносить детальные записи в отдельный вариант отчета («Продажи детально»), ограничивать период обязательным отбором, использовать параметры с обязательным заполнением. Также имеет смысл убрать из деталей лишние поля — каждая колонка добавляет объем результата.
Сравнение вариантов
Подходит для расшифровки итогов: под каждой строкой группы раскрываются её строки. Ограничение — объем результата растет пропорционально числу групп
Подходит для плоского реестра без итогов: реестр документов, список операций. Ограничение — нет агрегированных итогов по разрезам
Подходит для тяжелых отчетов: основной вариант с итогами работает быстро, детальный — по требованию. Ограничение — два варианта нужно поддерживать синхронно
Подходит, когда деталей очень много: по двойному клику открывается отдельный отчет с отбором. Ограничение — требует настройки обработки расшифровки
Альтернатива: вложенные группировки вместо деталей
Иногда вместо детальных записей правильнее добавить еще одну группировку по самому детальному измерению — например, по документу. Внешне результат похож, но есть отличия: группировка по документу свернет строки, если один документ встречается в наборе несколько раз, и покажет по нему итоги ресурсов. Детальные записи покажут каждую строку регистра отдельно, без какой-либо свертки.
Выбор зависит от задачи. Если нужен список документов с суммами — группировка по документу. Если нужны строки внутри документов (товары, проводки) — детальные записи. Часто их комбинируют: группировка «Документ», а внутри нее детальные записи по строкам табличной части.
Удобный прием для отладки: временно добавьте детальные записи в корень отчета с минимальным набором полей и сформируйте. Если детальные строки есть, а в рабочей структуре их нет — проблема в настройках ветки группировок (отборы, иерархия, связи наборов). Если строк нет и в корне — проблема в запросе или отборах уровня отчета.
Часто задаваемые вопросы
Как добавить детальные записи, если кнопка «Детальные записи» недоступна?
В конструкторе СКД отдельной кнопки может не быть — добавьте «Новую группировку» и в диалоге выбора поля нажмите «ОК», ничего не выбирая. Группировка без поля и является детальными записями. В дереве структуры она отобразится как «Детальные записи».
Почему в детальных записях выводятся не все документы группы?
Проверьте отборы: отбор, установленный на уровне группировки или детальных записей, действует и на детали. Также проверьте связи наборов данных, если их несколько: при левом соединении без корректной связи часть строк теряется. Наконец, убедитесь, что сам запрос возвращает все строки — проверьте его в консоли запросов с теми же параметрами.
Можно ли вывести итоги по детальным записям?
Детальные записи сами итогов не имеют, но итоги по ним выводятся в родительской группировке и в общих итогах отчета, если соответствующие ресурсы добавлены в выбранные поля этих уровней. Включите вывод общих итогов в настройках: «Параметры вывода» → «Расположение общих итогов по вертикали».
Как скрыть детальные записи по умолчанию, но оставить возможность их включить?
Снимите флажок использования у элемента «Детальные записи» в структуре — он останется в настройках, но не будет выводиться. Пользователь сможет включить его в режиме настройки. Либо создайте два варианта отчета: с деталями и без.
Детальные записи дублируют строки — в чем причина?
Дубли возникают, когда в схеме несколько наборов данных, связанных соединением, и связь настроена по неполному набору полей: одна строка основного набора стыкуется с несколькими строками подчиненного. Проверьте закладку «Связи наборов данных» и состав полей связи. Также дубли возможны при соединении таблиц в самом запросе по неуникальному ключу.
Можно ли добавить детальные записи в отчет, построенный без СКД?
Нет, механизм детальных записей — часть системы компоновки данных. Если отчет построен программно на запросе и табличном документе, детализацию придется выводить вручную в коде либо переводить отчет на СКД. Для большинства типовых отчетов переход на СКД оправдан именно возможностями настройки структуры без доработки кода.
Что важно запомнить
Детальные записи — это группировка СКД с пустым полем, добавляемая внутрь группировки или в корень структуры. Для них отдельно настраиваются выбранные поля. Если детали не выводятся, проверяйте использование элемента, отборы, доступность полей и отсутствие агрегации в запросе. Для больших данных выносите детализацию в отдельный вариант отчета.