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

СКД Временные таблицы в тексте запроса

СКД Временные таблицы в тексте запроса
Я
   Air777
 
27.05.21 - 13:59
В 8.3.17 Добавлена возможность обращаться к ВТ прямо в тексте запроса.
Есть даже примеры :
https://infostart.ru/1c/articles/1229680/
https://free1c.ru/index.php/stati/61-ispolzovanie-vneshnikh-tablits-znachenij-v-otchete-1s-na-skd-na-realnom-primere

Авторы предлагают сформировать ВТ положить ее в менеджер и отправить в метод Инициализировать процессора компоновки.
Вроде все логично. Вроде..

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,, ДанныеРасшифровки, Истина,, МенеджерВременныхТаблиц);

Только вот 1й параметр у этого метода - макет компоновки а в нем собственно запрос с обращением к ВТ.

И я ловлю ошибку уже на этапе
МакетКомпоновкиДанных= КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройка);
который идет первым, и там в тексте запроса обращение к ВТ

похоже я недопонимаю порядок вызовов...
Как сделать видимой ВТ в тексте запроса схемы???

Поделитесь кто в курсе.
Спасибо.
 
 Партнерская программа EFSOL Oblako
   ildary
 
1 - 27.05.21 - 14:38
(1) а эта штука (возможность обращаться к ВТ прямо в тексте запроса) - совместима ли с текущим режимом совместимости базы?
   Air777
 
2 - 27.05.21 - 14:43
Совместимость отключена вовсе, само собой.
Платформа 8.3.18.1483
   acht
 
3 - 27.05.21 - 14:46
(0) Дык на инфостарте в первом же комментарии написано про типы полей временной таблицы
   aka MIK
 
4 - 27.05.21 - 14:53
(0) код в ПриКомпоновке выложите
   acht
 
5 - 27.05.21 - 14:55
И текст ошибки =)
   Air777
 
6 - 27.05.21 - 15:00
МВТ=Новый МенеджерВременныхТаблиц;
        ТекстЗапроса="
        |ВЫБРАТЬ
        |Ссылка
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |Справочник.Номенклатура";
        
        Запрос=Новый Запрос(ТекстЗапроса);
        Запрос.МенеджерВременныхТаблиц=МВТ;
        Запрос.Выполнить();
        
        СхемаКомпоновкиДанных1=ЭтотОбъект.ПолучитьМакет("Обработка");
        Настройка1=СхемаКомпоновкиДанных1.НастройкиПоУмолчанию;
                        
        ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;        
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
        
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных1, Настройка1, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
        
        // Создадим и инициализируем процессор компоновки

        ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина,,МВТ);
        
        Результат=Новый ТаблицаЗначений;
        
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
        ПроцессорВывода.УстановитьОбъект(Результат);
        ПроцессорВывода.Вывести(ПроцессорКомпоновки,Истина);

В схеме простой запрос 
Выбрать * ИЗ ВТ

Вылетает на этапе получения макета:

Ошибка при вызове метода контекста (Выполнить)
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных1, Настройка1, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
Поле не найдено
   acht
 
7 - 27.05.21 - 15:02
(6) > Выбрать * ИЗ ВТ
Хороший пример, почему за звездочки в запросе надо карать.
ВЫБРАТЬ ВЫРАЗИТЬ(ВТ.Ссылка КАК Справочник.Номенклатура) ИЗ ВТ КАК ВТ
   Kassern
 
8 - 27.05.21 - 15:04
(6) а как же 2ой пункт из https://free1c.ru/index.php/stati/61-ispolzovanie-vneshnikh-tablits-znachenij-v-otchete-1s-na-skd-na-realnom-primere ? // и далее передаем в Менеджер временных таблиц через новый запрос
   acht
 
9 - 27.05.21 - 15:07
(8) А это там ритуальные пляски для получения поля КадровыеДанныеСтрокой. На суть не влияет.
   Air777
 
10 - 27.05.21 - 15:08
(7)ничего не дало
(8) в примере прогоном добавляется колонка к ВТ, мне это не надо.

Я ловлю ошибки даже в конструкторе набора данных СКД. Нет таблицы ВТ и ничего про нее не знает конструктор.
Поэтому у меня и подозрение что я гдето важнейшую вещь упускаю
   acht
 
11 - 27.05.21 - 15:11
(10) Галочку "Автозаполнение" сними
   Air777
 
12 - 27.05.21 - 15:13
   Air777
 
13 - 27.05.21 - 16:16
Похоже отчеты имеют свой режим совместимости который нигде не видно.
когда я создал новый пустой  с 0 - все работает, подключил отчет в конфу - тоже работает.
Чудесаааа
   Air777
 
14 - 27.05.21 - 16:24
Вопрос закрыт

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