Имя: Пароль:
1C
1С v8
Содержимое объекта данных может быть выбрано только во временную таблицу
0 wwwqwert2014
 
05.06.13
14:50
Решаю задачу 1.16 из сборника задач спеца по платформе.
Ошибка в запросе:
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ВложенныйЗапрос.Номенклатура,
       |    ВложенныйЗапрос.Количество КАК Количество
       |ПОМЕСТИТЬ временнаяТаб
       |ИЗ
       |    (ВЫБРАТЬ
       |        ТЗНехваткаКомплектующих.Номенклатура КАК Номенклатура,
       |        СУММА(ТЗНехваткаКомплектующих.Количество) КАК Количество
       |    ИЗ
       |        &ТЗНехваткаКомплектующих КАК ТЗНехваткаКомплектующих
       |    
       |    СГРУППИРОВАТЬ ПО
       |        ТЗНехваткаКомплектующих.Номенклатура
       |    
       |    ОБЪЕДИНИТЬ ВСЕ
       |    
       |    ВЫБРАТЬ
       |        ПланЗакупокСписокНоменклатуры.Номенклатура,
       |        СУММА(ПланЗакупокСписокНоменклатуры.Количество)
       |    ИЗ
       |        Документ.ПланЗакупок.СписокНоменклатуры КАК ПланЗакупокСписокНоменклатуры
       |    ГДЕ
       |        ПланЗакупокСписокНоменклатуры.Ссылка = &Ссылка
       |    
       |    СГРУППИРОВАТЬ ПО
       |        ПланЗакупокСписокНоменклатуры.Номенклатура) КАК ВложенныйЗапрос
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    временнаяТаб.Номенклатура,
       |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ временнаяТаб.Количество) КАК Количество
       |ИЗ
       |    временнаяТаб КАК временнаяТаб
       |
       |СГРУППИРОВАТЬ ПО
       |    временнаяТаб.Номенклатура";

       Запрос.УстановитьПараметр("ТЗНехваткаКомплектующих", ТЗНехваткаКомплектующих);
       Запрос.УстановитьПараметр("Ссылка", СсылкаНаПланЗакупок);    //передать ссылку на ПланЗакупок
       Результат = Запрос.Выполнить();


вот здесь описывается ТаблицаЗначений

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



Выскакивает ошибка в запросе:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ПланПродаж.МодульОбъекта(187)}: Ошибка при вызове метода контекста (Выполнить)
       Результат = Запрос.Выполнить();
по причине:
Содержимое объекта данных может быть выбрано только во временную таблицу
1 salvator
 
05.06.13
14:52
(0) Кнопка "Я" справа от названия темы.
2 viktor_vv
 
05.06.13
14:52
Сначала вот это &ТЗНехваткаКомплектующих загони во временную таблицу, а потом уже используй ВТ в объединении.
3 salvator
 
05.06.13
14:53
И колонки явно типизируй у ТЗ
4 viktor_vv
 
05.06.13
14:53
И колонки ТЗ

ТЗНехваткаКомплектующих.Колонки.Добавить("Номенклатура");

типизируй.
5 Ёпрст
 
гуру
05.06.13
14:55
(0)
1. типизируй явно все колонки ТЗНехваткаКомплектующих
2. положи ТЗНехваткаКомплектующих во временную табличку первым из пакетных запросо
3. в основном запросе соединяйся/бери данные ужо с этой временной таблички.