Имя: Пароль:
1C
1С v8
Временные таблицы
0 Caesar
 
23.09.14
01:04
Добрый вечер

Только не пинайте, пожалуйста, особенно сильно.

Вот такой код:

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

АссортиментныйПеречень - непустой массив, содержащий элементы и группы справочника "Номенклатура"
таблицаТоваровКПроверке - непустая таблица из одной колонки, содержащая элементы справочника "Номенклатура".

В общем, суть кода - выяснить, какие элементы таблицыТоваровКПроверке не входят в массив "ассортиментныйперечень". Результат запроса - пустой. Может, кто-то укажет на ошибку?
Заранее благодарен.
1 y22-k
 
23.09.14
01:30
пакетный запрос сделай ив консоли запросов посомтри
2 PePaRiTB
 
23.09.14
04:40
(0) а в переменной АссортиментныйПеречень, что содержится? Если пустое значение, то ничего не выведет. А действительно лучше сделать как рекомендует (1)
3 SeraFim
 
23.09.14
06:47
вместо массива попробуй СписокЗначений использовать.
4 nola
 
23.09.14
06:53
для передачи в качестве параметра в запрос ТЗ должна быть типизирована
5 catena
 
23.09.14
07:13
(4)Если бы она была нетипизирована, запрос бы не выполнился вовсе. Я бы проверила все-таки реально ли не должен быть запрос пустым. Например, поменять "не в иерархии" на "в иерархии".
6 Caesar
 
23.09.14
08:09
(2) в переменной АссортиментныйПеречень содержится массив, включающий в себя элементы и группы справочника, то есть непустой

(4) ТЗ типизирована так:
таблицаТоваровКПроверке.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));

(5) пробовал убирать НЕ, все едино - результат пустой

(1) к стыду своему, консоль запросов не пробовал. Покурю, что за зверь
7 nola
 
23.09.14
08:13
а как он в консоль ТЗ передаст?
Лучше просто отладчиком посмотреть, есть ли вообще во втором запросе записи (предварительно убрав ГДЕ)
8 catena
 
23.09.14
08:16
У меня консоль с возможностью задания параметра программно :)
9 Caesar
 
23.09.14
08:33
До консоли дело не дошло.
Выяснилось, что не работает загрузка колонки в таблицаТоваровКПроверке
Если загружать перебором - то все взлетает.
А это уже совсем другая история)

Спасибо всем участникам, в самом деле, утро вечера мудренее)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн