Имя: Пароль:
1C
1С v8
Второй запрос не видит временную таблицу
0 Baters
 
28.03.14
15:20
Добрый день.

Пытаюсь разобраться с запросами в 1С, возникла проблема с временными таблицами.....при попытке. Создаю временную таблицу ДокТЧ, но при попытке проведения документа вылетает ошибка,"Таблица не найдена "ДокТЧ"".
Подскажите плиз, что я делаю не так.




Процедура ОбработкаПроведения(Отказ, Режим)
    
     Движения.ТоварыНаСкладах.Записывать=Истина;
     Движения.ТоварыНаСкладах.Очистить();
    


    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
    
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СУММА(РеализацияТоваровТовары.КолВо) КАК КолВо,
        |    РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
        |    СУММА(РеализацияТоваровТовары.Сумма) КАК Сумма,
        |    РеализацияТоваровТовары.Ссылка.Склад
        |ПОМЕСТИТЬ ДокТЧ
        |ИЗ
        |    Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
        |ГДЕ
        |    РеализацияТоваровТовары.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РеализацияТоваровТовары.Номенклатура,
        |    РеализацияТоваровТовары.Ссылка.Склад
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        
        |ВЫБРАТЬ
        |    ДокТЧ.КолВо,
        |    ДокТЧ.Номенклатура,
        |    ДокТЧ.Сумма,
        |    ДокТЧ.Склад
        |ИЗ
        |    ДокТЧ КАК ДокТЧ";

    Запрос.УстановитьПараметр("Ссылка", Ссылка);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Движение=Движения.ТоварыНаСкладах.Добавить();
        Движение.ВидДвижения=ВидДвиженияНакопления.Расход;
        Движение.Период=Дата;
        Движение.КолВо=ВыборкаДетальныеЗаписи.КолВо;
        Движение.Номенклатура= ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.Склад=ВыборкаДетальныеЗаписи.Склад;
        
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;

    Движения.Записать();




Запрос=Новый Запрос;
Запрос.Текст=

"ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.Номенклатура,
|    ТоварыНаСкладахОстатки.КолВоОстаток
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(
|            &ГраницаВремени,
|            (Номенклатура, Склад) В
|                (ВЫБРАТЬ
|                    ДокТЧ.Номенклатура,
|                    ДокТЧ.Склад
|                ИЗ
|                    ДокТЧ КАК ДокТЧ)) КАК ТоварыНаСкладахОстатки
|ГДЕ
|    ТоварыНаСкладахОстатки.КолВоОстаток < 0";


Запрос.УстановитьПараметр("ГраницаВремени",Новый Граница(МоментВремени(),ВидГраницы.Включая));  


РезультатЗапроса=Запрос.Выполнить();

Если НЕ РезультатЗапроса.Пустой() Тогда

    
ВыборкаДетЗаписи=РезультатЗапроса.Выбрать();
Пока ВыборкаДетЗаписи.Следующий() Цикл
    
    
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "не хватает " +ВыборкаДетЗаписи.Номенклатура + " в количестве " + -ВыборкаДетЗаписи.КолВоОстаток ;
    Сообщение.Сообщить();
    
КонецЦикла;    
Отказ=Истина;

КонецЕсли;    


Если Отказ Тогда

Возврат;    

КонецЕсли;





КонецПроцедуры
1 kosts
 
28.03.14
15:21
Запрос=Новый Запрос; - второе убрать, наверное
2 Maxus43
 
28.03.14
15:24
МВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МВТ;
...
тряляля
...
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МВТ;
3 Maxus43
 
28.03.14
15:27
А вобще - пользуйся пакетными запросами, зачем разрывать?
Запрос.ВыполнитьПакет() есть такое дело...
Разрывают на разные запросы когда этого требует логика, или например передать в другую процедуру МВТ надо
4 Адинэснег
 
28.03.14
15:28
новый запрос - новый МВТ
5 Baters
 
28.03.14
15:40
Большое спасибо!!!
Помогли разобраться... 10 мин и все...(сам 3 часа в него лупился).

Maxus43, до пакетов запросов еще не дошел (в процессе).

Еще раз спасибо.
6 Maxus43
 
28.03.14
15:44
(5) собственно первый - уже пакетный, просто можно ещё один запрос туда же добавить, будет в одном запросе 2 выборки