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