Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Проблема с запросом

Проблема с запросом
Я
   John342
 
05.06.20 - 15:49
Добрый день, форумчане.

Пытаюсь выполнить запрос на данные, расположенные в Документ.ЗаказКлиента

В модуле своей обработки пишу следующее:

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

На это мне выдаёт ошибку:
{ВнешняяОбработка.Оповещение_руководителя_о_крупных_заказах.МодульОбъекта(32)}: Ошибка при вызове метода контекста (Выполнить)
    Рез = ЗапросНаДанныеТаблицы.Выполнить();
по причине:
Содержимое объекта данных может быть выбрано только во временную таблицу.

Так я вроде указал временную таблицу. Или чего-то не понимаю? Объясните, пожалуйста.
   BaHgaJI
 
1 - 05.06.20 - 15:50
Документы.ЗаказКлиента выгрузи в отз
   BaHgaJI
 
2 - 05.06.20 - 15:50
тз*
   John342
 
3 - 05.06.20 - 15:51
(2) Тз это мне нужно создать новый объект ТаблицаЗначений?
   BaHgaJI
 
4 - 05.06.20 - 15:51
и надо добавить ПОМЕСТИТЬ вт
   John342
 
5 - 05.06.20 - 15:52
(4) Кажется, понял. Сейчас попробую.
   BaHgaJI
 
6 - 05.06.20 - 15:55
|ВЫБРАТЬ
    |    Таблица.Поле1,
    |    Таблица.Поле2
    |ПОМЕСТИТЬ вт
    |ИЗ
    |    &ТаблицаКАК Таблица

А менеджер зачем?
   HJ894
 
7 - 05.06.20 - 16:02
Поместить надо в табл тебе уже написали
   John342
 
8 - 05.06.20 - 16:05
(4) Теперь ругается вот на это:
{ВнешняяОбработка.Оповещение_руководителя_о_крупных_заказах.МодульОбъекта(32)}: Ошибка при вызове метода контекста (Выполнить)
    ЗапросНаДанныеТаблицы.Выполнить();
по причине:
{(10, 2)}: Неверные параметры "Табл"
<<?>>&Табл КАК Табл
   BaHgaJI
 
9 - 05.06.20 - 16:16
Тут телепатов нет, весь код покажи с установкой параметров
   John342
 
10 - 05.06.20 - 16:23
(9)     //МВТ = новый МенеджерВременныхТаблиц;

    МояТаблица = новый ТаблицаЗначений;
    МояТаблица.Колонки.Добавить("Номер",Новый ОписаниеТипов("Строка"));
    МояТаблица.Колонки.Добавить("Дата",Новый ОписаниеТипов("Дата"));
    МояТаблица.Колонки.Добавить("Клиент",Новый ОписаниеТипов("Строка"));
    МояТаблица.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Строка"));
    МояТаблица.Колонки.Добавить("Менеджер",Новый ОписаниеТипов("Строка"));

    ЗапросНаДанныеТаблицы = Новый Запрос;
    //ЗапросНаДанныеТаблицы.МенеджерВременныхТаблиц = МВТ;

    ЗапросНаДанныеТаблицы.УстановитьПараметр("ТаблКуда",МояТаблица);

    ЗапросНаДанныеТаблицы.Текст = "
    |ВЫБРАТЬ
    |Табл.Номер КАК Номер,
    |Табл.Дата КАК Дата,
    |Табл.Партнер КАК Партнер,
    |Табл.СуммаДокумента КАК СуммаДокумента,
    |Табл.Менеджер КАК Менеджер
    |ПОМЕСТИТЬ ТаблКуда
    |ИЗ
    | Документ.ЗаказКлиента КАК Табл";
    ЗапросНаДанныеТаблицы.Выполнить();
   John342
 
11 - 05.06.20 - 16:24
(9) Убрал параметр. Было
ЗапросНаДанныеТаблицы.УстановитьПараметр("Табл",Документ.ЗаказКлиента);
   arsik
 
12 - 05.06.20 - 16:26
(10) херня какая то.
   BaHgaJI
 
13 - 05.06.20 - 16:27
(12) согласен=)
   AlvlSpb
 
