Имя: Пароль:
1C
1С v8
Программное создание панели и ее страниц ?
0 Pereliviya
 
11.02.15
11:31
Добрый день.
Подскажите, как правильно программно создать панель и несколько страниц к этой панели?
Делаю так:
ЭлПанелиФ = ЭлементыФормы.Добавить(Тип("Панель"), "ПанельФинансы", Истина, ЭлементыФормы.ОсновнаяПанель);
ЭлПанелиФ.Верх = 8;
ЭлПанелиФ.Высота = 551;
ЭлПанелиФ.Лево = 8;
ЭлПанелиФ.Ширина = 922;
ЭлементПанели = ЭлПанелиФ.Страницы.Добавить();
ЭлементПанели.Страницы.Заголовок = "Инвестиции";
ЭлементПанели.Страницы.Имя = "Инвестиции";

панель создается, страница "Инвестиции" тоже, но с индексом 1, а под индексом 0 значится пустая страница. Как удалить/убрать/заменить страницу с индексом 0 ?
1 chelentano
 
11.02.15
11:41
(0) Возможно, когда создаётся панель, то у неё сразу есть одна страница по умолчанию (проверь), в этом случае можно:
ЭлементПанели = ЭлПанелиФ.Страницы[0];

А для остальных страниц использовать "Добавить"
2 Pereliviya
 
11.02.15
11:45
(1) МЕРСИ, МЕРСИ!!!!
3 Vladal
 
11.02.15
12:04
(2) Вот еще один код. Я загружал из ТСД товары и в зависимости от количества документов (многодокументный учет в ТСД) создавал вкладки на панели программно. Также программно назначал привязки, расположение закладок, табличного поля и других элементов.

// Процедура анализирует таблицу товаров и создает соответствующие документам ТСД закладки
//
Процедура СоздатьЭлементыФормыПоТаблицеТоваров(ТаблицаТоваров)
    
    // Формирование списка документов ТСД
    СписокДокументов = ТаблицаТоваров.Скопировать();
    СписокДокументов.Свернуть("НомерДокументаТСД", "Количество");
    СписокДокументов.Сортировать("НомерДокументаТСД Возр");
    
    // Для одиночной таблицы элементы формы имеют другое отображение
    мОдиночныйДокумент = СписокДокументов.Количество() = 1;
    мЭтоЗаявкаНаПечатьЦенников = ТипЗнч(ФормаКлиента.ДокументОбъект) = Тип("ДокументОбъект.ЗаявкаНаПечатьЦенников");
    
    // Создание панели
    ПанельФормы = ЭлементыФормы.Добавить(Тип("Панель"), "Панель", Истина);
    ПанельФормы.Имя                 = "Панель";
    ПанельФормы.Верх                = 33;
    ПанельФормы.Высота              = 226;
    ПанельФормы.Ширина              = 384;
    ПанельФормы.Лево                = 8;
    ПанельФормы.ОтображениеЗакладок = ОтображениеЗакладок.Сверху;
    ПанельФормы.ПорядокОтображения  = 3;
    ПанельФормы.РазмерКартинки      = РазмерКартинки.Растянуть;
    
    // Для одностраничного списка вкладки не показывать
    ПанельФормы.ОтображениеЗакладок = ?(мОдиночныйДокумент, ОтображениеЗакладок.НеИспользовать, ОтображениеЗакладок.СлеваГоризонтально);
    
    ПанельФормы.УстановитьПривязку(ГраницаЭлементаУправления.Низ,   ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
    ПанельФормы.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель, ГраницаЭлементаУправления.Право);
    ПанельФормы.УстановитьДействие("ПриСменеСтраницы", Новый Действие("ПриСменеСтраницыПанелиДокументов"));
    
    // Если загрузка в документ ЗаявкаНаПечатьЦенников, показать флажок использования характеристик
    ЭлементыФормы.ИспользоватьХарактеристики.Видимость = мЭтоЗаявкаНаПечатьЦенников;;
    
    // Цикл по существующим документам
    ШиринаТабличногоПоля = ?(мОдиночныйДокумент, 376, 300);
    Для каждого СтрокаСпискаДокументов из СписокДокументов Цикл
        
        НомерДокументаТСД = СтрокаСпискаДокументов.НомерДокументаТСД;
        Количество        = СтрокаСпискаДокументов.Количество;
        
        СтруктураОтбора = Новый Структура("НомерДокументаТСД", НомерДокументаТСД);
        МассивСтрокДокументаТСД = ТаблицаТоваров.НайтиСтроки(СтруктураОтбора);
        ЭтаФорма["Товары" + НомерДокументаТСД] = ТаблицаТоваров.Скопировать(МассивСтрокДокументаТСД);
        
        КоличествоСтрок = ЭтаФорма["Товары" + НомерДокументаТСД].Количество();
        
        Этаформа.ЭлементыФормы.Панель.Страницы.Добавить("Документ" + НомерДокументаТСД, "Страница1");
        ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы.Панель.Страницы["Документ" + НомерДокументаТСД];
        
        ТабличноеПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "ПолеТовары" + НомерДокументаТСД, Истина, ЭлементыФормы.Панель);
        ТабличноеПоле.Данные                        = "Товары" + НомерДокументаТСД;
        ТабличноеПоле.Верх                          = 6;
        ТабличноеПоле.Высота                        = 212;
        ТабличноеПоле.Ширина                        = ШиринаТабличногоПоля;
        ТабличноеПоле.Лево                          = 6;
        ТабличноеПоле.ВертикальнаяПолосаПрокрутки   = ИспользованиеПолосыПрокрутки.Использоватьавтоматически;
        ТабличноеПоле.Вывод                         = ИспользованиеВывода.Авто;
        ТабличноеПоле.ВысотаПодвала                 = 1;
        ТабличноеПоле.ВысотаШапки                   = 1;
        ТабличноеПоле.ГоризонтальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.Использоватьавтоматически;
        ТабличноеПоле.ГоризонтальныеЛинии           = Истина;
        ТабличноеПоле.ПорядокОтображения            = 1;
        ТабличноеПоле.ЧередованиеЦветовСтрок        = Истина;
        ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Низ,   ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
        ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель, ГраницаЭлементаУправления.Право);
        
        ТабличноеПоле.СоздатьКолонки();
        
        ЭлементыФормы["ПолеТовары" + НомерДокументаТСД].Колонки.НомерДокументаТСД.Видимость = Ложь;
        
        Если Не мИспользоватьСерии Тогда
            Колонка                   = ЭлементыФормы["ПолеТовары" + НомерДокументаТСД].Колонки["СерияНоменклатуры"];
            Колонка.Видимость         = Ложь;
            Колонка.ИзменятьВидимость = Ложь;
        КонецЕсли;
        
        Если Не мИспользоватьХарактеристики Тогда
            Колонка                   = ЭлементыФормы["ПолеТовары" + НомерДокументаТСД].Колонки["ХарактеристикаНоменклатуры"];
            Колонка.Видимость         = Ложь;
            Колонка.ИзменятьВидимость = Ложь;
        КонецЕсли;
        
    КонецЦикла;
    
    // Цикл по вкладкам, чтобы сохранились привязки
    Для каждого СтрокаСпискаДокументов из СписокДокументов Цикл
        
        Количество        = СтрокаСпискаДокументов.Количество;
        НомерДокументаТСД = СтрокаСпискаДокументов.НомерДокументаТСД;
        КоличествоСтрок   = ЭтаФорма["Товары" + НомерДокументаТСД].Количество();
        ЭлементыФормы.Панель.Страницы["Документ" + НомерДокументаТСД].Заголовок =
            "Документ " + НомерДокументаТСД + " (" + КоличествоСтрок + " арт., " + Количество + " ед.)";
        
    КонецЦикла;
    
    // После программного описания панели, создается страница без идентификатора с индексом 0
    Этаформа.ЭлементыФормы.Панель.Страницы[0].Имя = "Пустая";
    Этаформа.ЭлементыФормы.Панель.Страницы.Удалить(0);
    
    ЭтаФорма.Ширина = 800;
    
КонецПроцедуры