Имя: Пароль:
1C
1С v8
запрос к таб значений-ошибка
0 servicenn
 
01.05.14
14:51
День добрый делаю запрос к таб. значений выдаётся ошибка, тз получена из другого запроса через ком соединение может не работает из за того что представлена как ком объект или неправильно сделал запрос к ТЗ

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Таб.ЧекККМ
                   |ПОМЕСТИТЬ ВТДанные
                   |ИЗ
                   |    &Данные КАК Таб
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                        Запрос = Новый Запрос;

                   |ВЫБРАТЬ
                   |    ВТДанные.ЧекККМ
                   |ИЗ
                   |    ВТДанные КАК ВТДанные";
                  
    Запрос.УстановитьПараметр("Данные",ТЗ);
    Запрос.МенеджерВременныхТаблиц = Новый       МенеджерВременныхТаблиц;
    Результат = Запрос.Выполнить().Выгрузить();
1 Чайник Рассела
 
01.05.14
14:51
колонки тз должны быть типизированы
2 servicenn
 
01.05.14
14:52
(1) если можно то короткий пример типизации
3 servicenn
 
01.05.14
14:53
ТЗ у меня имеет значение и тип COMобъект
4 servicenn
 
01.05.14
14:54
Если делаю вывод на печать ТЗ то нормально работает а когда запрос ошибка
5 Чайник Рассела
 
01.05.14
14:55
Создаешь ТЗ    

// 1. создается таблица значений с указанием типов колонок
    ТзНомен = Новый ТаблицаЗначений;
    ТзНомен.Колонки.Добавить("Набор", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    ТзНомен.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    ТзНомен.Колонки.Добавить("Качество", Новый ОписаниеТипов("СправочникСсылка.КачествоТовара"));
    ТзНомен.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(12,3)));


заполняешь ее из COMобъекта и передаешь параметром в твой запрос
6 servicenn
 
01.05.14
14:56
(5) попробую)
7 Franchiser
 
гуру
01.05.14
16:15
Так сделай:

Запрос.УстановитьПараметр("Данные",ТЗ);
    Запрос.МенеджерВременныхТаблиц = Новый       МенеджерВременныхТаблиц;

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Таб.ЧекККМ
                   |ПОМЕСТИТЬ ВТДанные
                   |ИЗ
                   |    &Данные КАК таб";
Запрос.выполнить();

                      
Запрос.текст="ВЫБРАТЬ
                   |    ВТДанные.ЧекККМ
                   |ИЗ
                   |    ВТДанные КАК ВТДанные";
                  
  
    Результат = Запрос.Выполнить().Выгрузить();
8 Franchiser
 
гуру
01.05.14
16:16
Запрос= новый запрос;
Вверх переставь только
9 Chameleon1980
 
02.05.14
10:31
...ТЗ у меня имеет значение и тип COMобъект...
на всякий
На той стороне ЗначениеВСтрокуВнутр
на этой ЗначениеИзСтрокиВнутр
получишь местную ТЗ.
Только для запроса все равно типизировать нужно.
10 Лефмихалыч
 
02.05.14
10:47
(0) >тз получена из другого запроса через ком соединение
это не таблица значений, а COM-объект.
Вариантов борьбы масса, но все сводятся к сериализации в том или ином виде и передаче сериализованной ТЗ в виде строки