|
Программное создание элементов формы (3 вложенные таблицы) | ☑ | ||
---|---|---|---|---|
0
freelancer83
09.10.15
✎
18:45
|
Доброго времени суток. Помогите разобраться с ошибкой.
Есть задача программно добавить реквизиты и элементы формы Проблема в том, что реквизиты - это 3 вложенные таблицы, для примера: есть таблица классы школы Таблица2, к ней привязана таблица учеников класса Таблица22, а к таблице учеников в свою очередь привязана таблица предметов с оценками учеников Таблица223. С помощью конструктора можно разместить реквизиты и соответствующие элементы на форме (таблицы формы), но при программном формировании (добавление элемента "Т223") появляется ошибка {Форма.Форма.Форма(87)}: Ошибка при установке значения атрибута контекста (ПутьКДанным) НовЭл.ПутьКДанным = "Элементы.Т2.ТекущиеДанные.Таблица223"; по причине: Недопустимое значение Код процедуры &НаСервере Процедура Команда2НаСервере() //ДобавляемыеРеквизиты=Новый Массив; //СуществующиеРеквизиты = Новый Массив; //ЗарплатаКадры.ЗаполнитьМассивИменРеквизитовФормы(ЭтаФорма, СуществующиеРеквизиты); //СуществующиеРеквизиты.Удалить(СуществующиеРеквизиты.Найти("Реквизит777")); //СуществующиеРеквизиты.Удалить(СуществующиеРеквизиты.Найти("Объект")); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Реквизит1",Новый ОписаниеТипов("Дата"), ,"Реквизит1")); //Массив=Новый Массив; //Массив.Добавить(Тип("ТаблицаЗначений")); //ОписаниеТиповТаблицаЗначений = Новый ОписаниеТипов(Массив); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Таблица2",ОписаниеТиповТаблицаЗначений, ,"Таблица2")); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Столбец21",Новый ОписаниеТипов("Строка"),"Таблица2" ,"Столбец21")); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Таблица22",ОписаниеТиповТаблицаЗначений,"Таблица2" ,"Таблица22")); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Столбец221",Новый ОписаниеТипов("Строка"),"Таблица2.Таблица22","Столбец221")); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Столбец222",Новый ОписаниеТипов("Строка"),"Таблица2.Таблица22","Столбец222")); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Таблица223",ОписаниеТиповТаблицаЗначений,"Таблица2.Таблица22","Таблица223")); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Столбец2231",Новый ОписаниеТипов("Строка"),"Таблица2.Таблица22.Таблица223","Столбец2231")); ////СформироватьРеквизитыФормы(Дерево.Строки,ДобавляемыеРеквизиты); //ИзменитьРеквизиты(ДобавляемыеРеквизиты,СуществующиеРеквизиты); ЗарплатаКадры.УдалитьПодчиненныеЭлементыГруппы(ЭтаФорма,Элементы.ГруппаПрограммныеЭлементы); НовЭл=Элементы.Добавить("Реквизит1",Тип("ПолеФормы"),Элементы.ГруппаПрограммныеЭлементы); НовЭл.Вид = ВидПоляФормы.ПолеВвода; НовЭл.ПутьКДанным = "Реквизит1"; НовЭл=Элементы.Добавить("Т2",Тип("ТаблицаФормы"),Элементы.ГруппаПрограммныеЭлементы); //НовЭл.Вид = ВидПоляФормы.ПолеВвода; НовЭл.ПутьКДанным = "Таблица2"; //ЭлТаблица22=НовЭл; НовЭл=Элементы.Добавить("Столбец21",Тип("ПолеФормы"),НовЭл); НовЭл.Вид = ВидПоляФормы.ПолеВвода; НовЭл.ПутьКДанным = "Таблица2.Столбец21"; НовЭл=Элементы.Добавить("Т22",Тип("ТаблицаФормы"),Элементы.ГруппаПрограммныеЭлементы); НовЭл.ПутьКДанным = "Элементы.Т2.ТекущиеДанные.Таблица22"; ЭлТаблица22=НовЭл; НовЭл=Элементы.Добавить("Столбец221",Тип("ПолеФормы"),ЭлТаблица22); НовЭл.Вид = ВидПоляФормы.ПолеВвода; НовЭл.ПутьКДанным = "Элементы.Т2.ТекущиеДанные.Таблица22.Столбец221"; НовЭл=Элементы.Добавить("Столбец222",Тип("ПолеФормы"),ЭлТаблица22); НовЭл.Вид = ВидПоляФормы.ПолеВвода; НовЭл.ПутьКДанным = "Элементы.Т2.ТекущиеДанные.Таблица22.Столбец222"; НовЭл=Элементы.Добавить("Т223",Тип("ТаблицаФормы"),Элементы.ГруппаПрограммныеЭлементы); НовЭл.ПутьКДанным = "Элементы.Т2.ТекущиеДанные.Таблица223"; //ЗДЕСЬ ошибка //НовЭл.ПутьКДанным = "Элементы.Таблица22.ТекущиеДанные.Таблица223"; //НоваяСтрока=РеквизитФормыВЗначение("Таблица2").Добавить(); //НоваяСтрокаДочерняя=НоваяСтрока.Таблица22.Добавить(); //ДобавляемыеРеквизиты.Очистить(); //ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Таблица223",ОписаниеТиповТаблицаЗначений,"Таблица2.Таблица22","Таблица223")); //ИзменитьРеквизиты(ДобавляемыеРеквизиты,СуществующиеРеквизиты); НовЭл=Элементы.Добавить("Столбец2231",Тип("ПолеФормы"),НовЭл); НовЭл.Вид = ВидПоляФормы.ПолеВвода; НовЭл.ПутьКДанным = "Элементы.Таблица22.ТекущиеДанные.Таблица223.Столбец2231"; КонецПроцедуры в процедуре закоментирован код программного формирования реквизитов, я просто добавил реквизиты формы в конфигураторе, хотя код программного добавления реквизитов работает без проблем, все 3 вложенные таблицы создаются по команде ИзменитьРеквизиты при добавлении 2-х вложенных таблиц никаких проблем не возникает, ни при ручном добавлении реквизитов и программном добавлении элементов формы, ни при программном добавлении реквизитов и программном добавлении элементов формы еще вопрос вдогонку: как в отладчике увидеть реквизиты формы? РеквизитФормыВЗначение("таблица2").добавить().Таблица22.Колонки ЭтаФорма.Т2 - вижу ЭтаФорма.Т22 - вижу как колонку (ЭтаФорма.Т2.Т22, дальше структуру увидеть не могу попробую добавить обработку и скрины, пока разбираюсь, большое спасибо за помощь |
|||
1
freelancer83
09.10.15
✎
18:53
|
скриншот реквизитов формы в конфигураторе
https://drive.google.com/file/d/0ByV6nmoaKkjFdDZRd1lOUGVlcG8/view?usp=sharing |
|||
2
freelancer83
09.10.15
✎
18:54
|
Управляемые формы
|
|||
3
freelancer83
09.10.15
✎
18:55
|
Тестировал обработку в БП (3.0.40.36)
на платформах 1С:Предприятие 8.3 (8.3.6.2237) и 1С:Предприятие 8.3 (8.3.6.2332) |
|||
4
freelancer83
09.10.15
✎
18:57
|
Тестовая обработка находится по адресу
https://drive.google.com/file/d/0ByV6nmoaKkjFdHZ5MU5zVHdVeWM/view?usp=sharing |
|||
5
freelancer83
09.10.15
✎
19:01
|
Простите новичка при описании проблемы в коде допущена ошибка
Вместо НовЭл.ПутьКДанным = "Элементы.Т2.ТекущиеДанные.Таблица223";//ЗДЕСЬ ошибка нужно читать НовЭл.ПутьКДанным = "Элементы.Т22.ТекущиеДанные.Таблица223";//ЗДЕСЬ ошибка именно данный код дает ошибку |
|||
6
freelancer83
12.10.15
✎
09:34
|
up
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |