Как программно добавить реквизит (поле) на форму 1С через расширение

Советую прочитать, как программно добавить кнопку на форму в расширении.

Представим, что у объекта документ уже есть реквизит БылаПредоплата, так как это реквизит объекта, а не формы, то обращение к нему выглядит следующим образом: Объект.БылаПредоплата.

Сам документ уже должен быть добавлен в расширение конфигурации:

Добавление документа 1С в расширение

Создадим в расширении процедуру Расширение_ПриСозданииНаСервереПосле

Процедура ПриСозданииНаСервереПосле в расширении 1С

И пропишем следующий код:

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

Несмотря на то, что мы добавляем флажок с видом ПолеФлажка, все равно тип элемента формы в нашем случае Поле формы, вот список возможных элементов с данным типом:

  • ПолеHTMLДокумента
  • ПолеВвода
  • ПолеГеографическойСхемы
  • ПолеГрафическойСхемы
  • ПолеДендрограммы
  • ПолеДиаграммы
  • ПолеДиаграммыГанта
  • ПолеИндикатор
  • ПолеКалендарь
  • ПолеКартинки
  • ПолеНадписи
  • ПолеПереключателя
  • ПолеПланировщика
  • ПолеПолосыРегулирования
  • ПолеТабличногоДокумента
  • ПолеТекстовогоДокумента
  • ПолеФлажок
  • ПолеФорматированногоДокумента

В нашем случае мы использовали реквизит объекта, но можем программно создать реквизит формы в расширении при необходимости и назначить ему элемент формы:

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *