Экспериментируем в тонком клиенте, Бухгалтерия предприятия, редакция 3.0 (3.0.51.25) .
Пример документа, в котором надо в форму добавить новый реквизит, в табличную часть добавить новую колонку, программно установить им значения и т.д. Все это можно сделать через расширение конфигурации.
Добавили в расширение документ УстановкаЦенНоменклатуры. Далее добавляем ФормуДокумента.
Ревизит1 и Реквизит4 создаем исключительно программно в форме документа в Расширении. Реквизит1 добавляем к форме документа, а Реквизит4 добавляем к табличной части документа.
Ревизит2 добавлен явно в форме документа в Расширении.
Реквизит3 явно добавлен в Форме документа в ветку реквизитов Объект / Табличная часть . Он будет появляться в таблице Товары.
- В модуле ФормыДокументы добавляем Реквизит1 и Реквизит2 к имеющейся форме, и Реквизит3 к табличные :
- &НаСервере
- мм1 = Новый Массив;
- //здесь обычные реквизиты Реквизит1 , Реквизит2, ...
- Реквизит1 = Новый РеквизитФормы("Реквизит1", Новый ОписаниеТипов("Строка"), , "Реквизит1", Истина);
- мм1.Добавить(Реквизит1);
- .....
- //здесь Реквизит4 - реквизит табличной части
- Реквизит4 = Новый РеквизитФормы("Реквизит4", Новый ОписаниеТипов("Строка"),"Объект.Товары" , "Реквизит4", Истина);
- мм1.Добавить(Реквизит4);
- ....
- ИзменитьРеквизиты(мм1);
- //----------- связываем реквизиты с элементами формы-------------------------------
- Элемент = ЭтаФорма.Элементы.Добавить("Реквизит1", Тип("ПолеФормы"), ЭтаФорма);
- Элемент.Вид = ВидПоляФормы.ПолеВвода;
- Элемент.ПутьКДанным = "Реквизит1";
- Элемент = ЭтаФорма.Элементы.Добавить("Реквизит2", Тип("ПолеФормы"), ЭтаФорма);
- Элемент.Вид = ВидПоляФормы.ПолеВвода;
- Элемент.ПутьКДанным = "Реквизит2";
- ...
- Элемент = ЭтаФорма.Элементы.Добавить("Реквизит3", Тип("ПолеФормы"), Этаформа.Элементы.Товары);
- Элемент.Вид = ВидПоляФормы.ПолеВвода;
- Элемент.ПутьКДанным = "Объект.Товары.Реквизит3";
Теперь для заполнения колонки Реквизит3 достаточно на Сервере сделать так (без предварительного кода сразу ссылаемся на Объект.Товары :
Для каждого стр из Объект.Товары цикл
стр.Реквизит3 = 123;
КонецЦикла;
Для установки значения Реквизит1(или Реквизит2) делаем на Сервере так ЭтаФорма["Реквизит1"]="34231432432" (эту возможность я искал 3 часа в интернете). ЗначениеВРеквизитФормы("вопыорвоап","Реквизит1") - не катит.
Создать изначально в Объекте Реквизит1 = Новый РеквизитФормы("Реквизит1", Новый ОписаниеТипов("Строка"),"Объект" , "Реквизит1", Истина) - тоже не проходит.