Имя: Пароль:
1C
1С v8
Выгрузка результата запроса в таблицу формы
0 Kashey
 
02.12.11
12:22
Результат запроса выгружается в ТЗ и передаётся в следующую процедуру

Процедура ДобавитьКолонкиВТЗ(ВремТЗ);
   
   КоллекцияРеквизитов = Новый Массив;
   КоллекцияУдаляемыхРеквизитов  = Новый Массив;
   
   Для каждого Колонка Из ВремТЗ.Колонки Цикл
       НоваяКолонка = Новый РеквизитФормы(Колонка.Имя,Колонка.ТипЗначения,"ТЗ",Колонка.Имя);
       КоллекцияРеквизитов.Добавить(НоваяКолонка);
   КонецЦикла;
   
   КолонкиТЗ = ПолучитьРеквизиты("ТЗ");
   Для каждого Колонка Из КолонкиТЗ Цикл
               КоллекцияУдаляемыхРеквизитов.Добавить("ТЗ." + Колонка.Имя);
   КонецЦикла;
       
   ЭлементТЗ = Элементы.ТЗ;    
   ИзменитьРеквизиты(,КоллекцияУдаляемыхРеквизитов);
   ИзменитьРеквизиты(КоллекцияРеквизитов);
   ЗначениеВРеквизитФормы(ВремТЗ, "ТЗ");
   
   Для Каждого Колонка Из ВремТЗ.Колонки Цикл
           НоваяКолонка = Элементы.Добавить(Колонка.Имя,Тип("ПолеФормы"),ЭлементТЗ);
           НоваяКолонка.ПутьКДанным = "ТЗ."+Колонка.Имя;
   КонецЦикла;
       
КонецПроцедуры

При первом вызове всё ок. Но при повторном вызове ругается на строчку

Ошибка при вызове метода контекста (Добавить)
НоваяКолонка = Элементы.Добавить (Колонка.Имя,Тип"ПолеФормы"),ЭлементТЗ);
по причине:Недопустимое значение параметров
Что я делаю не так?
1 catena
 
02.12.11
12:28
А колонки очищаются перед повторным формированием?
2 Kashey
 
02.12.11
12:35
(1)Если имеются ввиду колонки таблицы формы - то нет.
Хотя пробывал и так

   ЭлементТЗ = Элементы.ТЗ;    
   Если ЭлементТЗ.ПодчиненныеЭлементы.Количество() >0 Тогда
       Для каждого Колонка Из ЭлементТЗ.ПодчиненныеЭлементы Цикл
           Нужный = Элементы.ТЗ.ПодчиненныеЭлементы.Найти(Колонка.Имя );
           Если Нужный <> Неопределено Тогда                
               Элементы.Удалить(Нужный);
           КонецЕсли;
       КонецЦикла;    
   КонецЕсли;

Не помогает
3 shuhard
 
02.12.11
12:37
(2) тогда зырь отладчиком Элементы.Добавить (Колонка.Имя,Тип"ПолеФормы"),ЭлементТЗ);
может у тебя пробел и цифра первой идёт
4 Kashey
 
02.12.11
12:44
(3) Дело в том что 1-й раз отрабатывает норм, а вот повторный вызов процедуры с тем же запросом ругается.
5 shuhard
 
02.12.11
12:45
(4) тогда зырь отладчиком Элементы.Добавить (Колонка.Имя,Тип"ПолеФормы"),ЭлементТЗ);
может у тебя пробел и цифра первой идёт