Как вывести номера группировок в табличном документе 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При программном формировании отчетов или печатных форм в среде 1С:Предприятие часто возникает задача не просто сгруппировать строки, но и предоставить пользователю удобный интерфейс для управления этими группировками. В частности, речь идет о цифрах (1, 2, 3...), которые позволяют одним кликом сворачивать или разворачивать документ до нужного уровня. Разберем подробно, как добиться появления этих элементов управления в Управляемых формах и какие технические нюансы стоит учитывать.

Стандартный механизм отображения уровней

Начнем с анализа штатного поведения платформы. Многие разработчики сталкиваются с ситуацией: группировки в коде созданы (использованы методы Сгруппировать()), «плюсики» и «минусики» слева от строк появились, а заветных кнопок с цифрами над областью группировок — нет.

Проанализируем причину. В системе 1С кнопки управления уровнями не являются самостоятельным элементом; они жестко привязаны к служебной области заголовков. Чтобы они стали видимыми, необходимо активировать два свойства элемента формы, в котором отображается табличный документ:

  1. Отображать заголовки — кнопки уровней физически рисуются в «шапке» на пересечении линеек заголовков строк и колонок.
  2. Отображать группировки — собственно разрешение на показ элементов управления структурой.

Рассмотрим, как это сделать программно. Важно помнить: настраивать нужно не сам объект ТабличныйДокумент (результат), а именно Элемент формы, который его выводит на экран. В Управляемом приложении код будет выглядеть следующим образом:


// Предположим, что ТабДок — это имя реквизита формы с типом ТабличныйДокумент
// А Элементы.ТабДок — это элемент управления на форме

Элементы.ТабДок.ОтображатьГруппировки = Истина;
Элементы.ТабДок.ОтображатьЗаголовки = Истина;

Если выставить ОтображатьЗаголовки в значение Ложь, стандартные кнопки уровней исчезнут, даже если сами группировки (линии и значки развертывания) останутся. Это ключевое ограничение платформы, которое часто заставляет разработчиков искать альтернативные пути.

Программное управление уровнями группировок

Выясним, как управлять сворачиванием строк из кода. Для этого у объекта ТабличныйДокумент существует метод ПоказатьУровеньГруппировокСтрок(). Рассмотрим важный нюанс: индексация уровней здесь начинается с нуля.

Для автоматизации этого процесса полезно знать общее количество уровней, которое было сформировано. Его можно получить через свойство КоличествоУровнейГруппировокСтрок.

Создание собственных кнопок управления (Кастомная панель)

Бывают ситуации, когда дизайн отчета не предполагает наличие стандартных заголовков (номеров строк 1, 2, 3... и колонок A, B, C...), но кнопки управления уровнями необходимы. В этом случае мы можем реализовать собственную панель управления. Проанализируем пример реализации, который позволяет динамически создавать кнопки в зависимости от сложности отчета.

Хотя в современных управляемых формах кнопки лучше добавлять в командную панель визуально, иногда требуется именно динамическая отрисовка. Посмотрим на логику процесса:


// Процедура для генерации кнопок (пример логики для динамического интерфейса)
КоличествоГруппировок = Результат.КоличествоУровнейГруппировокСтрок;

Для Сч = 1 По КоличествоГруппировок Цикл
    // Создаем команду или кнопку программно
    НоваяКнопка = Элементы.Добавить("КнопкаУровня" + Сч, Тип("КнопкаФормы"), ГруппаКнопок);
    НоваяКнопка.Заголовок = Строка(Сч);
    НоваяКнопка.ИмяКоманды = "КомандаУправленияУровнем";
КонецЦикла;

В обработчике нажатия такой кнопки мы будем использовать заголовок, чтобы понять, какой уровень отобразить:


&НаКлиенте
Процедура КомандаУправленияУровнем(Команда)
    // Извлекаем уровень из имени или заголовка нажатой кнопки
    НужныйУровень = Число(Команда.Заголовок) - 1; 
    Результат.ПоказатьУровеньГруппировокСтрок(НужныйУровень);
КонецПроцедуры

Тонкости настройки внешнего вида

Рассмотрим дополнительные свойства, которые влияют на удобство работы пользователя с таблицей:

  1. ГруппировкиСверху: Если установить это свойство в значение Истина, значки управления («плюс»/«минус») будут находиться над блоком строк. Если в Ложь — под блоком (обычно в строке итогов). Большинство пользователей привыкло к расположению «сверху».
  2. Автоматическое отображение: У свойства ОтображатьГруппировки есть режим Авто. В этом режиме кнопки появятся только в том случае, если в документе физически присутствуют группы. Однако при программном выводе рекомендуется принудительно устанавливать Истина, чтобы избежать ошибок обновления интерфейса в момент формирования.
  3. Фиксация: Если ваш отчет очень большой, используйте свойства ФиксацияСверху или ФиксацияСлева. При прокрутке документа кнопки уровней группировок, расположенные в области заголовков, останутся видимыми, если они попадают в зафиксированную зону.

Важный момент для Управляемых Форм: Если вы программно создаете табличный документ на сервере и возвращаете его на клиент, убедитесь, что после присвоения документа элементу формы вы принудительно обновили свойства отображения. Иногда состояние ОтображатьЗаголовки может «сбрасываться» при полной перезаписи объекта ТабличныйДокумент.

Таким образом, мы выяснили, что видимость цифр уровней напрямую зависит от видимости заголовков. Если же заголовки мешают эстетическому виду отчета, оптимальным решением станет создание собственной панели кнопок в командной панели формы, использующей метод ПоказатьУровеньГруппировокСтрок().

← На главную