Как программно включить отображение именованных областей в табличном документе 1С?

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

При разработке отчетов и печатных форм в системе 1С:Предприятие часто возникает необходимость визуально выделить структуру макета. Одним из удобных инструментов для этого является отображение именованных областей (строк и колонок) непосредственно на экране, аналогично тому, как это делает разработчик при редактировании макета в конфигураторе. Пользователь или разработчик может включить этот режим интерактивно через меню Таблица — Имена — Отображение именованных строк/колонок. Однако при попытке автоматизировать это действие программно разработчики часто сталкиваются с трудностями.

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

В чем заключается главная ошибка разработчиков?

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


ТабДок = Новый ТабличныйДокумент;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Истина;
// Попытка включить отображение именованных областей:
ТабДок.ОтображатьИменаСтрокИКолонок = Истина; // Ошибка! Поле объекта не обнаружено

Попытка обратиться к свойству ОтображатьИменаСтрокИКолонок у самого объекта ТабличныйДокумент всегда будет приводить к ошибке времени выполнения. Причина кроется в архитектурном разделении платформы на данные (объект) и элементы интерфейса (формы).

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

Решение для управляемых форм (платформа 1С:Предприятие 8.3)

Если вы работаете в управляемом приложении (интерфейс «Такси» или стандартные управляемые формы платформы 8.3), то программное решение существует. Начиная с версии платформы 8.3.3, разработчики добавили необходимое свойство для элемента формы типа «Поле табличного документа».

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

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

Рассмотрим пример готового кода для процедуры вывода отчета на управляемой форме:


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

Обратите внимание на ключевой момент: мы устанавливаем свойство ОтображатьИменаСтрокИКолонок не у переменной ТабДок, а у элемента интерфейса Элементы.Результат.

Ограничения для обычных форм (платформа 1С:Предприятие 8.2 и старше)

Если ваша конфигурация работает на обычных (толстых) формах, то реализовать данную задачу полностью программными средствами платформы невозможно. Элемент управления ПолеТабличногоДокумента в старой технологии форм не имеет свойства ОтображатьИменаСтрокИКолонок в своем программном интерфейсе.

В этой ситуации у разработчика остаются следующие альтернативные варианты:

Связь со стандартными заголовками табличного листа

Проанализируем еще одну важную деталь, без которой отображение имен работать не будет. Даже если вы установите свойство ОтображатьИменаСтрокИКолонок в значение Истина, имена областей могут остаться невидимыми на экране. Это происходит в тех случаях, когда в поле табличного документа отключен показ стандартных заголовков (номеров строк 1, 2, 3... и буквенных обозначений колонок A, B, C...).

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


// Включаем отображение номеров строк и букв колонок
Элементы.ПолеТаблицы.ОтображатьЗаголовки = Истина;

// Включаем отображение названий именованных областей поверх стандартных заголовков
Элементы.ПолеТаблицы.ОтображатьИменаСтрокИКолонок = Истина;

Влияние режима «Только просмотр»

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

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

← На главную