Содержание:
При доработке конфигурации через расширение, часто возникает необходимость добавить свой функционал на существующую форму. Для этого не обязательно забирать саму форму в расширение и менять ее, а можно забрать обработчик “ПриСозданнииНаСервере” и создать все реквизиты и элементы формы программно.
Ниже приведены шаблоны по программному созданию реквизитов, элементов формы и установка связи между ними.
Группа формы и Поле формы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#Область ДобавлениеРеквизитовФормы ДобавляемыеРеквизиты = Новый Массив; ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("АВ_Реквизит", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(20)),,"Реквизит загаловок")); //РеквизитФормы(<Имя>, <Тип>, <Путь>, <Заголовок>, <СохраняемыеДанные>) ЭтотОбъект.ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы ГруппаСуществующая = ЭтотОбъект.Элементы.Найти("ГруппаСуществующая"); Если ГруппаСуществующая <> Неопределено Тогда ГруппаНовая = ЭтотОбъект.Элементы.Добавить("АВ_ГруппаНовая", Тип("ГруппаФормы"), ГруппаСуществующая); //ГруппаНовая = ЭтотОбъект.Элементы.Вставить("АВ_ГруппаНовая", Тип("ГруппаФормы"), СледующийЭлемент.Родитель, СледующийЭлемент); ГруппаНовая.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаНовая.ОтображатьЗаголовок = Ложь; ГруппаНовая.Заголовок = "Группа новая заголовок"; ГруппаНовая.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; //ГруппаНовая.РастягиватьПоГоризонтали = Ложь; ЭлементФормы = ЭтотОбъект.Элементы.Добавить("ЭлементФормы", Тип("ПолеФормы"), ГруппаНовая); ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; ЭлементФормы.ПутьКДанным = "АВ_Реквизит"; КонецЕсли; #КонецОбласти |
Переключатель (с добавлением обработчика “ПриИзменении”)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#Область ДобавлениеРеквизитовФормы ДобавляемыеРеквизиты = Новый Массив; ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("АВ_Переключатель", Новый ОписаниеТипов("Число"),,"Переключатель загаловок")); ЭтотОбъект.ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы ГруппаСуществующая = ЭтотОбъект.Элементы.Найти("ГруппаСуществующая"); Если ГруппаСуществующая <> Неопределено Тогда ЭлементФормы = ЭтотОбъект.Элементы.Добавить("Переключатель", Тип("ПолеФормы"), ГруппаСуществующая); ЭлементФормы.ПутьКДанным = "АВ_Переключатель"; ЭлементФормы.Вид = ВидПоляФормы.ПолеПереключателя; ЭлементФормы.КоличествоКолонок = 2; ЭлементФормы.СписокВыбора.Добавить(1, "Код 1 (Принято)"); ЭлементФормы.СписокВыбора.Добавить(2, "Код 2 (Отказ)"); ЭлементФормы.УстановитьДействие("ПриИзменении", "АВ_ПереключательПриИзменении"); КонецЕсли; #КонецОбласти |
Кнопка с командой
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#Область ДобавлениеКоманды КомандаФормы = Команды.Добавить("МояКомандаИмя"); КомандаФормы.Заголовок = "Моя команда"; КомандаФормы.Действие = "МояКомандаДействие"; КомандаФормы.Подсказка = "Подсказка"; #КонецОбласти #Область ДобавлениеЭлементовФормы КнопкаФормы = Элементы.Добавить("КнопкаФормыИмя", Тип("КнопкаФормы"), Элементы.ФормаКоманднаяПанель); //Элементы.ТабличнаяЧасть.КоманднаяПанель //Элементы.ОсновныеКоманды КнопкаФормы.ИмяКоманды = "МояКомандаИмя"; КнопкаФормы.Вид = ВидКнопкиФормы.ОбычнаяКнопка; #КонецОбласти &НаКлиенте Процедура МояКомандаДействие(Команда) Сообщить("Пуск!"); КонецПроцедуры |
Таблица значений
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#Область ДобавлениеРеквизитовФормы ДобавляемыеРеквизиты = Новый Массив; ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("АВ_НоваяТаблица", Новый ОписаниеТипов("ТаблицаЗначений") )); ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Колонка1", Новый ОписаниеТипов("Строка"), "АВ_НоваяТаблица", "Колонки 1")); ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Колонка2", Новый ОписаниеТипов("Строка"), "АВ_НоваяТаблица", "Колонки 2")); ЭтотОбъект.ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы ГруппаСуществующая = ЭтотОбъект.Элементы.Найти("ГруппаСуществующая"); Если ГруппаСуществующая <> Неопределено Тогда ЭлементФормыТаблица = ЭтотОбъект.Элементы.Добавить("НоваяТаблица", Тип("ТаблицаФормы"), ГруппаСуществующая); ЭлементФормыТаблица.ПутьКДанным = "АВ_НоваяТаблица"; ЭлементФормыКолонка1 = Элементы.Добавить("Колонка1", Тип("ПолеФормы"), ЭлементФормыТаблица); ЭлементФормыКолонка1.ПутьКДанным = "АВ_НоваяТаблица.Колонка1"; ЭлементФормыКолонка1.Вид = ВидПоляФормы.ПолеВвода; ЭлементФормыКолонка2 = Элементы.Добавить("Колонка2", Тип("ПолеФормы"), ЭлементФормыТаблица); ЭлементФормыКолонка2.ПутьКДанным = "АВ_НоваяТаблица.Колонка2"; ЭлементФормыКолонка2.Вид = ВидПоляФормы.ПолеВвода; КонецЕсли; #КонецОбласти |
Колонка таблицы значений
1 2 3 4 5 6 7 8 9 10 11 12 |
#Область ДобавлениеРеквизитовФормы ДобавляемыеРеквизиты = Новый Массив; ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("АВ_ДатаУведомления", Новый ОписаниеТипов("Дата",,Новый КвалификаторыДаты(ЧастиДаты.Дата)), "Объект.ТаблицаСуществующая", "Дата уведомления загаловок")); ЭтотОбъект.ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы ЭлементФормы = ЭтотОбъект.Элементы.Добавить("ДатаУведомления", Тип("ПолеФормы"), ЭтотОбъект.Элементы.ТаблицаСуществующая); ЭлементФормы.Вид = ВидПоляФормы.ПолеФлажка; ЭлементФормы.ПутьКДанным = "Объект.ТаблицаСуществующая.АВ_ДатаУведомления"; #КонецОбласти |
Данный список далеко не полный и со временем будет дополняться. Кроме, того можно почитать статью по программно добавлению реквизитов через общий модуль “Управление свойствами”.