|   |   | 
| 
 | Запросы 1С. Как при "Булево = Истина" убрать условия из запроса. | ☑ | ||
|---|---|---|---|---|
| 0
    
        Demanufactyre 31.08.17✎ 07:43 | 
        Привет друзья. Подскажите, как при неком условии сделать так, чтоб в запросе не учитывалась строчка "Условий"
 Вот к примеру Процедура Если Булево=Истина Тогда "ВЫБРАТЬ | СервисыКонтрагентов.Контрагент, | СервисыКонтрагентов.Период, | СервисыКонтрагентов.Регистратор.Сотрудник |ИЗ | РегистрСведений.СервисыКонтрагентов КАК СервисыКонтрагентов |ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2 | И СервисыКонтрагентов.Контрагент =&Контрагент <===== При Булево=Истина запрос не должен брать в расчет вот эту строчку==== "; | |||
| 1
    
        1dvd 31.08.17✎ 07:43 | 
        "ВЫБРАТЬ
 | СервисыКонтрагентов.Контрагент, | СервисыКонтрагентов.Период, | СервисыКонтрагентов.Регистратор.Сотрудник |ИЗ | РегистрСведений.СервисыКонтрагентов КАК СервисыКонтрагентов |ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2 | И (СервисыКонтрагентов.Контрагент =&Контрагент ИЛИ Булево = Истина) " | |||
| 2
    
        Demanufactyre 31.08.17✎ 07:52 | 
        (1) Ошибка говорит. Что то не так делаю?
 "ВЫБРАТЬ | СервисыКонтрагентов.Контрагент, | СервисыКонтрагентов.Период, | СервисыКонтрагентов.Регистратор.Сотрудник |ИЗ | РегистрСведений.СервисыКонтрагентов КАК СервисыКонтрагентов |ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2 | И (СервисыКонтрагентов.Контрагент =&Контрагент ИЛИ "//Говорит вот тут ошибка синтаксическая ошибка" Булево = Истина) " | |||
| 3
    
        1dvd 31.08.17✎ 07:53 | 
        (2) подумать     | |||
| 4
    
        breezee 31.08.17✎ 07:53 | 
        (2)  |    И (СервисыКонтрагентов.Контрагент =&Контрагент ИЛИ &Булево = Истина)     | |||
| 5
    
        France 31.08.17✎ 07:53 | 
        и, программно формировать запрос, с заменой подстроки     | |||
| 6
    
        VladZ 31.08.17✎ 07:55 | 
        Можно использовать СтрЗаменить
 Либо СтрЗаменить(Запрос.Текст,"И СервисыКонтрагентов.Контрагент =&Контрагент", "") Либо делать так: ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2 | И 1 = 1 И менять "1 = 1" на "СервисыКонтрагентов.Контрагент =&Контрагент" в случае, если контрагент выбран. | |||
| 7
    
        crotnn 31.08.17✎ 08:06 | 
        Еще вариант
 |ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2 | И ВЫБОР КОГДА Булево ТОГДА Истина ИНАЧЕ СервисыКонтрагентов.Контрагент =&Контрагент КОНЕЦ | |||
| 8
    
        Рэйв 31.08.17✎ 08:12 | 
        Еще вариант
 //- ТекстЗ="ВЫБРАТЬ | СервисыКонтрагентов.Контрагент, | СервисыКонтрагентов.Период, | СервисыКонтрагентов.Регистратор.Сотрудник |ИЗ | РегистрСведений.СервисыКонтрагентов КАК СервисыКонтрагентов |ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2 "; Если Булево Тогда ТекстЗ=ТекстЗ+" | И СервисыКонтрагентов.Контрагент =&Контрагент"; КонецЕсли; | |||
| 9
    
        Рэйв 31.08.17✎ 08:12 | 
        Вернее 
 Если НЕ Булево Тогда ... | |||
| 10
    
        1dvd 31.08.17✎ 08:14 | 
        ещё вариант (для самых недалёких):
 Процедура Если Булево=Истина Тогда Запрос.Текст = "ВЫБРАТЬ | СервисыКонтрагентов.Контрагент, | СервисыКонтрагентов.Период, | СервисыКонтрагентов.Регистратор.Сотрудник |ИЗ | РегистрСведений.СервисыКонтрагентов КАК СервисыКонтрагентов |ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2"; Иначе Запрос.Текст = "ВЫБРАТЬ | СервисыКонтрагентов.Контрагент, | СервисыКонтрагентов.Период, | СервисыКонтрагентов.Регистратор.Сотрудник |ИЗ | РегистрСведений.СервисыКонтрагентов КАК СервисыКонтрагентов |ГДЕ | СервисыКонтрагентов.Период МЕЖДУ &Период1 И &Период2 | И СервисыКонтрагентов.Контрагент =&Контрагент "; | |||
| 11
    
        France 31.08.17✎ 08:15 | 
        а вот за " Булево=Истина", в общем то, нужно бить морду..     | |||
| 12
    
        1dvd 31.08.17✎ 08:15 | 
        (11) Отнюдь. Там может быть неопределено     | |||
| 13
    
        Рэйв 31.08.17✎ 08:16 | 
        (11)Согласен с (12).
 Лучше перестраховаться. Были прецеденты | |||
| 14
    
        lEvGl гуру 31.08.17✎ 08:20 | 
        а что было в (1) и (4)?
 (11)+1, какие там преценденты - если там написано Булево, значит там либо ложь либо истина, а если там может быть неопределено, значит это не булево | |||
| 15
    
        1dvd 31.08.17✎ 08:21 | 
        (14) ну тогда надо бить за "Булево"
 ахренительная информативность у переменной | |||
| 16
    
        lEvGl гуру 31.08.17✎ 08:22 | 
        сомневаюсь, что у него в модуле так и написано     | |||
| 17
    
        1dvd 31.08.17✎ 08:24 | 
        (16) 
 >>если там написано Булево.... >>сомневаюсь, что у него в модуле так и написано | |||
| 18
    
        Demanufactyre 31.08.17✎ 08:27 | 
        (11) Извините. Я только учусь. Под словом "Булево" я подразумевал реквизит на форме(в модуле) под названием "Все". Не бейте ИЛИ ЕСЛИ бить=истина ТОГДА не по лицу.     | |||
| 19
    
        France 31.08.17✎ 08:28 | 
        иех, как тут не вспомнить старый добрый Pascal     | |||
| 20
    
        France 31.08.17✎ 08:28 | 
        (18) "Не бейте ИЛИ ЕСЛИ бить ТОГДА не по лицу."     | |||
| 21
    
        FIXXXL 31.08.17✎ 08:35 | 
        (18) учись не плодить без надобности галки
 перед запросом проверь, указан ли контрагент, в запрос передай это параметром &КонтрагентУказан сделай через ВЫБОР КОГДА &КонтрагентУказан ТОГДА СервисыКонтрагентов.Контрагент =&Контрагент ИНАЧЕ ИСТИНА | |||
| 22
    
        FIXXXL 31.08.17✎ 08:36 | 
        (21)+ надеюсь не отчет рисуешь? :)     | |||
| 23
    
        Рэйв 31.08.17✎ 08:46 | 
        (14)Мало ли что там написано. Если это буелевный реквизит то да, = истина излишнею. А если это переменная, приходящая от куда-то параметром, то то что на ней написано совсем не означает что она 100% будет иметь тип булево.     | |||
| 24
    
        lEvGl гуру 31.08.17✎ 08:51 | 
        я хз, может во мне на этом форуме телепат родился, но я сразу понял, что под "Булево" он имеет ввиду именно тип переменной, а не имя, первый вариант у меня был - что это галка на форме, а тут он написал "Булево" именно для того, что бы дать понять, какой там тип данных     | |||
| 25
    
        lEvGl гуру 31.08.17✎ 08:53 | 
        и судя по (11) я не один такой     | |||
| 26
    
        Demanufactyre 31.08.17✎ 09:00 | 
        (22) Отчет=)     | |||
| 27
    
        lEvGl гуру 31.08.17✎ 09:15 | 
        (26) там можно указывать список необязательных параметров через фигурные скобки в запросе, в конструкторе скд "Условия"...
 а вобще Отбор решит все эти проблемы | |||
| 28
    
        FIXXXL 31.08.17✎ 09:15 | 
        (26) ну тогда тебе вообще не это надо, а (27)     | |||
| 29
    
        1dvd 31.08.17✎ 09:17 | 
        Отчет - не обязательно СКД     | |||
| 30
    
        YFedor 31.08.17✎ 09:19 | 
        (21) + 1 сам так делаю     | |||
| 31
    
        Demanufactyre 31.08.17✎ 09:19 | 
        (28) У меня пока сложно с СКД. Я еще Язык Запросов Хрусталевой не дочитал. И на СКД я еще не разобрался как поле ввода на форме в 8.2 зацепить с СКД.     | |||
| 32
    
        FIXXXL 31.08.17✎ 09:22 | 
        (31) сунь свой запрос в СКД, через мастер настрой вывод таб.дока - профит!     | |||
| 33
    
        lEvGl гуру 31.08.17✎ 09:25 | 
        (32) +1
 + из запроса условия можно убрать совсем, пользоваться Отбором(это в пользовательском режиме), вопрос то на 5 щелчков мыши | |||
| 34
    
        Eiffil123 31.08.17✎ 09:25 | 
        Что за бред тут насоветовали. Вот когда текст запроса врезками правится - за это надо сжигать!
 Надо в условии запроса примерно такое писать: Выбор Когда &Булево Тогда Истина Иначе СервисыКонтрагентов.Контрагент =&Контрагент Конец | |||
| 35
    
        Demanufactyre 31.08.17✎ 09:26 | 
        (32) У меня тут видимо что то с конфигурацией или с платформой. Настраивал поля, но форма выходит без полей.     | |||
| 36
    
        lEvGl гуру 31.08.17✎ 09:27 | 
        (29) а должен быть обязательно СКД     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |