Задача: [Платформа 1С 8.1] Создать в форме документа на панели новую страницу, добавить элемент управления дерево значений, панель управления дерева и заполнить дерево значений данными из табличной части Товары с группировкой по типу товаров
//Добавляем новую с траницу на панель
НоваяСтраница = Форма.ЭлементыФормы.Панель.Страницы.Добавить("Страница_1", "Новая страница);
//Делаем активной новую страницу. Элементы управления будут добавляться на активную страницу, не забываем это
Форма.ЭлементыФормы.Панель.ТекущаяСтраница = НоваяСтраница;
//Добавим ДеревоЗначений.
ДеревоТоваров = Форма.ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "ДеревоТоваров_1", Истина, Форма.ЭлементыФормы.Панель);
//Добавим Командную панель
КоманднаяПанельДЗ = Форма.ЭлементыФормы.Добавить(Тип("КоманднаяПанель"), "КоманднаяПанель_1" , Истина, Форма.ЭлементыФормы.Панель); КоманднаяПанельДЗ.Верх = 6; КоманднаяПанельДЗ.Лево = 6; КоманднаяПанельДЗ.Ширина = Форма.ЭлементыФормы.Панель.Ширина - 12 - 2;//высчитываем опытным путем [img]http://s9.rimg.info/b6c5307f51fa942d5a809f844f68f056.gif[/img] КоманднаяПанельДЗ.Высота = 24;
//Установим привязки командной панели
КоманднаяПанельДЗ.УстановитьПривязку(ГраницаЭлементаУправления.Верх,Форма.ЭлементыФормы.Панель,ГраницаЭлементаУправления.Верх); КоманднаяПанельДЗ.УстановитьПривязку(ГраницаЭлементаУправления.Низ,КоманднаяПанельДЗ,ГраницаЭлементаУправления.Верх); КоманднаяПанельДЗ.УстановитьПривязку(ГраницаЭлементаУправления.Право,Форма.ЭлементыФормы.Панель,ГраницаЭлементаУправления.Право); КоманднаяПанельДЗ.УстановитьПривязку(ГраницаЭлементаУправления.Лево,Форма.ЭлементыФормы.Панель,ГраницаЭлементаУправления.Лево); КоманднаяПанельДЗ.ИсточникДействий = ДеревоТоваров; //Установим источник действий для командной панели КоманднаяПанельДЗ.АвтоЗаполнение = Истина; // и включим автозаполнение кнопок командной панели
//Далее установим данные для нашего дерева значений и создадим колонки дерева значений
//для этого в реквизитах формы необходимо заранее добавить реквизит ДеревоЗначений_1, тип - ДеревоЗначений
//Создаем колонки дерева
Для Каждого Реквизит из ЭтотОбъект.Метаданные().ТабличныеЧасти.НоменклатураДоговора.Реквизиты Цикл Если Реквизит.Имя = "Система" Тогда //Пример добавления колонки составного типа МассТипов = Новый Массив; МассТипов.Добавить(Тип("СправочникСсылка.Системы")); МассТипов.Добавить(Тип("СправочникСсылка.ВидыНоменклатуры")); ЭтаФорма["ДеревоТоваров_"+Сч].Колонки.Добавить("Система",Новый ОписаниеТипов(МассТипов),"System",20); Продолжить; КонецЕсли; ЭтаФорма["ДеревоТоваров_1"].Колонки.Добавить(Реквизит.Имя,Реквизит.Тип,Реквизит.Синоним,15); КонецЦикла;
//
ТоварыПоСистеме.Данные = "ДеревоТоваров_1";
//Настраиваем внешний вид Дерева и устанавливаем привязки
ТоварыПоСистеме.Верх = 34; ТоварыПоСистеме.Лево = 6; ТоварыПоСистеме.Ширина = Форма.ЭлементыФормы.ПанельПроперти.Ширина - 18; ТоварыПоСистеме.Высота = Форма.ЭлементыФормы.ПанельПроперти.Высота - 60; ТоварыПоСистеме.УстановитьПривязку(ГраницаЭлементаУправления.Верх,Форма.ЭлементыФормы.ПанельПроперти,ГраницаЭлементаУправления.Верх); ТоварыПоСистеме.УстановитьПривязку(ГраницаЭлементаУправления.Низ,Форма.ЭлементыФормы.ПанельПроперти,ГраницаЭлементаУправления.Низ); ТоварыПоСистеме.УстановитьПривязку(ГраницаЭлементаУправления.Право,Форма.ЭлементыФормы.ПанельПроперти,ГраницаЭлементаУправления.Право); ТоварыПоСистеме.ТолькоПросмотр = Ложь; ТоварыПоСистеме.ИзменятьПорядокСтрок = Истина; ТоварыПоСистеме.ИзменятьСоставСтрок = Истина;
//Создадим колонки элемента управления ДеревоТоваров на основании колонок Дерева значений, которые мы создали ранее
ТоварыПоСистеме.СоздатьКолонки();
Установим обработчик события "ПриИзменении" для колонки "Номенклатура
ТоварыПоСистеме.Колонки.Номенклатура.ЭлементУправления.УстановитьДействие("ПриИзменении",Новый Действие("ДеревоТоваровНоменклатураПриИзменении"));
Внимание! В модуле Формы документа должна быть процедура ДеревоТоваровНоменклатураПриИзменении(Элемент)
А так же добавим обработчик "ОбработкаВыбора" для колонки "Номенклатура"
ТоварыПоСистеме.Колонки.Номенклатура.ЭлементУправления.УстановитьДействие("ОбработкаВыбора",Новый Действие("ДеревоТоваровНоменклатураОбработкаВыбора"));
Внимание! В модуле Формы документа должна быть процедура ДеревоТоваровНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
И добавим дополнительную кнопку на панель управления
КоманднаяПанельДЗ.Кнопки.Добавить("Разделитель_"); Кнопка = КоманднаяПанельДЗ.Кнопки.Добавить("Подбор", ТипКнопкиКоманднойПанели.Действие, , Новый Действие("ПодборНажатие")); Кнопка.Текст = "ПОДБОР"; Кнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Надпись; Кнопка.Подсказка = "Подбор номенклатуры в ТЧ";