|
Запросы 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) а должен быть обязательно СКД
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |