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