Расширения 1С 8.3

Экспериментируем в тонком клиенте, Бухгалтерия предприятия, редакция 3.0 (3.0.51.25) .

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

Добавили в расширение документ УстановкаЦенНоменклатуры. Далее добавляем ФормуДокумента.

Ревизит1 и Реквизит4 создаем исключительно программно в форме документа в Расширении. Реквизит1 добавляем к форме документа, а Реквизит4 добавляем к табличной части документа.


фотка 1

Ревизит2 добавлен явно в форме документа в Расширении.

фотка 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", Истина) - тоже не проходит.