Имя: Пароль:
1C
1С v8
Проблема при объединении двух временных таблиц
, ,
0 Colci
 
17.05.12
13:49
Здравствуйте. Нужно сделать запрос из двух временных таблиц. Пишу так:
Запрос=Новый Запрос("ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_1C ИЗ &ТЗ КАК Т1");
   Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
   МВТ = Запрос.МенеджерВременныхТаблиц;
   Запрос.УстановитьПараметр("ТЗ",ТабОст1С);
   Запрос.Выполнить();
   
   Запрос=Новый Запрос("ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_АВАРДА ИЗ &ТЗ КАК Т2");
   Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
   Запрос.УстановитьПараметр("ТЗ",ТабОстАварда);
   Запрос.Выполнить();
   

   ЗапросТМП=Новый Запрос("SELECT * FROM ВТ_1C КАК T1 FULL JOIN ВТ_АВАРДА КАК T2 ON N.ID_SYS = V.ID_SYS");

   ЗапросТМП.МенеджерВременныхТаблиц = МВТ; //Копируем ссылку на временные таблицы
   мДанныеКонтрагентовАварда =ЗапросТМП.Выполнить().Выгрузить();

При выполнении пишет, что
Ошибка при вызове метода контекста (Выполнить)
   мДанныеКонтрагентовАварда =ЗапросТМП.Выполнить().Выгрузить(); //Получаем временную таблицу в таблице значений    
по причине:
{(1, 38)}: Таблица не найдена "ВТ_АВАРДА"
SELECT * FROM ВТ_1C КАК T1 FULL JOIN <<?>>ВТ_АВАРДА КАК T2 ON N.ID_SYS = V.ID_SYS

Что тут не так помогите.
1 Жан Пердежон
 
17.05.12
13:50
(0) пишешь неправильно
2 aleks-id
 
17.05.12
13:51
если делаешь так как у тебя то просто меняй каждый раз текст запроса. иначе у тебя каждый раз новый объект создается а старый уничтожается.
3 Рыцарь
 
17.05.12
13:51
Запрос=Новый Запрос("ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_1C ИЗ &ТЗ КАК Т1");
   Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
   МВТ = Запрос.МенеджерВременныхТаблиц;
   Запрос.УстановитьПараметр("ТЗ",ТабОст1С);
   Запрос.Выполнить();
   
   Запрос=Новый Запрос("ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_АВАРДА ИЗ &ТЗ КАК Т2");
   Запрос.МенеджерВременныхТаблиц= МВТ;
   Запрос.УстановитьПараметр("ТЗ",ТабОстАварда);
   Запрос.Выполнить();
   

   ЗапросТМП=Новый Запрос("SELECT * FROM ВТ_1C КАК T1 FULL JOIN ВТ_АВАРДА КАК T2 ON N.ID_SYS = V.ID_SYS");

   ЗапросТМП.МенеджерВременныхТаблиц = МВТ; //Копируем ссылку на временные таблицы

   мДанныеКонтрагентовАварда =ЗапросТМП.Выполнить().Выгрузить();
4 ИС-2
 
naïve
17.05.12
13:51
я чтобы ошибок не было делаю через конструктор. Там будет проще сделать
5 Ненавижу 1С
 
гуру
17.05.12
13:53
(0) разные менеджеры временных таблиц
6 Colci
 
17.05.12
13:53
(2) конкретнее можно?
7 aleks-id
 
17.05.12
13:53
Запрос=Новый Запрос("ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_1C ИЗ &ТЗ1 КАК Т1");
   Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
   Запрос.УстановитьПараметр("ТЗ1",ТабОст1С);
   Запрос.Выполнить();
   
   Запрос.Текст="ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_АВАРДА ИЗ &ТЗ2 КАК Т2";
   Запрос.УстановитьПараметр("ТЗ2",ТабОстАварда);
   Запрос.Выполнить();
   

   Запрос.Текст="SELECT * FROM ВТ_1C КАК T1 FULL JOIN ВТ_АВАРДА КАК T2 ON N.ID_SYS = V.ID_SYS";
   мДанныеКонтрагентовАварда =ЗапросТМП.Выполнить().Выгрузить();
8 aleks-id
 
17.05.12
13:53
но это через зад. лучше делать через пакет запросов.
9 Жан Пердежон
 
17.05.12
13:55
Запрос = Новый ("ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_1C ИЗ &ТЗ КАК Т1;
|ВЫБРАТЬ * ПОМЕСТИТЬ ВТ_АВАРДА ИЗ &ТЗ КАК Т2;
|SELECT * FROM ВТ_1C КАК T1 FULL JOIN ВТ_АВАРДА КАК T2 ON N.ID_SYS = V.ID_SYS");
Запрос.УстановитьПараметр("ТЗ",ТабОстАварда);
Запрос.УстановитьПараметр("ТЗ",ТабОстАварда);
мДанныеКонтрагентовАварда =ЗапросТМП.Выполнить().Выгрузить();

только вместо * имена полей написать надо
10 aleks-id
 
17.05.12
13:58
(9) облажался в во 2й и 5й строчке
одинаковые параметры устанавливаешь
11 Colci
 
17.05.12
13:59
(7),(9) Спасибо за ответы я понял в чем ошибка, я перезатерал объект.
Спасибо за вариант пакетной обработки запросов не знал про него.