|   |   | 
| 
 | Второй запрос не видит временную таблицу | ☑ | ||
|---|---|---|---|---|
| 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 выборки     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |