Запрос: условие на реквизит одного из регистраторов #780184


#0 by dft2014
Регистр накопления "ФактическиеОтпуска" содержит разные документы-регистраторы. Как мне в запросе добавить такое условие: отбирать по всем регистраторам, но если регистратором будет документ "Отпуск", то отбирать только те отпуска, у которых реквизит ПересчетОтп = ЛОЖЬ. Вот мой код, но он почему-то не видит остальные регистраторы, кроме Отпуска:
#1 by Amra
А что ты хотел при "ФактическиеОтпуска.Регистратор ССЫЛКА Документ.Отпуск" в "ГДЕ"?
#2 by f_vadim
ВЫБОР КОГДА ФактическиеОтпуска.Регистратор ССЫЛКА Документ.Отпуск ТОГДА ФактическиеОтпуска.Регистратор.ПересчетОтп = ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ
#3 by Дык ё
выразить?
#4 by dft2014
Не совсем то решение. В док-те "Отпуск" есть новый реквизит "ПересчетОтп"(тип булево). В некоторых отпусках он ИСТИНА, в некоторых ЛОЖЬ. В запросе, мне надо добавить условие:   Если регистратором является документ "Отпуск", то отобрать только те отпуска, у которых реквизит ПересчетОтп = ЛОЖЬ. Если регистратором является любой другой документ, то это условие не нужно.
#5 by Ёпрст
это именно то, что ты просишь
#6 by dft2014
в условии во всех отпусках будет видеть ПересчетОтп = ЛОЖЬ. А мне не так надо!
#7 by dft2014
Я так думаю, надо что-то вроде такого условия: Если (ФактическиеОтпуска.Регистратор ССЫЛКА Документ.Отпуск И ФактическиеОтпуска.Регистратор.ПересчетОтп = ЛОЖЬ) Тогда
#8 by Ёпрст
нет
#9 by Ёпрст
Смотри вниматочнее, это условие
#10 by Мыш
ВЫБОР КОГДА ФактическиеОтпуска.Регистратор ССЫЛКА Документ.Отпуск ТОГДА НЕ ФактическиеОтпуска.Регистратор.ПересчетОтп ИНАЧЕ ИСТИНА КОНЕЦ
#11 by ViSo76
Если много регистраторов, то скорее всего так: ГДЕ ... ВЫБОР   КОГДА ФактическиеОтпуска.Регистратор ССЫЛКА Документ.Отпуск КОНЕЦ
#12 by Ёпрст
че за бредятина ?
#13 by dft2014
Изменила свой запрос из на ваше условие из : при таком условии не отбирает документы с другими регистраторами, тянет только Регистраторы = Отпуск.
#14 by Ёпрст
там выразить нафик не упало, ибо выше уже идёт сравнение на нужный тип документа
#15 by Ёпрст
при таком коде - ошибка синтаксиса. Показывайте тот запрос, который выполняете, а не копипасту неизвестно откуда.
#16 by LordCMEPTb
Судя по именно такая бредятина и нужна, чтобы цеплялся только 1 таблица документа.
#17 by Ёпрст
ну-ну, после case там и так всегда будет 1 таблица документа
#18 by dft2014
Это и есть исходный запрос! Почему прочие регистраторы не видит?
#19 by Ёпрст
Ну вот только врать то не надо ? В этом запросе не верно написано условие.
#20 by Ёпрст
Покажите тот запрос, что выполняете.
#21 by dft2014
я просто убрала из запроса лишние строчки, для читаемости запроса на форуме. А весь запрос выглядит так:
#22 by Ёпрст
Ты не поверишь - но тут тоже ошибка синтаксиса из-за неправильного условия. Еще варианты будут ?
#23 by FIXXXL
решение в лоб: ЕСТЬNULL(ФактическиеОтпуска.Регистратор.ПересчетОтп, ЛОЖЬ) потом отбор по ЛОЖЬ если я правильно понял условия
#24 by Ёпрст
И во втором запросе псевдонимы полей не нужны. И, наконец. пользуйся ужо конструктором запросов - он сразу тебе ошибку синтаксиса выдаст. И "причешет" твой текст запроса
#25 by dft2014
Да, все верно! Так и надо мне! Только не знаю как сделать: 1) добавить, что выполнять условие ЕСТЬNULL(ФактическиеОтпуска.Регистратор.ПересчетОтп, ЛОЖЬ), только если ФактическиеОтпуска.Регистратор ССЫЛКА Документ.Отпуск. 2) и как потом делать второй отбор по ЛОЖЬ?
#26 by dft2014
Конструктор запросов мне ошибку не выдает ))
#27 by Ёпрст
ты не поверишь, ответ в . Просто ты так  и не показала текст запроса, который реально выполняешь
#28 by xafavute
сравнение на тип НЕ ОТМЕНЯЕТ необходимость выразить Ибо SQL - это не построчное выполнение
#29 by Ёпрст
врешь ведь. То что написано в - с ошибкой в условии.
#30 by dft2014
ответ в - это мой вопрос :) Исходный текст запроса я уже выложила в . И ... что-то вы меня совсем запутали с условиями...
#31 by Ёпрст
Тот , что в - не рабочий. Выложите текст запроса после конструктора.
#32 by Ёпрст
И да, решение в
#33 by FIXXXL
1) выражением получаешь поле с Ложь-Истина, Истину вернут только доки, в которых есть реквизит ПересчетОтп и этот реквизит=Истина 2) фильтруешь по этому полю, как я понял, тебе только Ложь нужно
#34 by FIXXXL
+ или есть еще регистраторы с таким полем? тогда немного усложнится отбор во втором пункте: Ложь + условие по ССЫЛКА НужныйТипДокумента
#35 by PR
Мда, колхоз "Северное пламя". Чем -то не устраивает?
#36 by youalex
имхо, нагляднее будет левосоединить: ЛЕВОЕ СОЕДИНЕНИЕ Документ.Отпуск КАК ДокОтпуск ... 2) Через Выразить (неявное соединение): ГДЕ isnull(ВЫРАЗИТЬ(Регистратор КАК Документ.Отпуск).ПересчетОтп, ЛОЖЬ) = ЛОЖЬ
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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