|
Запрос. Оператор В. Временная таблица | ☑ | ||
---|---|---|---|---|
0
akocur
16.02.18
✎
20:06
|
Доброго времени суток!
Почему следующий запрос ничего не возвращает? "ВЫБРАТЬ | Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо |ПОМЕСТИТЬ ФизЛица |ИЗ | Справочник.Сотрудники КАК Сотрудники |ГДЕ | Сотрудники.Ссылка В(&МассивОбъектов) | |ИНДЕКСИРОВАТЬ ПО | ФизическоеЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ФизическоеЛицо.ФИО КАК ФИОРаботника, | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ЗарплатныйПроект.Банк.Наименование КАК НаименованиеБанка, | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.НомерЛицевогоСчета КАК НомерЛицевогоСчета, | ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.Период КАК ДатаОткрытияСчета, | ЕСТЬNULL(СклоненияПредставленийОбъектов.РодительныйПадеж, """") КАК НаименованиеСотрудникаВРодПадеже, | ВЫБОР | КОГДА ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ФизическоеЛицо.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Мужской) | ТОГДА 1 | ИНАЧЕ 2 | КОНЕЦ КАК Пол |ИЗ | РегистрСведений.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.СрезПоследних( | , | ФизическоеЛицо В (""ВЫБРАТЬ | ФизЛица.ФизическоеЛицо КАК ФизическоеЛицо | ИЗ | ФизЛица КАК ФизЛица"")) КАК ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СклоненияПредставленийОбъектов КАК СклоненияПредставленийОбъектов | ПО ЛицевыеСчетаСотрудниковПоЗарплатнымПроектамСрезПоследних.ФизическоеЛицо = СклоненияПредставленийОбъектов.Объект"; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Запрос создаю в типовой ЗУП редакция 3.1. Платформа 8.3.10.2580. Создаю временную таблицу, так как тип переменной МассивОбъектов массив из элементов типа СправочникСсылка.Сотрудники, а регистр содержит измерение типа СправочникСсылка.ФизическиеЛица. Если в переменную поместить массив из элементов типа СправочникСсылка.ФизическиеЛица, то оператор В срабатывает и запрос возвращает не пустой результат. Конечно в этом случае не использую временную таблицу и вместо ФизическоеЛицо В (""ВЫБРАТЬ | ФизЛица.ФизическоеЛицо КАК ФизическоеЛицо | ИЗ | ФизЛица КАК ФизЛица"") пишу ФизическоеЛицо В (&МассивОбъектов) В консоле запросов при выполнении запроса с временными таблицами, консоль показывает, что во временной таблице есть записи, а конечный результат пустой. Подскажите, что я не так делаю? |
|||
1
Sapiens_bru
16.02.18
✎
20:28
|
""ВЫБРАТЬ
| ФизЛица.ФизическоеЛицо КАК ФизическоеЛицо | ИЗ | ФизЛица КАК ФизЛица"" Кавычки тут не нужны "КАК ФизическоеЛицо" тоже лишнее ХЗ, влияет это или нет |
|||
2
akocur
16.02.18
✎
20:54
|
(1) Спасибо! Ступил я. Кавычки поставил, для того чтобы можно было вызвать конструктор запроса. И забыл убрать.
|
|||
3
Vladal
16.02.18
✎
21:40
|
(1) псевдонимы КАК ФизическоеЛицо все-таки лучше оставить.
|
|||
4
Chameleon1980
16.02.18
✎
21:40
|
(2) не понял. а без доп кавычек не открывался конструктор*?
|
|||
5
akocur
16.02.18
✎
22:30
|
(4) Если хочешь открыть конструктор запросов внутри конструктора запросов, например для создания запроса к временной таблице, то ставишь кавычки, между ними пробел, выделяешь пробел, вызываешь контекстное меню, выбираешь команду Конструктор запросов.
|
|||
6
akocur
16.02.18
✎
22:38
|
(4) (5) Это в том случае, если в поле написания кода уже есть какой-то код. Например, в моём случае, если написать
|ФизическоеЛицо В (<здесь вызвать конструктор запросов>) то будет ошибка, а если написать вот так |ФизическоеЛицо В ("<выделить пробел, вызвать конструктор>") то ошибки не будет. Главное потом не забыть удалить кавычки. |
|||
7
Franchiser
гуру
17.02.18
✎
00:05
|
Писать подзапрос а параметрах виртуальной таблицы это жесть. Возможно ошибка в платформе нужно поискать. В некоторых релизах были проблемы при наличии в данных, например, значения NULL
|
|||
8
Franchiser
гуру
17.02.18
✎
00:07
|
Попробуй так
1 В (выбрать 1 из физлица где физлица.физлицо = физлицо) |
|||
9
Franchiser
гуру
17.02.18
✎
00:14
|
В данном случае будет коррелированный подзапрос, а не простой
|
|||
10
Chameleon1980
17.02.18
✎
04:34
|
(4) (5)
достаточно просто поставить пробел, выделить его и вызвать конструктор запроса - пробуйте. |
|||
11
Ненавижу 1С
гуру
17.02.18
✎
07:01
|
(7) это от незнания работы с null
|
|||
12
Franchiser
гуру
17.02.18
✎
15:37
|
Ошибки в запросах платформы бывают, и они исправляются:
Запрос с операторами В и НЕ Код ошибки: 10186500 Код(ы) обращения: SW1207545 Статус: Исправлена в тестовой версии Зарегистрирована: 27.10.2017 Исправлена: "Технологическая платформа", версия 8.3.12.1159 (для тестирования) Описание: При выполнении запроса с оператором В, используемом совместно с отрицанием (оператор НЕ), может быть получен неправильный результат, если в операторе В для сравнения используется тип ссылки. Код ошибки: 10168730 Код(ы) обращения: SW1082149 Статус: Исправлена в выпущенной версии Зарегистрирована: 18.10.2016 Исправлена: "Технологическая платформа", версия 8.3.8.2322 Описание: Результат запроса может быть неверным, если запрос содержит операцию ВЫБОР с большим количеством вариантов, а результат этой операции сравнивается с константой или параметром. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |