Как изменить заголовки и шапку табличного документа на форме в 1С

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

В практике разработки на платформе 1С:Предприятие 8 (особенно на управляемых формах) часто встречается задача изменения шапки или заголовков табличного документа, который расположен непосредственно на форме. Разработчики нередко сталкиваются с ситуацией, когда в режиме «1С:Предприятие» и в окне предпросмотра конфигуратора таблица с заголовками отображается корректно, но при попытке открыть свойства реквизита через Объект -> Настройка -> Открыть открывается пустая табличная сетка без нужных заголовков, а сами ячейки недоступны для редактирования.

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

Причина 1. Отключен режим редактирования табличного документа в конфигураторе

Самая банальная и частая причина, по которой невозможно изменить ячейки встроенного табличного документа — это режим «Только просмотр», активированный для редактора по умолчанию. Когда мы открываем табличный документ через свойства реквизита формы, платформа может заблокировать интерактивное изменение ячеек.

Разберем по шагам, как активировать режим редактирования:

  1. В конфигураторе откройте управляемую форму, на которой расположен табличный документ.
  2. Перейдите к реквизитам формы, найдите нужный реквизит с типом ТабличныйДокумент.
  3. Нажмите кнопку Настройка -> Открыть (или дважды кликните по реквизиту), чтобы открылось окно редактора поля табличного документа.
  4. Обратите внимание на главное меню конфигуратора. Перейдите в пункт меню: Таблица -> Вид -> Редактирование.
  5. Убедитесь, что напротив пункта Редактирование установлена галочка. Если ее нет — нажмите на этот пункт. После этого ячейки станут доступны для ввода текста и изменения оформления.

Причина 2. Защита ячеек табличного документа

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

  1. Выделите ячейку с заголовком, которую вам нужно отредактировать.
  2. Нажмите клавишу F4, чтобы открыть палитру свойств выделенной ячейки.
  3. Найдите свойство Защита. Если там стоит значение Истина, снимите этот флаг.
  4. Также обратите внимание на свойство Содержит значение. Если оно включено, ячейка может быть привязана к определенному типу данных, что мешает простому редактированию текста заголовка. При необходимости отключите этот параметр для редактирования статического текста.

Причина 3. Локальные макеты самой управляемой формы

Очень часто разработчики ищут макеты печатных форм в основной ветке метаданных объекта (например, самого документа или отчета). Однако в управляемом интерфейсе макет может быть интегрирован непосредственно в саму форму.

Проверим наличие локальных макетов формы:

  1. В дереве метаданных конфигуратора найдите ваш объект (документ, обработку или отчет) и раскройте ветку Формы.
  2. Откройте форму, на которой отображается табличный документ.
  3. В правой части окна конфигуратора (там, где расположены вкладки «Элементы», «Реквизиты», «Команды») переключитесь на вкладку Макеты (она находится в самом низу под деревом реквизитов формы).
  4. Если там присутствует макет типа ТабличныйДокумент, значит, шапка и структура таблицы берутся именно оттуда. Откройте этот макет двойным кликом и внесите необходимые изменения в заголовки.

Причина 4. Программное формирование шапки в модуле формы

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

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

  1. Перейдите на вкладку Модуль нужной управляемой формы.
  2. Найдите предопределенные процедуры ПриСозданииНаСервере или ПриОткрытии.
  3. Выполните глобальный поиск (сочетание клавиш Ctrl + Shift + F) по имени реквизита вашего табличного документа (например, АдресТабличногоДокумента, ТабДок или Результат).

Рассмотрим пример кода, который может отвечать за программное заполнение шапки:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Получаем макет из общих макетов или макетов объекта
    Макет = ПолучитьОбщуюСхемуИлиМакет();
    
    Если Макет <> Неопределено Тогда
        ОбластьШапка = Макет.ПолучитьОбласть("ШапкаТаблицы");
        // Заполняем параметры шапки программно, если требуется
        ОбластьШапка.Параметры.ИмяКолонки1 = "Новое Название Колонки";
        
        // Выводим область в наш реквизит формы типа ТабличныйДокумент
        Элементы.ТабличныйДокументФормы.Вывести(ОбластьШапка);
    КонецЕсли;
    
КонецПроцедуры

Если вы обнаружили подобный код, то изменять заголовки нужно либо в исходном макете, откуда получается область (это может быть ветка Общие -> Общие макеты), либо непосредственно переопределяя параметры области программным путем перед выводом на экран.

Причина 5. Динамическая подгрузка бланков из базы данных (БСП)

В современных типовых конфигурациях (особенно в блоках регламентированной отчетности или при использовании подсистемы «Печать» БСП) бланки документов могут храниться прямо в пользовательской базе данных в виде двоичных данных или файлов MXL. Для работы с ними пригодится инструкция по редактированию печатных форм в программах 1С.

Посмотрим, как изменить такие заголовки без изменения конфигурации:

Рекомендуемый подход к разработке

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

Правильным решением будет перевести логику на использование полноценных макетов:

  1. Создайте структурированный макет (объекта или формы).
  2. Именуйте области (например, Шапка, Строка, Подвал).
  3. Выводите эти области программно через методы ПолучитьОбласть() и Вывести().

Это позволит вам легко менять любые заголовки в будущем, просто редактируя макет в удобном визуальном редакторе 1С.

← На главную