проверка параметра запроса на пустоту #346523


#0 by Origin
Есть запрос с параметром(список значений) как проверить что параметр пустой?
#1 by luns
В последней версии платформы у объекта запрос есть свойство, "параметры" кажеться - тип Структура - там все параметры
#2 by hhhh
можно просто список значений взять и проверить.
#3 by Origin
Уточню, мне это надо ВНУТРИ ЗАПРОСА проверить, ЕСТЬ NULL не катит - ругается, количество строк в списке не знаю как проверить
#4 by hhhh
никак
#5 by lxndr
"Выбрать ......... ......... ГДЕ " +?(Список.Количество = 0, "ИСТИНА", "Таблица.Номенклатура В (&Список)") + И ............. ..........";
#6 by Origin
В запросе так нельзя
#7 by Origin
а понял сформировать текст так можно, только у меня компановка там нет у меня возможности текст запроса менять
#8 by Origin
Еще уточню задачу, Нужны к примеру остатки ТМЦ из регистраНакопления, ТМЦ должно быть в спискеТМЦ или все остатки если список ТМЦ не задан
#9 by hhhh
а зачем тебе проверять? С пустым списком вроде нормально отбабатывает.
#10 by Megas
......... ......... ГДЕ " +?(Список.Количество = 0, "ИСТИНА", "Таблица.Номенклатура В (&Список)") + и ........ А конструкция Выбрать когда ... тогда ... иначе ... конец   неподходит?
#11 by hhhh
не подходит
#12 by Origin
не подходит
#13 by Origin
конструкция Выбрать когда а условие какое?
#14 by Megas
Вобще я точно не знаю но можно вообще не ставить условий =) Далее уже в настройках отчёта ставиш ОТБОР  ... и выбираеш что тебе нужно ...
#15 by Лефмихалыч
проверяй снаружи запроса и генерируй разный текст в зависимости от результата проверки
#16 by Megas
И ещё ... создаёш форму .... Процедура ПриОткрытии там можно отловить текст запроса... (я видел но делать с ним чтонибудь я не пробовал)
#17 by Aprobator
В типовой конфе ЗУП используется следующая методика - В запросе надо проверить на пустоту ВидРасчета, так это делается следующим образом (у вида расчета составной тип): ВЫБОР    КОГДА ВидРасчета.Код ЕСТЬ NULL ТОГДА           .....    ИНАЧЕ           ..... КОНЕЦВЫБОРА если тип определен (в 8 - ке не знаю, а в 8.1 это работает) тогда ВЫБОР     КОГДА ТвоеЗначение = ЗНАЧЕНИЕ(Справочник.ТвойСправочник.ПустаяССылка) ну и т.д.
#18 by hhhh
это не то
#19 by Aprobator
Тогда так: "...            ....    ИНАЧЕ            .... КОНЕЦВЫБОРА
#20 by NewNick
>>Еще уточню задачу, >>Нужны к примеру остатки ТМЦ из регистраНакопления, >>ТМЦ должно быть в спискеТМЦ или все остатки если список ТМЦ не задан
#21 by Aprobator
дык Условие В так и отрабатывает. Если список пустой то оно - всегда дает ИСТИНА, если не пустой, то ИСТИНА выдается только по условию вхождения в список. Или я чего-то не понял?
#22 by Aprobator
т.е. данное условие пихаем в условие нужной виртуальной таблицы и вся недолга.
#23 by NewNick
>>Если список пустой то оно - всегда дает ИСТИНА угу шас
#24 by Aprobator
Хм - в самом деле неработает. В 7 - ке это отрабатывало.
#25 by hhhh
попробуй
#26 by NewNick
если в списокТМЦ воткнуть пустую ссылку в случае когда там 0 элементов только тогда прокатит
#27 by acsent
используй ПостроительЗапроса
#28 by acsent
#29 by BabySG
Гений1С давным давно нарыл способ это сделать - только в тот момент никто его не понял.
#30 by lxndr
Если на СКД, то задавай уловие не в основном запросе, а в условиях компоновки ... {     ГДЕ Номенклатура В (&Список) } ... При отсутствии папаметра условие применяться не будет
#31 by Aprobator
Поизвращался с заполнением списка на примере справочника Физлиц (под рукой был только ЗУП). Лови - может поможет:
#32 by Aprobator
+ 31, т.е. если Спис пустой - то берутся все элементы справочника. Иначе только те, что в условии.
#33 by Гений 1С
Можно. Если в списке - элементы типо номенклатура, то чтото: ВЫБОР КОГДА 0 В (   ВЫБРАТЬ Количество(*) ИЗ Справочник.Номенклатура ГДЕ Ссылка В (&Список)) ТОГДА
#34 by Aprobator
Пробовал таким способом, но если запрос пустой, то это не прокатывает.
#35 by Гений 1С
что значит запрос пустой? Если есть хоть один элемент, он и появится и будет не ноль
#36 by Гений 1С
Интересно, а так не покатит? ВЫБОР КОГДА 0 В Количество(ВЫБРАТЬ &Список) ТОГДА ИНАЧЕ КОНЕЦ
#37 by Aprobator
Дык о чем и речь, если запрос пустой, - 0 не возвращается.
#38 by Aprobator
Сорри в 37 - ерунда. 0 возвращается. Блин, явно пора в отпуск. Крыша уже явно отдыхает.
#39 by Aprobator
По мотивам удалось преобразовать (с тем же эффектом)  в следующее:
#40 by NewNick
а чем вариант в неустроило не понял ?))
#41 by Origin
меня 20-й вариант устроил, выбрал его, спасибо работает хотя 39-й тоже работает, всем спасибо
#42 by hhhh
если количество элементов номенклатуры > 10000 будет выполняться неслолько часов. Так что лучше выбрось эти методы и сделай как-нибудь тупо.
#43 by Aprobator
Он слишком мелкий - я его просто не разглядел. Кидаем это условие в параметры виртуальной таблицы и все.
#44 by Aprobator
конечно более лучший вариант. Просто у меня еще немного опыта работы с запросами. Вот и набираюсь потихноьку :).
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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