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