При разработке прикладных решений на платформе «1С:Предприятие 8.3» нередко возникает необходимость динамически корректировать названия колонок в табличных частях или таблицах значений. Разработчики, переходящие с обычных форм на управляемые, часто сталкиваются с ошибками при попытке обратиться к колонкам привычным способом через саму таблицу.
В типовой ситуации на управляемой форме размещена таблица значений, для которой в конфигураторе уже заданы колонки и их начальные заголовки. Попытка программно изменить текст шапки через конструкцию вида ЭтаФорма.Элементы.Таблицамоя.Колонки... приводит к ошибке выполнения или недоступности свойства.
Причина такого поведения кроется в архитектурных различиях управляемого интерфейса:
ТаблицаФормы, а каждая колонка является самостоятельным элементом интерфейса — обычно объектом ПолеФормы или ГруппаФормы. У объекта ТаблицаФормы отсутствует свойство Колонки, поэтому прямое обращение через точку от имени таблицы не поддерживается платформой.Для изменения отображаемого текста в шапке колонки требуется обращаться непосредственно к элементу управления колонки и менять его свойство Заголовок. В зависимости от условий задачи применяются следующие подходы:
1. Прямое обращение по имени элемента формы
Если имя элемента колонки известно заранее и жестко задано в структуре элементов формы, доступ к нему осуществляется напрямую через коллекцию элементов формы:
Элементы.МояТаблицаКолонка1.Заголовок = "Новый заголовок";
Этот способ является наиболее простым и подтвержден на практике автором исходного обсуждения. Важно учитывать, что используется именно имя элемента управления на форме, которое не всегда совпадает с именем реквизита или путем к данным.
2. Обращение по динамическому имени
В случаях, когда имя колонки формируется программно, передается через переменную или вычисляется в алгоритме, используется обращение к коллекции элементов формы через квадратные скобки со строковым идентификатором:
Элементы[ИмяКолонки].Заголовок = "Новый заголовок";
Такой вариант поддерживается синтаксисом платформы и позволяет гибко обрабатывать списки элементов без использования жестко прописанных идентификаторов в тексте модуля.
3. Доступ через подчиненные элементы таблицы
Колонка визуально и структурно подчинена таблице формы. В ситуациях, когда требуется обойти элементы конкретной таблицы в цикле или ограничить область видимости поиска элементов пределами одной таблицы, возможен доступ через свойство подчиненных элементов родительской таблицы формы. В этом случае свойство Заголовок также изменяется у найденного элемента колонки.
При программной настройке элементов интерфейса рекомендуется учитывать следующие особенности управляемых форм:
Заголовок доступно для изменения как на сервере (например, в процедуре ПриСозданииНаСервере при инициализации формы), так и на стороне клиента в соответствующих обработчиках событий.