14 - 05.06.20 - 16:27
(10) Бред. См подсказку https://helpf.pro/faq83/view/1722.html
   BaHgaJI
 
15 - 05.06.20 - 16:28
ЗапросНаДанныеТаблицы.УстановитьПараметр("Таблица",Документ.ЗаказКлиента.Выгрузить());

    ЗапросНаДанныеТаблицы.Текст = "
    |ВЫБРАТЬ
    |Табл.Номер КАК Номер,
    |Табл.Дата КАК Дата,
    |Табл.Партнер КАК Партнер,
    |Табл.СуммаДокумента КАК СуммаДокумента,
    |Табл.Менеджер КАК Менеджер
    |ПОМЕСТИТЬ ТаблКуда
    |ИЗ
    | &Таблица КАК Таблица";
    ЗапросНаДанныеТаблицы.Выполнить();
   AlvlSpb
 
16 - 05.06.20 - 16:28
(14) + Если не использовать МВТ, то два запроса в примере надо объединить в один (два пакета)
   John342
 
17 - 05.06.20 - 16:30
Всем спасибо. Буду пробовать =)
   AlvlSpb
 
18 - 05.06.20 - 16:36
(15) ЗапросНаДанныеТаблицы.УстановитьПараметр("Таблица",Документ.ЗаказКлиента.Выгрузить());©
Это как? ))))) Документ.ЗаказКлиента.Выгрузить()?
   John342
 
19 - 05.06.20 - 16:39
(18) Да, это не работает ) Мне надо как-то достучаться до этой области, т.к. запрос возвращает мне "пустоту".
   BaHgaJI
 
20 - 05.06.20 - 16:40
(18) :DDD  ну тупанул, почему то подумал, что ЗаказаКлиента это тч, а в документ сама ссылка.
   John342
 
21 - 05.06.20 - 16:43
(20) Не, ЗаказКлиента-документ. Там внутри ещё реквизиты, табличные части и формы.
   BaHgaJI
 
22 - 05.06.20 - 16:43
А что нужно вытащить то?
   BaHgaJI
 
23 - 05.06.20 - 16:44
Для чего документ пихать в запрос?
   John342
 
24 - 05.06.20 - 16:44
(22) Реквизиты из этого документа.
   John342
 
25 - 05.06.20 - 16:45
(23) Не знаю, я только постигаю запросы) Я новичок в 1с =)
   John342
 
26 - 05.06.20 - 16:45
(23) Вообще я взял за основу запрос из динамического списка. Но видать, его нужно делать как-то иначе.
   BaHgaJI
 
27 - 05.06.20 - 16:49
(26)  А так не судьба?

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ЗаказКлиента.Номер КАК Номер,
        |    ЗаказКлиента.Дата КАК Дата
        |ИЗ
        |    Документ.ЗаказКлиента  КАК ЗаказКлиента 
        |ГДЕ
        |    ЗаказКлиента.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
    КонецЦикла;
   John342
 
28 - 05.06.20 - 16:56
(27) Попробую)
   AlvlSpb
 
29 - 05.06.20 - 17:08
(28) Эмммм. А по каким-нибудь книжкам не пробовал делать и учить? Поверь, это более продуктивно.
   Kassern
 
30 - 06.06.20 - 10:15
(0) Когда ты используешь МенеджерВременныхТаблиц, ты должен понимать зачем ты это делаешь. Если тебе надо сделать выборку из пары таблиц, то можешь написать простой запрос, где используя временные таблицы (или вложенные запросы) в итоге получаешь выборку данных. Если же у тебя очень сложный запрос состоящий из множества таблиц, которые нужно получать тоже различными запросами, тогда ты можешь поэтапно делать запрос пихать его во временную таблицу, а эту таблицу уже в МенеджерВременныхТаблиц и таких таблиц можно напихать множество в этот менеджер... А в конце взять все эти временные таблицы из менеджера объединить одним запросом и вывести нужные данные в выборку. В этом случае у тебя будет красивый итоговый запрос, читаемый код и корректно раскидана нагрузка на сервер (т.к. все запросы выполняются поэтапно и последовательно уничтожаются временные таблицы). Без МенеджерВременныхТаблиц, такие бы запросы выглядели убогими с огромным количеством временных таблиц в одном запросе.
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.