Пример с добавлением колонки в существующую таблицу, если бы мы выполняли его средствами визуального конструирования, выглядел бы следующим образом.
Сначала мы добавим подчиненный реквизит формы типа Строка (рис. 3.223).

Рис. 3.223. Добавление реквизита формы
После этого добавим элемент формы Поле как подчиненный элемент существующей в форме таблицы (рис. 3.224).

Рис. 3.224. Добавление элемента формы
Затем свяжем между собой элемент формы и реквизит формы (рис. 3.225).

Рис. 3.225. Связь элемента и реквизита
В заключение для элемента формы назначим обработчик события При изменении, который заранее заготовлен в модуле нашей формы (рис. 3.226).

Рис. 3.226. Назначение обработчика события
Теперь все те же самые действия выполним программно, из встроенного языка.
Примечание
Пример можно посмотреть в демонстрационной базе «Программное изменение формы», общая форма Форма, команда Добавить колонку в таблицу. Это локальная команда этой формы.
Как и раньше, модификацию формы будем выполнять в серверной контекстной процедуре. Сначала добавим реквизит формы РеквизитКолонкаЗанятость (листинг 3.177).
Листинг 3.177. Добавление реквизита формы
// Добавить реквизит.
ТипыРеквизита = Новый Массив;
ТипыРеквизита.Добавить(Тип("Строка"));
ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(ТипыРеквизита);
НовыйРеквизит = Новый РеквизитФормы("РеквизитКолонкаЗанятость", // имя
ОписаниеТиповДляРеквизита, // тип
"РеквизитТаблицаЗначений", // путь
"Занятость", // заголовок
Истина); // сохраняемые данные
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Здесь особенность в том, что при добавлении реквизита мы указываем параметр Путь – РеквизитТаблицаЗначений. Поскольку добавляемый реквизит подчинен существующему в форме реквизиту, в этом параметре нужно указать полный путь от корня реквизитов до добавляемого нами реквизита, не включая имя самого добавляемого реквизита.
В результате мы имеем состояние, показанное на рисунке 3.223.
После этого добавим элемент формы (листинг 3.178).
Листинг 3.178. Добавление элемента формы
// Добавить элемент формы и связать его с реквизитом.
НовыйЭлемент = Элементы.Добавить("КолонкаЗанятость", Тип("ПолеФормы"), Элементы.ЭлементТаблицаЗначений);
Здесь та же особенность. При добавлении элемента мы указываем его родителя – элемент Таблица, существующий в форме Элементы.ЭлементТаблицаЗначений.
В результате мы имеем состояние, показанное на рисунке 3.224.
Теперь свяжем элемент формы с реквизитом формы и установим некоторые свойства элемента формы (листинг 3.179).
Листинг 3.179. Связь элемента с реквизитом и установка свойств элемента
НовыйЭлемент.ПутьКДанным = "РеквизитТаблицаЗначений.РеквизитКолонкаЗанятость";
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.КнопкаОчистки = Истина;
В результате мы имеем состояние, показанное на рисунке 3.225.
В заключение назначим обработчик события для только что добавленного элемента формы (листинг 3.180).
Листинг 3.180. Назначение обработчика события
// Установить обработчик события.
НовыйЭлемент.УстановитьДействие("ПриИзменении", "ОбработчикПриИзмененииКолонкиЗанятость");
В результате мы имеем состояние, показанное на рис. 3.226.
После этого можно запустить систему в режиме 1С:Предприятие и посмотреть, как работает наша команда Добавить колонку в таблицу.
В результате ее выполнения в существующей в форме таблице появится колонка Занятость. А когда мы изменим данные в этой колонке, новое значение поля будет выведено в окно сообщений – отработает назначенный нами обработчик При изменении (рис. 3.227).

Рис. 3.227. Дополнительная колонка в таблице значений