Имя: Пароль:
1C
1С v8
На управляемой форме не видны поля добавленные программно
0 bodri
 
30.09.16
08:28
Программно добавляются страницы по видам помещений
Страницы на форме отображаются, дальше в зависимости от вида помещений, если паркинг или коммерческие добавляется табличный документ - добавляется и видно на форме, а если вид помещений квартира, добавляется ещё элемент формы страниц и на них добавляются страницы по блокам, а уже в страницах этих блоков добавляется табличные документы - вот как раз с ними и проблема, все добавляется (видно в отладчике), а в предприятии на форме нет нечего.
Помогите разобраться.

Код:

            //Добавляем страницы видов помещений
            ВидПомещения = Элемент_2.ВидПомещения;
            Имя = "ЖК_" + Элемент_1.ЖК.Код + "_" + Лев(ВидПомещения,2);
            ЭлементФормы_3 = ЭтаФорма.Элементы.Найти(Имя);
            
            Если ЭлементФормы_3 = Неопределено Тогда
                ЭлементФормы_3 = ЭтаФорма.Элементы.Добавить(Имя,Тип("ГруппаФормы"),ЭлементФормы_2);
                ЭлементФормы_3.Вид            = ВидГруппыФормы.Страница;
                ЭлементФормы_3.Заголовок    = ВидПомещения;
                ЭлементФормы_3.Видимость    = Истина;
            КонецЕсли;
            
            //Если вид помещения Паркинг или Коммерческие тогда выводим табличную часть
            Если ВидПомещения = Перечисления.ВидыПомещений.Паркинг
                или ВидПомещения = Перечисления.ВидыПомещений.КоммерческоеПомещение Тогда
                
                //Добавляем таблицу
                Имя = "Т_ЖК_" + Элемент_1.ЖК.Код + "_" + Лев(ВидПомещения,2);
                ЭлементФормы_4 = ЭтаФорма.Элементы.Найти(Имя);
                
                Если ЭлементФормы_4 = Неопределено Тогда
                    ЭлементФормы_4 = ЭтаФорма.Элементы.Добавить(Имя,Тип("ПолеФормы"),ЭлементФормы_3);
                    ЭлементФормы_4.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
                    ЭлементФормы_4.Видимость= Истина;
                    ЭлементФормы_4.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
                    ЭлементФормы_4.УстановитьДействие("ОбработкаРасшифровки","ОбработкаРасшифровки");
                    ТекРеквизит = Новый РеквизитФормы(ЭлементФормы_4.Имя,Новый ОписаниеТипов(МассивТиповТаблицы));
                    ДобавляемыеРеквизиты = Новый Массив;
                    ДобавляемыеРеквизиты.Добавить(ТекРеквизит);
                    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
                    ЭлементФормы_4.ПутьКДанным = ТекРеквизит.Имя;
                КонецЕсли;
                
                Если ВидПомещения = Перечисления.ВидыПомещений.КоммерческоеПомещение Тогда
                    ЗаполнитьТабличныйДокумент_Коммерческие(ЭтаФорма[Имя],Элемент_2.Строки);
                ИначеЕсли ВидПомещения = Перечисления.ВидыПомещений.Паркинг Тогда
                    ЗаполнитьТабличныйДокумент_Паркинги(ЭтаФорма[Имя],Элемент_2.Строки);
                КонецЕсли;
                
                //Если вид помещения Квартира тогда добавляем страницы по блокам
            ИначеЕсли ВидПомещения = Перечисления.ВидыПомещений.Квартиры Тогда
                
                //Добавляем группу видов помещений
                Имя = "СтраницыБлоков_" + Элемент_1.ЖК.Код;
                ЭлементФормы_5 = ЭтаФорма.Элементы.Найти(Имя);
                
                Если ЭлементФормы_5 = Неопределено Тогда
                    ЭлементФормы_5 = ЭтаФорма.Элементы.Добавить(Имя,Тип("ГруппаФормы"),ЭлементФормы_3);
                    ЭлементФормы_5.Вид        = ВидГруппыФормы.Страницы;
                    ЭлементФормы_5.Видимость= Истина;
                КонецЕсли;
                
                //Обход по блокам
                Элементы_3 = Элемент_2.Строки;
                
                Для Каждого Элемент_3 из Элементы_3 Цикл
                    
                    //Добавляем страницы блоков
                    Имя = ОбработатьТекстИмени("ЖК_" + СокрЛП(Элемент_1.ЖК.Код) + "_Блок_" + СокрЛП(Элемент_3.Блок));
                    ЭлементФормы_6 = ЭтаФорма.Элементы.Найти(Имя);
                    Если ЭлементФормы_6 = Неопределено Тогда
                        ЭлементФормы_6 = ЭтаФорма.Элементы.Добавить(Имя,Тип("ГруппаФормы"),ЭлементФормы_5);
                        ЭлементФормы_6.Вид             = ВидГруппыФормы.Страница;
                        ЭлементФормы_6.Заголовок    = "Блок " + Элемент_3.Блок;
                        ЭлементФормы_6.Видимость    = Истина;
                    КонецЕсли;
                    
                    //Добавляем таблицу блока
                    Имя = ОбработатьТекстИмени("Т_ЖК_" + СокрЛП(Элемент_1.ЖК.Код) + "_Блок_" + СокрЛП(Элемент_3.Блок));
                    ЭлементФормы_7 = ЭтаФорма.Элементы.Найти(Имя);
                    
                    Если ЭлементФормы_7 = Неопределено Тогда
                        
                        ЭлементФормы_7 = ЭтаФорма.Элементы.Добавить(Имя,Тип("ПолеФормы"),ЭлементФормы_6);
                        ЭлементФормы_7.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
                        ЭлементФормы_7.Видимость= Истина;
                        ЭлементФормы_7.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
                        ЭлементФормы_7.УстановитьДействие("ОбработкаРасшифровки","ОбработкаРасшифровки");
                        ТекРеквизит = Новый РеквизитФормы(ЭлементФормы_7.Имя,Новый ОписаниеТипов(МассивТиповТаблицы));
                        ДобавляемыеРеквизиты = Новый Массив;
                        ДобавляемыеРеквизиты.Добавить(ТекРеквизит);
                        ИзменитьРеквизиты(ДобавляемыеРеквизиты);
                        ЭлементФормы_7.ПутьКДанным = ТекРеквизит.Имя;
                        
                    КонецЕсли;
                    
                    ЗаполнитьТабличныйДокумент_Квартиры(ЭтаФорма[Имя],Элемент_3.Строки);
                    
                КонецЦикла;
                
            КонецЕсли;
1 Мимохожий Однако
 
30.09.16
08:41
попробуй программно заполнить добавленное поле
2 bodri
 
30.09.16
08:45
(1) оно заполняется
3 aleks_default
 
30.09.16
09:28
сначала добавляй реквизиты реквизиты а потом элементы формы.
4 aleks_default
 
30.09.16
09:28
а не наоборот
5 bodri
 
30.09.16
09:40
(3),(4) без разницы, т.к. в обоих условиях одинаково создается, вот только в одном работает как надо а в другом нет
6 aleks_default
 
30.09.16
10:27
А у Элемент_2 какой тип? Че-то не врублюсь. Это элемент формы или дерево?
7 bodri
 
30.09.16
10:31
(6) Это строка Дерева
8 aleks_default
 
30.09.16
10:34
не пробовал страницу назначать текущей?
9 bodri
 
30.09.16
10:36
(8) после добавления каждой страницы?
10 aleks_default
 
30.09.16
10:37
нет не каждой, первую или последнюю
11 aleks_default
 
30.09.16
10:37
любую
12 bodri
 
30.09.16
10:47
Будет проблематично, т.к. строятся элементы примерно так:

Форма
- Страницы комплексов
   -комплекс 1 (Видно)
     -вид помещения
       -Квартиры (видно)
         -Страницы блоков
           -Блок 1 (не видно)
             -Табличная часть (не видно)
           -Блок 2 (не видно)
             -Табличная часть (не видно)
           -Блок n (не видно)
             -Табличная часть (не видно)
       -Коммерческие (видно)
         -Табличная часть (Видно)
       -Паркинг (видно)
         -Табличная часть (Видно)
  -комплекс n..

У всех имена уникальные и конфликта нет

Отладчик после прохода этой процедурины
ЭтаФорма.Элементы - показывает все элементы которые были добавлены и у всех видимость стоит ИСТИНА.
А вот на форме страницы блоков так и не показываются

уже было думал что не все таблицы выводятся, так для пробы тупо вставил вывод одной области и который выводит всегда без условий. Всё равно без изменений.
13 bodri
 
30.09.16
11:19
Разобрался.
14 bodri
 
30.09.16
11:20
(1) и (11) Спасибо за попытку помочь.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан