Табличное поле ~ Программное создание и управление табличным полем на форме Рассмотрим пример, когда это может действительно пригодиться. Допустим у нас есть свойства объекта в виде отдельного иерархического справочника. Нам необходимо в форме самого объекта выводить эти данные, но не просто списком а с разбивкой по группам - сколько групп, столько и закладок с таблицами. Проблема в том что мы не знаем сколько будт закладок с таблицами заранее. Чтобы это реализовать мы должны динамически создавать необходимые таблицы. Сделать это несложно. Разберемся как:
Код 1C v 8.х //Добавим на панель2 формы таблицузначений
//Укажим тип добавляемого элемента, имя, видимость элемента
//и к какой панели принадлежит элемент
ПолеТаблицы = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"Таблица",Истина,ЭлементыФормы.Панель2);
//Укажем для таблици ее высоту и ширину
ПолеТаблицы.Ширина = ЭлементыФормы.Панель2.Ширина;
ПолеТаблицы.Высота = ЭлементыФормы.Панель2.Высота;
//Заполним нашу таблицу - например у нас есть результат выполнения запроса
ПолеТаблицы.Значение = РезультатЗапроса.Скопировать();
//Привяжем к нашей таблице вызов процедуры обработки
//события "ПередОкончаниемРедактирования"
//процедура должна существовать
ДействиеОбработкаВыбора = Новый Действие("ОбработкаВыбораЗнач");
ЭлементыФормы["Таблица"].УстановитьДействие("ПередОкончаниемРедактирования",ДействиеОбработкаВыбора);
//Сделаем привязку нашей таблицы к другим элементам формы
//для корректного отображения таблицы при изменении формы
ЭлементыФормы["Таблица"].УстановитьПривязку(ГраницаЭлементаУправления.Низ,
ЭлементыФормы.Панель2,ГраницаЭлементаУправления.Низ);
ЭлементыФормы["Таблица"].УстановитьПривязку(ГраницаЭлементаУправления.Право,
ЭлементыФормы.Панель2,ГраницаЭлементаУправления.Право);
// процедура для обработки события "ПередОкончаниемРедактирования
Процедура ОбработкаВыбораЗнач(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
//обработка события "ПередОкончаниемРедактирования"
КонецПроцедуры
Написал Валецкий Станислав Категория:
Работа с Формой (Диалог) и её элементами Как программно установить событие для элемента формы? Код 1C v 8.х //Привяжем к нашей таблице вызов процедуры обработки
//события "ПередОкончаниемРедактирования" !!! процедура должна существовать !!!
ДействиеОбработкаВыбора = Новый Действие("ОбработкаВыбораЗнач");
ЭлементыФормы["Таблица"].УстановитьДействие("ПередОкончаниемРедактирования",ДействиеОбработкаВыбора);
Код 1C v 8.х //--- создаем новую закладку
тмпСтраницы = ЭлементыФормы.ОсновнаяПанель.Страницы;
СтраницаПанелиОПЗС = тмпСтраницы.Добавить("Производство", "Производство");
ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = СтраницаПанелиОПЗС;
ПолеДокументов = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "ап_Призводство", Истина, ЭлементыФормы.ОсновнаяПанель);
ПолеДокументов.Данные = "ап_Производство";
ПолеДокументов.УстановитьДействие("ПередУдалением", Новый Действие("апПроизводствоПередУдалением"));
ПолеДокументов.УстановитьДействие("ПередНачаломДобавления", Новый Действие("апПроизводствоПередНачаломДобавления"));
ПолеДокументов.УстановитьДействие("ПриПолученииДанных", Новый Действие("апПроизводствоПриПолученииДанных"));
Код 1C v 8.х Колонка.ЭлементУправления.УстановитьДействие("НачалоВыбора",Новый Действие(Действие"));
Код 1C v 8.х ЭлементыФормы.РасшифровкаПлатежа.Колонки.СтатьяДвиженияДенежныхСредств.ЭлементУправления.УстановитьДействие("НачалоВыбора",Новый Действие("_СтатьяДвиженияДенежныхСредствНачалоВыбора"))
Категория:
Работа с Формой (Диалог) и её элементами