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

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

Разработка на управляемых формах 1С требует понимания специфического механизма работы с метаданными формы. В отличие от обычных форм, где элементы можно было менять практически свободно, управляемые формы требуют строгого соблюдения серверного контекста и двухуровневого подхода: создание данных (реквизитов) и создание визуальных элементов.

Основные этапы добавления колонки

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

  1. Изменение структуры данных формы — добавление нового реквизита в массив реквизитов формы с последующим применением изменений через метод ИзменитьРеквизиты.
  2. Добавление визуального элемента — размещение элемента управления (например, ПолеФормы) на самой форме и связывание его с созданным реквизитом через свойство ПутьКДанным.

Разберем процесс на пошаговом примере

Предположим, у нас есть существующая табличная часть Товары и мы хотим добавить в нее колонку Вес. Рассмотрим алгоритм действий, который мы реализуем в серверной процедуре (обычно это происходит в обработчике ПриСозданииНаСервере или в специально созданной процедуре).


// 1. Создаем массив для новых реквизитов
МассивДобавляемыхРеквизитов = Новый Массив;

// 2. Описываем новый реквизит. 
// Важно указать путь к табличной части: "Объект.ИмяТабличнойЧасти"
ОписаниеТипаЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3));
НовыйРеквизит = Новый РеквизитФормы("Вес", ОписаниеТипаЧисло, "Объект.Товары", "Вес, т.");
МассивДобавляемыхРеквизитов.Добавить(НовыйРеквизит);

// 3. Применяем изменения к структуре формы
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

// 4. Добавляем элемент формы, чтобы он стал виден пользователю
НоваяКолонка = Элементы.Добавить("Вес", Тип("ПолеФормы"), Элементы.Товары);
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
НоваяКолонка.ПутьКДанным = "Объект.Товары.Вес";

Важные технические нюансы

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

Заключение

Программное изменение управляемой формы — это мощный инструмент, позволяющий сделать интерфейс гибким. Помните, что лучший момент для таких манипуляций — событие ПриСозданииНаСервере. Если вы вносите изменения позже, убедитесь, что форма уже инициализирована и готова к обновлению состава элементов. Следуя описанной структуре «Данные -> Элемент», вы сможете динамически расширять возможности ваших форм, не прибегая к лишним правкам в Конфигураторе.

← На главную