8.х Содержимое объекта данных может быть выбрано только во временную таблицу

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Vitaly, 11 мар 2014.

  1. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Помогите разобраться с ошибкой:
    Ошибка при вызове метода контекста (Выполнить)
    ТаблицаСоответствия=Запрос.Выполнить().Выгрузить();
    по причине:
    Содержимое объекта данных может быть выбрано только во временную таблицу
    Код:
    Запрос=Новый Запрос;
         Запрос.Текст=
         "ВЫБРАТЬ
         |   ТЗСоответствия.Номенклатура
         |ИЗ
         |   &ТЗСоответствия КАК ТЗСоответствия
         |ГДЕ
         |   ТЗСоответствия.Код = &Код
         |   И ТЗСоответствия.БазоваяЕдиница = &БазоваяЕдиница";
         Запрос.УстановитьПараметр("Код",пКод);
         Запрос.УстановитьПараметр("БазоваяЕдиница",пБазоваяЕдиница);
         ТаблицаСоответствия=Запрос.Выполнить().Выгрузить();
    
    Данные берутся из временной таблицы.
    Код:
    ТЗСоответствия = Новый ТаблицаЗначений;
       ТЗСоответствия.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(8)));
       ТЗСоответствия.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50)));
       ТЗСоответствия.Колонки.Добавить("БазоваяЕдиница", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(25)));
       ТЗСоответствия.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(11)));
    //далее идет заполнение ТЗ
    
  2. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Пробовал переписать код вот так:
    Код:
    "ВЫБРАТЬ
         |   ТЗСоответствия.Номенклатура
         |ПОМЕСТИТЬ ТЗСоответствия2
         |ИЗ
         |   &ТЗСоответствия КАК ТЗСоответствия
         |ГДЕ
         |   ТЗСоответствия.Код = &Код
         |   И ТЗСоответствия.БазоваяЕдиница = &БазоваяЕдиница
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         |   ТЗСоответствия2.Номенклатура
         |ИЗ
         |   ТЗСоответствия2 КАК ТЗСоответствия2";
    
    тогда:
    Ошибка при вызове метода контекста (Выполнить)
    ТаблицаСоответствия=Запрос.Выполнить().Выгрузить();
    по причине:
    {(5, 2)}: Не задано значение параметра "ТЗСоответствия"
    <<?>>&ТЗСоответствия КАК ТЗСоответствия
  3. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Код:
    "ВЫБРАТЬ
         |   ТЗСоответствия.Номенклатура
         |ПОМЕСТИТЬ ТЗСоответствия2
         |ИЗ
         |   &ТЗСоответствия КАК ТЗСоответствия
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         |   ТЗСоответствия2.Номенклатура
         |ИЗ
         |   ТЗСоответствия2 КАК ТЗСоответствия2";
    Запрос.УстановитьПараметр("ТЗСоответствия", ТЗСоответствия);
    
    Программа все по-русски пишет
    Vitaly нравится это.
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вариант 1 не канает, так как из ТЗ передаваемой в качестве параметра реально можно только во временную такблицу выбрать

    вариант 2 не проканал, так как забыли эту самую таблицу в запрос передать

    Костя прав, вам программа по русски написала где ей не нравиться в вашем коде.

    А нафига ТЗ передать в запрос, чтоб потом ееже выгрузить в тз?

Поделиться этой страницей