Имя: Пароль:
1C
1С v8
1с82 Программное добавление ПолеТабличногоДокумента на указаной странице.
0 Z_Z
 
18.05.14
16:48
Добрый день. Есть необходимость программно добавлять страницы на форме и на них располагать ПолеТабличногоДокумента. Страницу добавляться, а вот как на них добавить ПолеТабличногоДокумента не знаю. В мануале написано, что можно только добавлять на указанную панель. А как добавить на указанную страницу на панеле???
    Для ш = 1 по 7 Цикл
        НоваяСтраница = ЭлементыФормы.Панель1.Страницы.Добавить();
        ЭлементыФормы.Добавить(Тип("ПолеТабличногоДокумента"),"Результат"+Ш, Истина,ЭлементыФормы.Панель1);
    КонецЦикла;;
1 Pashkaa
 
18.05.14
20:42
Для каждого ТабличнаяЧасть из ОбъектРасшифровкиOLE.Метаданные().ТабличныеЧасти Цикл
        
        Если ОбъектРасшифровкиOLE[ТабличнаяЧасть.Имя].Количество() > 0 Тогда
            Если НЕ ПанельСоздана Тогда
                // Создание панели на форме
                мПанель = ЭтаФорма.ЭлементыФормы.Добавить(Тип("Панель"), "Панель", Истина,);
                мПанель.Верх = 162;
                мПанель.Лево = 8;
                мПанель.Ширина = ЭтаФорма.Ширина - 15;
                мПанель.Высота = ЭтаФорма.Высота - 192;
                 мПанель.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭтаФорма.Панель,ГраницаЭлементаУправления.Право,,);    
                мПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ  , ЭтаФорма.Панель,ГраницаЭлементаУправления.Низ,,);    

                
                ЭлементыФормы.Панель.ТекущаяСтраница.Имя       = ТабличнаяЧасть.Имя;
                ЭлементыФормы.Панель.ТекущаяСтраница.Заголовок = ТабличнаяЧасть.Синоним;
                
                ИсходнаяПанель = ЭлементыФормы.Панель.ТекущаяСтраница;
                ПанельСоздана = Истина;
            Иначе
                Страница = ЭлементыФормы.Панель.Страницы.Добавить(ТабличнаяЧасть.Имя, ТабличнаяЧасть.Синоним);             
                ЭлементыФормы.Панель.ТекущаяСтраница = Страница;
            КонецЕсли;
                    
            ТабличноеПоле = ЭтаФорма.ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), ЭлементыФормы.Панель.ТекущаяСтраница.Имя, Истина, ЭлементыФормы.Панель);
            ТабличноеПоле.Верх = 6;
            ТабличноеПоле.Лево = 6;
            ТабличноеПоле.Ширина = ЭлементыФормы.Панель.Ширина - 13;
            ТабличноеПоле.Высота = ЭлементыФормы.Панель.Высота - 32;
            
            ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.Панель,ГраницаЭлементаУправления.Право,,);
            ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Низ  , ЭлементыФормы.Панель,ГраницаЭлементаУправления.Низ,,);

            // Подготовим таблицу значений для ТЧ
            Массив = Новый Массив;
            Массив.Добавить(Тип("Строка"));
            
            ТаблицаЗначений = Новый ТаблицаЗначений;        
                
            Для каждого РеквизитТЧ из ОбъектРасшифровкиOLE.Метаданные().ТабличныеЧасти[ТабличнаяЧасть.Имя].Реквизиты Цикл
                ТаблицаЗначений.Колонки.Добавить(РеквизитТЧ.Имя, Новый ОписаниеТипов(Массив), РеквизитТЧ.Синоним);
            КонецЦикла;
            
            ТабличноеПоле.Значение = ТаблицаЗначений;
            ТабличноеПоле.СоздатьКолонки();
                    
            Для каждого СтрокаТЧ из ОбъектРасшифровкиOLE[ТабличнаяЧасть.Имя] Цикл
                Строка = ТаблицаЗначений.Добавить();

                Для каждого РеквизитТЧ из ОбъектРасшифровкиOLE.Метаданные().ТабличныеЧасти[ТабличнаяЧасть.Имя].Реквизиты Цикл            
                    
                    Если ТипЗнч(СтрокаТЧ[РеквизитТЧ.Имя]) = Тип("Число") Тогда
                        ТабличноеПоле.Колонки[РеквизитТЧ.Имя].Ширина = 20;
                        ТабличноеПоле.Колонки[РеквизитТЧ.Имя].ГоризонтальноеПоложениеВКолонке = ГоризонтальноеПоложение.Право;

                        Значение = Формат(СтрокаТЧ[РеквизитТЧ.Имя], "ЧДЦ=2");
                    Иначе
                        Значение = V8.String(СтрокаТЧ[РеквизитТЧ.Имя]);
                        ТабличноеПоле.Колонки[РеквизитТЧ.Имя].Ширина = ?(СтрДлина(Значение) > 70, 70, СтрДлина(Значение) + 5);
                    КонецЕсли;
                    
                    Строка[РеквизитТЧ.Имя] = Значение;
                КонецЦикла;    
            КонецЦикла;
            
            ЭлементыФормы.Панель.ТекущаяСтраница = ИсходнаяПанель;
        КонецЕсли;
    КонецЦикла;