|   |   | 
| 
 | Запрос на Выборку данных с условием | ☑ | ||
|---|---|---|---|---|
| 0
    
        Zhenek1980 26.12.19✎ 10:31 | 
        есть запрос в котором есть условие:
 ГДЕ | (Номенклатура.Тип = &ЗнТип | И Номенклатура.Сотрудник = &ЗнСотрудник | И Номенклатура.Отдел = &ЗнОтдел | И Номенклатура.Статус = &ЗнСтатус) ВОПРОС: как сделать так что если значение "&ЗнТип" не заданно, это значение исключалось из условия Пример: в форме есть 4 поля для ввода значений: ЗнТип, ЗнСотрудник, ЗнОтдел, ЗнСтатус Если пользователь заполняеть все 4 поля то запрос отрабатывает нормально, а вот если одно поле оставляет пустое то запрос не чего не возвращает. Необходимо сделать так что бы при незаполненном поле оно не учитывалось в запросе | |||
| 1
    
        Волшебник модератор 26.12.19✎ 10:34 | 
        ГДЕ (&ЕстьОтборПоТипу И Номенклатура.Тип = &ЗнТип)
 И (&ЕстьОтборПоСотруднику И Номенклатура.Сотрудник = &ЗнСотрудник) ... | |||
| 2
    
        Полька 26.12.19✎ 10:34 | 
        Если ЗначениеЗаполнено(ЗнТип) Тогда
 ТекстЗапроса=ТекстЗапроса+" | И Номенклатура.Тип = &ЗнТип" КонецЕсли; | |||
| 3
    
        Автосервис 26.12.19✎ 10:36 | 
        Куча вариантов. Один из них "ВЫБОР КОГДА ... ТОГДА Истина ИНАЧЕ ... "     | |||
| 4
    
        shadow_sw 26.12.19✎ 10:36 | 
        (2) опередила     | |||
| 5
    
        ДенисЧ 26.12.19✎ 10:36 | 
        (&ЗнТип = Неопределено ИЛИ Номенклатура.Тип = &ЗнТип)     | |||
| 6
    
        piter3 26.12.19✎ 10:36 | 
        (3) лучше собрать текст запроса,в вашем варианте запутаться легко     | |||
| 7
    
        Автосервис 26.12.19✎ 10:37 | 
        (2) Не очень хороший вариант в плане дальнейшей отладки, т.к. в конструктор запросов потом не залезет     | |||
| 8
    
        Kigo_Kigo 26.12.19✎ 10:38 | 
        А что в восьмерке конструкция Номенклатура.Тип В &ЗнТип не работает уже?     | |||
| 9
    
        shadow_sw 26.12.19✎ 10:43 | 
        (7) что мешает динамически собрать отладкой запрос и проверить его в консоли?     | |||
| 10
    
        Автосервис 26.12.19✎ 10:47 | 
        (9) Неудобно. Так вы можете запихать его в консоль, но если найдете ошибку и подправите? Так легко подправленный запрос назад в код вы уже его не вернете     | |||
| 11
    
        AAA 26.12.19✎ 11:17 | 
        Я за вариант (2). Просто и понятно. Как правило, такое условие не одно, а много. Все собрано в одном месте, все читабельно.     | |||
| 12
    
        Михаил Козлов 26.12.19✎ 11:39 | 
        Если ОФ, то удобно использовать Построитель отчета.     | |||
| 13
    
        Дмитрий 26.12.19✎ 11:53 | 
        (7) пихать в текст запроса все отборы. потом проверки и стрзаменить(запрос.текст, ляляля, "")     | |||
| 14
    
        Полька 26.12.19✎ 12:13 | 
        (10) отладить на примере. потом разбить с учетом (2)     | |||
| 15
    
        Zhenek1980 26.12.19✎ 13:13 | 
        сделал так: 
 |ГДЕ | ВЫБОР | КОГДА &ЗнТипПусто = ЛОЖЬ | ТОГДА Номенклатура.Тип = &ЗнТип | ИНАЧЕ Номенклатура.Тип <> &ЗнТип | КОНЕЦ | |||
| 16
    
        D_E_S_131 26.12.19✎ 14:04 | 
        Вариант (2) вообще богомерзкий:
 1. Не откроешь конструктор (как выше писали) 2. Анахронизм - есть уже объект "Конструктор текста запроса". | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |