Программное создание элементов формы (3 вложенные таблицы) #756268


#0 by freelancer83
Доброго времени суток. Помогите разобраться с ошибкой. Есть задача программно добавить реквизиты и элементы формы Проблема в том, что реквизиты - это 3 вложенные таблицы, для примера: есть таблица классы школы Таблица2, к ней привязана таблица учеников класса Таблица22, а к таблице учеников в свою очередь привязана таблица предметов с оценками учеников Таблица223. С помощью конструктора можно разместить реквизиты и соответствующие элементы на форме (таблицы формы), но при программном формировании (добавление элемента "Т223") появляется ошибка {Форма.Форма.Форма}: Ошибка при установке значения атрибута контекста (ПутьКДанным)     НовЭл.ПутьКДанным = "Элементы.Т22.ТекущиеДанные.Таблица223"; по причине: Управляемые формы, тестировал обработку в БП (3.0.40.36) на платформах 1С:Предприятие 8.3 (8.3.6.2237) и 1С:Предприятие 8.3 (8.3.6.2332) Реквизиты формы (3 вложенные таблицы) создаются без проблем, для упрощения в конфигураторе на форму обработки вручную уже добавлен реквизит Таблица2 и закоментирован рабочий код программного добавления реквизита формы вложенных таблиц. Прошу помочь разобраться: это ошибка платформы или неправильно привязываю элемент формы к реквизиту. Как привязать программно созданный элемент формы ТаблицаФормы к вложенной таблице 3-го уровня, с учетом того, что для 1-го и 2-го уровней все нормально работает. Если добавить вручную 3 таблицы на форме (можно наверно и 4 и 5 ) и вручную связать, то никаких проблем не возникает. скриншот реквизитов формы в конфигураторе Тестовая обработка находится по адресу
#1 by БатКор
Кто поставил тебе такую задачу? не проще ли открывать форму списка с необходимым отбором?
#2 by freelancer83
К сожалению, без создания таблиц нельзя, вложенность данных может быть произвольной, дерево тоже не подходит, состав таблиц (количество и типы столбцов) на разных уровнях может отличаться. Требуется интерактивность на форме. При активизации строки таблицы на любом уровне нужно на этой же форме отображать данные связанных таблиц
#3 by Горогуля
вот тут спроси:
#4 by aleks_default
Не убедил в необходимости программного создания реквизитов.   НовЭл.ПутьКДанным = "Элементы.Т22.ТекущиеДанные.Таблица223"; это путь к реквизиту формы, а не к элементу формы. Должно быить "НовЭл.ПутьКДанным = "Таблица223".
#5 by freelancer83
Структура реквизитов формы и, соответственно, элементов формы неизвестна заранее (структура становится известной при создании формы, это дерево где строка описывает реквизит формы или таблицу формы), приведенный пример Классы - Ученики - Оценки просто иллюстрирует проблему, это может быть и 4-уровневая таблица, и может быть одна таблица. На форме без дополнительных нажатий нужно видеть данные вложенных таблиц. "НовЭл.ПутьКДанным = "Таблица223"
#6 by hhhh
а реквизит Таблица223 уже добавил?
#7 by aleks_default
Не, не добавил. Я код глянул в . Он закоментил добавление рекизитов.
#8 by aleks_default
ты просто пока не понимаешь какой геморой на свою задницу сочиняешь программно создавая структуру формы...
#9 by aleks_default
лучше пока не поздно переформулировать задачу
#10 by freelancer83
Согласен, но может кто-нибудь с такой проблемой сталкивался, перепробовал много вариантов, постоянно попадаю на эту ошибку. Мистяне, помогите, пожалуйста, все время у вас читаю решения и ответы на разные проблемы.
#11 by aleks_default
Тебе сказали уже. Перед созданием элеменов формы нужно сначала создавать реквизиты формы, которые и будут указываться как путь к данным элемента формы
#12 by freelancer83
Если не смогу решить проблему создания 3-го уровня, тогда придется полностью отказаться от программного формирования реквизитов, чего очень не хотелось бы. Но почему на втором уровне такой проблемы нет? элемент формы (ТаблицаФормы) на 2-м уровне программно создается без проблем. Для 3 уровня используется тот же принцип.
#13 by freelancer83
"для упрощения в конфигураторе на форму обработки вручную уже добавлен реквизит Таблица2" На форму обработки в режиме конфигуратора уже добавлена Таблица2 (Реквизит формы) со всеми вложенными таблицами в т.ч. и Таблица223 У меня не получается даже не добавить, а всего-то связать Элемент формы "Т223" с существующей таблицей "Таблица223"
#14 by freelancer83
Процедуру можно сократить до безобразия &НаСервере КонецПроцедуры и все равно ошибка на последней строке процедуры {Форма.Форма.Форма}: Ошибка при установке значения атрибута контекста (ПутьКДанным)     НовЭл.ПутьКДанным = "Элементы.Т22.ТекущиеДанные.Таблица223"; по причине: Недопустимое значение
#15 by hhhh
ну таблица 223 где у вас тут создается?? , вы увиливаете от вопроса.
#16 by freelancer83
ни в коем случае не увиливаю, выше уже написал, чтобы уменьшить вероятность ошибки, чтобы предельно упростить условия задачи, реквизит Таблица223 добавил вручную. Он уже есть в реквизитах формы. Или вы считате, что я не могу программно создать элемент формы для созданного в конфигураторе реквизита формы? Также я писал, что код создания реквизитов формы до 3-го уровня (наверно и для любых уровней) срабатывает без проблем. Даже если удалить с формы все реквизиты и раскомментировать код создания реквизитов это ничего не дает, проверял, появляется та же ошибка
#17 by hhhh
ну значит он добавлен не как колонка Таблицы 22.
#18 by hhhh
может просто создать 3 закладки Таблица 1, Таблица 2 и Таблица 3, и при переключении в них устанавливать отбор соответствующий? Нафига вы через задний проход делаете? В колонку Таблицу вставляете?
#19 by freelancer83
В этом что-то есть, спасибо, я попробую, но вопрос остается актуальным. Самое главное, почему для 2-х уровней работает, а на 3-м ошибка. Еще я заметил в отладчике, что для элементов формы Т2 и Т22 есть свойство "ОтборСтрок" а у созданного элемента Т223 такого свойства нет
#20 by freelancer83
УПС, извините, "ОтборСтрок" появляется по установки свойства "ПутьКДанным", значит у Т223 это свойство появится после удачного связывания с Таблица223
#21 by aleks_default
В КОЛОНКУ ТАБЛИЦУ вставляет? О, господи...
#22 by БатКор
Да лучше создавать ТЗ и СЗ и при необходимость впихивать в ТЧ, лучше думаю так будет
#23 by БатКор
Сорян за тавтологию
#24 by Mort
Программное создание элементов в 1с сделано на "отстаньте". Условное оформление формы игнорится, пути к данным не ставятся, платформенные команды не назначаются.
#25 by freelancer83
Написал в отдел тех. поддержки "1С" уже неделю как. Пока тишина. Наверно не дождусь от них ответа.
#26 by МимохожийОднако
Почему именно программно? Очень интересно. Программно можно создать только элементы формы, но не реквизиты.
#27 by EvgeniuXP
открой ГруппаКонтактнаяИнформация в БСП и посмотри как программно добавляют табличку :)
#28 by EvgeniuXP
кто это сказал, что нельзя?
#29 by БатКор
постановка задачи не корректная. "все говорят о мухе, а ты про слона да про слона". Однако, здравствуйте!!!)
#30 by МимохожийОднако
Ну, так помоги страдальцу. И я поучусь.
#31 by hhhh
можно создать и реквизиты.
#32 by МимохожийОднако
Набросились )) Ну, спровоцировал маленько...Может кто и поможет ТС. Однако мне действительно не понятна причина рождения столь чудного технического задания.
#33 by МимохожийОднако
В УТ11 есть примеры создания реквизитов формы в виде таблиц в общих модулях "Планирование", "Анкетирование"...
#34 by freelancer83
Спасибо, посмотрю
#35 by EvgeniuXP
там ничего сложного, процедуру ИзменитьРеквизиты ищи.
#36 by freelancer83
Спасибо большое за наводку. Используя Свойство элемента формы (тип ТаблицаФормы) ОтборСтрок удалось связать таблицы 3, 4 уровней вложенности, без использования колонки таблицы тип ТаблицаЗначений Получается, что при использовании вложенности таблиц больше 2 (только программное добавление) нужно использовать свойство ТаблицаФормы - ОтборСтрок. Программно, используя свойство ТаблицаФормы - ПутьКДанным невозможно связать таблицы 3-го и более уровней вложенности
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С