Как создать общую шапку для нескольких колонок в табличной части на обычных формах?

Программист 1С v8.3 (Обычные формы) Промышленность, строительство и АПК
← На главную

В разработке на обычных формах 1С часто возникает задача визуально сгруппировать несколько колонок табличной части под одним общим заголовком. Например, объединить колонки «Количество» и «Единица измерения» под общей шапкой «Норма выдачи». Сложность заключается в том, что при добавлении колонки для общего заголовка в строках таблицы появляется лишнее, пустое поле для ввода, которое нужно скрыть.

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

Шаг 1: Настройка расположения колонок в конфигураторе

Первая часть решения заключается в правильной настройке свойств колонок в редакторе формы. Это позволит нам создать визуальную структуру шапки. Давайте разберем этот процесс на примере.

  1. Добавление основной колонки-шапки. В дереве элементов формы вашей табличной части создайте новую колонку. Она будет служить общим заголовком. Назовем ее, к примеру, НормаВыдачиНаГод. Важно: эта колонка должна располагаться в списке колонок перед теми, которые она будет объединять.
  2. Настройка первой дочерней колонки. Выделите первую колонку, которая должна находиться под общей шапкой (например, Количество). В палитре свойств найдите свойство Положение и установите для него значение «На следующей строке». Это действие визуально «подвинет» колонку Количество под нашу общую шапку НормаВыдачиНаГод.
  3. Настройка остальных дочерних колонок. Для второй и последующих колонок, которые должны располагаться в том же ряду, что и первая (например, ЕдИзмерения), установите свойство Положение в значение «В той же колонке».
  4. Отключение лишних заголовков. Чтобы дочерние колонки (Количество, ЕдИзмерения) не имели собственных заголовков, просто очистите значение их свойства Заголовок в палитре свойств.

После выполнения этих шагов вы увидите в форме нужную визуальную структуру: общая шапка и под ней сгруппированные колонки. Однако в каждой строке табличной части под этой шапкой появится пустое поле ввода от колонки НормаВыдачиНаГод. Наша следующая задача — убрать его.

Шаг 2: Скрытие поля ввода с помощью кода

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

Идея проста: в момент, когда 1С будет отрисовывать очередную строку таблицы, мы программно сделаем ячейку в нашей колонке-шапке невидимой.

Для этого создадим обработчик одного из событий для нашего табличного поля.

Решение с использованием события ПриПолученииДанных

Это событие обрабатывает сразу пакет строк, поэтому для изменения оформления каждой из них потребуется цикл. Этот способ был найден автором вопроса на форуме.


Процедура МояТабличнаяЧастьПриПолученииДанных(Элемент, ОформленияСтрок)

    // Перебираем все строки, которые платформа готовит к отображению
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
    
        // Обращаемся к ячейке по имени колонки, созданной на шаге 1,
        // и устанавливаем ее видимость в Ложь.
        ОформлениеСтроки.Ячейки.НормаВыдачиНаГод.Видимость = Ложь;
        
    КонецЦикла;

КонецПроцедуры

Альтернативное решение с использованием события ПриВыводеСтроки

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


Процедура МояТабличнаяЧастьПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    // Скрываем ячейку в текущей выводимой строке, оставляя видимой только шапку.
    // "НормаВыдачиНаГод" - это имя (идентификатор) нашей колонки-шапки.
    ОформлениеСтроки.Ячейки.НормаВыдачиНаГод.Видимость = Ложь;

КонецПроцедуры

Итог и дополнительные рекомендации

Мы успешно решили задачу. Комбинация визуальной настройки свойств колонок и программного скрытия ячеек в событии — это стандартный и надежный метод для создания многоуровневых шапок в табличных частях на обычных формах.

На что еще стоит обратить внимание:

Таким образом, даже без встроенных инструментов группировки, которые есть в управляемых формах, можно добиться нужного визуального представления данных, применив немного изобретательности и кода.

← На главную