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