Имя: Пароль:
1C
1С v8
СКД Временные таблицы в тексте запроса
0 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й параметр у этого метода - макет компоновки а в нем собственно запрос с обращением к ВТ.

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

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

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

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

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

Ошибка при вызове метода контекста (Выполнить)
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных1, Настройка1, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
Поле не найдено
7 acht
 
27.05.21
15:02
(6) > Выбрать * ИЗ ВТ
Хороший пример, почему за звездочки в запросе надо карать.

ВЫБРАТЬ ВЫРАЗИТЬ(ВТ.Ссылка КАК Справочник.Номенклатура) ИЗ ВТ КАК ВТ
8 Kassern
 
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 ? // и далее передаем в Менеджер временных таблиц через новый запрос
9 acht
 
27.05.21
15:07
(8) А это там ритуальные пляски для получения поля КадровыеДанныеСтрокой. На суть не влияет.
10 Air777
 
27.05.21
15:08
(7)ничего не дало
(8) в примере прогоном добавляется колонка к ВТ, мне это не надо.

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