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