Запрос, ПОЛНОЕ СОЕДИНЕНИЕ - не работает при одной пустой таблице #531253


#0 by DrLekter
Пишу запрос - ПОЛНОЕ СОЕДИНЕНИЕ из двух других выборок по разным регистрам, примерно так: Работает отлично, пока есть данные в обеих выборках. Если одна выборка
#1 by Ненавижу 1С
ыыыы
#2 by DrLekter
Сорри, ввод случайно нажал, а редактировать нельзя. Примерно так : ВЫБРАТЬ поле1, поле2 ИЗ Выборка1 ПОЛНОЕ СОЕДИНЕНИЕ Выборка2 ПО .... Если вторая часть (выборка2) оказывается полностью пустой (ни одной записи), запрос не выполняется. Первая - может быть пустой, может не пустой, при этом отрабатывает как надо. Где неправ?
#3 by kambala
универсальный запрос))
#4 by Axel2009
в где что добавлено?
#5 by Fram
раздел ГДЕ еще выложи
#6 by Fram
+ там наверняка есть условие накладываемое на Выборка2
#7 by Ненавижу 1С
показывай уже все, не стесняйся, особенно секции ГДЕ и ИМЕЮЩИЕ
#8 by DrLekter
Запрос получается сложный, сейчас вытащу весь его на свет Божий :)
#9 by DrLekter
ЗапросОбороты.КоличествоРасходОборотСклад1, ЗапросОстатки.КоличествоОстатокСклад1, ЗапросОбороты.КоличествоРасходОборотСклад2, ВЫБОР    КОГДА ЗапросОборотыОбороты.Номенклатура ЕСТЬ Null ТОГДА РасходыНаПроизводствоОбороты.Номенклатура КОНЕЦ КАК НоменклатураОбщая,    ЗапросОборотыОбороты.КоличествоРасходОборотСклад1,    ЗапросОборотыОбороты.КоличествоРасходОборотСклад2, ВЫБОР КОГДА ОборотыОбороты.Склад = &Склад1 ТОГДА ОборотыОбороты.КоличествоРасходОборот  ИНАЧЕ 0 КОНЕЦ КАК КоличествоРасходОборотСклад1, ВЫБОР КОГДА ОборотыОбороты.Склад = &Склад2 ТОГДА ОборотыОбороты.КоличествоРасходОборот  ИНАЧЕ 0 КОНЕЦ КАК КоличествоРасходОборотСклад2,    ОборотыОбороты.КоличествоРасходОборот КАК КоличествоРасходОборот    И ЗапросОборотыОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура)    ЗапросОборотыОбороты.КоличествоРасходОборот, ВЫБОР КОГДА ОстаткиОстатки.Склад ЕСТЬ Null ТОГДА 0 КОГДА ОстаткиОстатки.Склад = &Склад1 ТОГДА ОстаткиОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ КАК КоличествоОстатокСклад1, ВЫБОР КОГДА ОстаткиОстатки.Склад ЕСТЬ Null ТОГДА 0 КОГДА ОстаткиОстатки.Склад = &Склад2 ТОГДА ОстаткиОстатки.КоличествоОстаток ИНАЧЕ 0 КОНЕЦ КАК КоличествоОстатокСклад2    И ОстаткиОстатки.Номенклатура В ИЕРАРХИИ(&Номенклатура) СГРУППИРОВАТЬ ПО    ОстаткиОстатки.Номенклатура, ЗапросОстатки.КоличествоОстатокСклад1, ЗапросОбороты.КоличествоРасходОборотСклад2, ЗапросОстатки.КоличествоОстатокСклад2 УПОРЯДОЧИТЬ ПО Номенклатура ИТОГИ МАКСИМУМ(КоличествоРасходОборотСклад1), МАКСИМУМ(КоличествоОстатокСклад2) ПО Номенклатура ИЕРАРХИЯ Вот оно
#10 by DrLekter
Вот если РасходыНаПроизводствоОбороты отсутствуют в выбранных условиях, запрос получается пустой. А если ОборотыОбороты отсутствуют - почему-то все как и должно быть, выводится только из второй
#11 by Ненавижу 1С
условия из ГДЕ вынеси в параметры виртуальных таблиц
#12 by acsent
#13 by acsent
Работает отлично
#14 by DrLekter
Спасибо, буду пробовать
#15 by DrLekter
Все ваще просто оказалось - вместо ГДЕ    РасходыНаПроизводствоОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура)    И ЗапросОборотыОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура) написал ГДЕ    РасходыНаПроизводствоОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура)    ИЛИ ЗапросОборотыОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура) и все заработало! ))))) Тупанул, сорри....
#16 by DrLekter
Теперь с ним новая проблема: если у пользователя ограничены права, нужно выбирать с ключевым словом РАЗРЕШЕННЫЕ. Его можно использовать только в главном запросе. При этом он все равно почему-то выбирает не только разрешенные, на этапе работы с выборкой выскакивает предупреждение, что прав недостаточно. По идее, в конце он тоже должен отсеять неразрешенные, но почему-то так не делает ((
#17 by DrLekter
Я имел в виду, что когда подзапросы выполняются, они выбирают всю номенклатуру из регистров, но в окончательном запросе ключевое слово РАЗРЕШЕННЫЕ разве не должно отсечь все недопустимое?
#18 by Axel2009
потому что ограничивать надо таблицу регистра, а не справочник номенклатуры.
#19 by DrLekter
Понятно, спасибо Пока не стал в регистрах писать ограничения, обошел предварительным созданием списка разрешенной номенклатуры. На скорость выполнения вроде не повлияло (все же список немаленький получился, опасался тормозов при выполнении запроса с таким условием)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С