|   |   | 
| 
 | УФ. Вывод произвольной ТЗ на форму | ☑ | ||
|---|---|---|---|---|
| 0
    
        mzelensky 20.01.15✎ 09:12 | 
        Доброго всем! Помогите разобраться, а то видать туплю
 Управляемая форма. НА форме в реквизитах есть таблица значений "ТЗ_Ф". Колонок у этой ТЗ нет. Задача - программно сформировать произвольную ТЗ (на сервере) и вывести ее в эту самую "ТЗ_Ф" на форме Вроде как делаю по аналогии с этим: v8: СКД 8.2: программный вывод в дерево значений на форме v8: Управляемые формы. Таблица значений. Удаление колонки | |||
| 1
    
        mzelensky 20.01.15✎ 09:13 | 
        Как делаю:
 ТЗ = Новый ТаблицаЗначений; МассивДобавляемыхРеквизитов = Новый Массив; // Создание Реквизита формы типа ДанныеФормыТЗ МассивУдаляемыхРеквизитов = Новый Массив; Для Счетчик = 1 По ВсегоКолонок Цикл ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка")); КонецЦикла; Для Счетчик =1 По ВсегоСтрок Цикл НоваяСтрока = ТЗ.Добавить(); КонецЦикла; Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик); Если Элементы.Найти("ТЗ_" + "Колонка"+Строка(Счетчик +1)) = Неопределено Тогда МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ТЗ_Колонка"+Строка(Счетчик +1), Новый ОписаниеТипов("Строка"), "ТЗ_Ф")); //МассивУдаляемыхРеквизитов.Добавить("Колонка"+Строка(Счетчик +1)); КонецЕсли; КонецЦикла; ИзменитьРеквизиты(МассивДобавляемыхРеквизитов, МассивУдаляемыхРеквизитов); ЗначениеВРеквизитФормы(ТЗ, "ТЗ_Ф"); | |||
| 2
    
        mzelensky 20.01.15✎ 09:14 | 
        В результате получаю ошибку на "ЗначениеВРеквизитФормы(ТЗ, "ТЗ_Ф");" с описанием 
 {Форма.ФормаОбработки.Форма(95)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы) ЗначениеВРеквизитФормы(ТЗ, "ТЗ_Ф"); по причине: Недопустимое значение параметра (параметр номер '2') | |||
| 3
    
        mzelensky 20.01.15✎ 09:15 | 
        ГДЕ ТУПЛЮ?     | |||
| 4
    
        НЕА123 20.01.15✎ 09:23 | 
        Массив = Новый Массив;
 МассивУдаляемыхКолонокТЗ = Новый Массив; Для Каждого Эл Из Элементы.ТЗ_Ф.ПодчиненныеЭлементы Цикл МассивУдаляемыхКолонокТЗ.Добавить(Эл); КонецЦикла; Для Каждого Эл Из МассивУдаляемыхКолонокТЗ Цикл Элементы.Удалить(Эл); КонецЦикла; | |||
| 5
    
        mzelensky 20.01.15✎ 09:25 | 
        (4) Это в какое место нужно?     | |||
| 6
    
        НЕА123 20.01.15✎ 09:28 | 
        (5)
 это надо до того... суть в том, что надо убрать связь с несуществующими колонками. | |||
| 7
    
        mzelensky 20.01.15✎ 09:30 | 
        (6) Дело в том, что ошибка выходит в самом начале создания. Т.е. по сути удалять нечего - колонок там нет     | |||
| 8
    
        НЕА123 20.01.15✎ 09:31 | 
        (6)+
 в (0) МассивУдаляемыхРеквизитов просто забыл заполнить. | |||
| 9
    
        mzelensky 20.01.15✎ 09:33 | 
        (8) Так нечего же удалять. Нет колонок еще в ТЗ.
 При повторной загрузке понятно, что нужно старые удалить, но ошибка выходит приПЕРВОЙ обработке, когда ТЗ на форме пустая вообще - ни строк ни колонок НЕТ | |||
| 10
    
        НЕА123 20.01.15✎ 09:35 | 
        (7)
 у меня еще вот делается до ЗначениеВРеквизитФормы(ТЗ, "ТЗ_Ф"); Для Каждого Реквизит Из МассивДобавляемыхРеквизитов Цикл Эл = Элементы.Добавить(Реквизит.Имя, Тип("ПолеФормы"), Элементы.ТЗ_Ф); Эл.вид = ВидПоляФормы.ПолеВвода; Эл.доступныеТипы = Новый ОписаниеТипов(Колонка.ТипЗначения); Эл.ПутьКДанным = "ТЗ_Ф."+Эл.Имя; Эл.Формат = "ЧГ=0"; КонецЦикла; | |||
| 11
    
        Deon 20.01.15✎ 09:37 | 
        а реквизит тоже ТЗ_Ф называется?     | |||
| 12
    
        Лефмихалыч 20.01.15✎ 09:38 | 
        если ЗначениеВРеквизитФормы говорит это, значит реквизита формы "ТЗ_Ф" не существует или он не таблица значений     | |||
| 13
    
        НЕА123 20.01.15✎ 09:38 | 
        (10)+
 может это и не то. но у меня работает. | |||
| 14
    
        Лефмихалыч 20.01.15✎ 09:39 | 
        +(12) если таки существует, значит всё закрой, продуй кэш, и открывай заново     | |||
| 15
    
        mzelensky 20.01.15✎ 09:44 | 
        (11) Реквизит формы называется "ТЗ_Ф" и элемент формы называется "ТЗ_Ф" (он на форме уже есть. Соответственно колнок у него нет)     | |||
| 16
    
        mzelensky 20.01.15✎ 09:44 | 
        (10) Это ты элемент формы таблицы значения создаешь программно. У меня он на форме уже лежит     | |||
| 17
    
        Deon 20.01.15✎ 09:49 | 
        Отладчик показывает одинаковые колонки в источнике и приемнике?     | |||
| 18
    
        mzelensky 20.01.15✎ 10:04 | 
        Забавно. Сделал вот так:
 Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик); КонецЦикла; Для Каждого Колонка Из ТЗ.Колонки Цикл МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТЗ_Ф")); КонецЦикла; Ошибка ушла | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |