Реквизит на форму в расширении

2022-02-10

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

Реквизит в расширении
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	ОсновнойМагазин = Элементы.Добавить("ОсновнойМагазин",Тип("ПолеФормы"),Элементы.ГруппаНаименованиеТипОбъекта);
	ОсновнойМагазин.Вид = ВидПоляФормы.ПолеФлажка;
	ОсновнойМагазин.ПутьКДанным = "Объект.ОсновнойМагазин";

КонецПроцедуры

В этом примере на форму элемента справочника "Магазины", добавляется новое поле "Основной магазин", значение хранится в новом реквизите расширения.

Программное добавление элемнта на форму

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

 ДобавляемыеРеквизиты   = Новый Массив;
 Реквизит_РозничнаяЦена = Новый РеквизитФормы("РозничнаяЦена", Новый ОписаниеТипов("Число"),	,"РозничнаяЦена");
 ДобавляемыеРеквизиты.Добавить(Реквизит_РозничнаяЦена);   
 ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	
 РозничнаяЦена = Элементы.Добавить("РозничнаяЦена",Тип("ПолеФормы"),Элементы.ГруппаВертикальНаименований);
 РозничнаяЦена.Вид = ВидПоляФормы.ПолеВвода;   
 РозничнаяЦена.ПутьКДанным = "РозничнаяЦена";     	

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