Реквизит на форму в расширении
2022-02-10
Добавить форму в расширение конфигурации дело нехитрое. Но вот добавить в объект реквизит, а потом еще и использовать его на форме - задача уже посложнее. Основная проблема состоит в том, что после добавления реквизита и после добавления элемента на форму - указать новый реквизит в пути к данным элемента невозможно.
Поэтому добавлять элементы на форму в визуальном редакторе бессмысленно. Нужно добавлять их программно. Для этого нужно добавить в расширение процедуру "ПриСозданииНаСервереПосле" и произвести добавление элементов.
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
ОсновнойМагазин = Элементы.Добавить("ОсновнойМагазин",Тип("ПолеФормы"),Элементы.ГруппаНаименованиеТипОбъекта);
ОсновнойМагазин.Вид = ВидПоляФормы.ПолеФлажка;
ОсновнойМагазин.ПутьКДанным = "Объект.ОсновнойМагазин";
КонецПроцедуры
В этом примере на форму элемента справочника "Магазины", добавляется новое поле "Основной магазин", значение хранится в новом реквизите расширения.
Описанный выше способ позволяет не только отображать, но и хранить информацию. Кроме того, вам может понадобиться выводить какую либо информацию на форму, но не хранить ее в объекте. Для этого можно не добавлять реквизит в расширение, а добавить и реквизит и элемент программно.
ДобавляемыеРеквизиты = Новый Массив;
Реквизит_РозничнаяЦена = Новый РеквизитФормы("РозничнаяЦена", Новый ОписаниеТипов("Число"), ,"РозничнаяЦена");
ДобавляемыеРеквизиты.Добавить(Реквизит_РозничнаяЦена);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
РозничнаяЦена = Элементы.Добавить("РозничнаяЦена",Тип("ПолеФормы"),Элементы.ГруппаВертикальНаименований);
РозничнаяЦена.Вид = ВидПоляФормы.ПолеВвода;
РозничнаяЦена.ПутьКДанным = "РозничнаяЦена";
Вышеуказанный код добавляет на форму реквизит РозничнаяЦена и элемент РозничнаяЦена. Теперь можно запросом узнать розничную цену номенклатуры и вывести ее на форме.
