|
как сделать условие на составное перечисление в запросе? | ☑ | ||
|---|---|---|---|---|
|
0
1сПупс
02.02.26
✎
12:27
|
Доброго дня, коллеги.
Пишу запросы редко, столкнулся с тем что нужно в запросе наложить условие на несколько значений перечисления для реквизита, как это сделать? ПОМЕСТИТЬ ВременнаяТаблица ИЗ Документ.ЧекККМ КАК ЧекККМ ГДЕ ЧекККМ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания И ЧекККМ.Проведен = ИСТИНА И ЧекККМ.СтатусЧекаККМ В (ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный) ИЛИ ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробитый)) Так не катит, ругается на ошибку. |
|||
|
1
Rovan
гуру
02.02.26
✎
12:30
|
И ЧекККМ.СтатусЧекаККМ В (ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный),
ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробитый)) |
|||
|
2
Baiji
02.02.26
✎
12:31
|
(0) И ЧекККМ.СтатусЧекаККМ В (ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный), ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробитый))
|
|||
|
3
1сПупс
02.02.26
✎
12:40
|
И (ЧекККМ.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный)
ИЛИ ЧекККМ.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробитый)) попробовал так, тоже работает, спасибо! |
|||
|
4
unenu
02.02.26
✎
13:43
|
(3) или - великий грех, не?
|
|||
|
5
Мультук
гуру
02.02.26
✎
13:47
|
(4)
"И" и "НЕ" -- грехи поменьше ? А NULL вообще анафема ? |
|||
|
6
maxab72
02.02.26
✎
13:52
|
(4) только по постным дням. Вопрос, во что этот запрос превратит SQL. Думаю, что итоговый запрос в БД в 2 и 3 ничем не будет отличаться.
|
|||
|
7
OldCondom
02.02.26
✎
14:18
|
Вроде уже давно известно, что ИЛИ в запросе - не православно. Пример https://its.1c.ru/db/metod8dev#content:5842:hdoc:or
А так да, только (6),методом тыка, смотреть что получается. Если у кого есть время, желание и за это ещё и платят. |
|||
|
8
maxab72
02.02.26
✎
14:29
|
(7) угу, только этим правилам сто лет в обед "Обратите внимание на то, что возможность использования временных таблиц появилась в 1С:Предприятии начиная с версии 8.1. Если вы используете версию 8.0, то для решения проблемы производительности такого запроса следует перейти на 8.1." И писались они под сферического коня в вакууме, потому как неизвестно как SQL будет интерпретировать запрос, потому что MS, Postgre, или какой-нибудь неизвестный релиз MySQL будут это делать по разному.
|
|||
|
9
OldCondom
02.02.26
✎
14:59
|
(8) это не правило, это оберег скорее. В идеале :использовать "В", либо объединение запросов. Чисто Эмпиричкское наблюдение.
Опять же, да, как интерпретатор sql это преобразует - только коню в вакууме и обладателю прлфайлера известно. Но кто будет тратить силы и средства для чтения логов, когда можно написать "в" вместо странных конструкций? |
|||
|
10
Галахад
гуру
02.02.26
✎
15:16
|
Тут про "ИЛИ" полнее:
https://its.1c.ru/db/v8std/content/658/hdoc |
|||
|
11
Fish
гуру
02.02.26
✎
15:33
|
(9) Справедливости ради, на MS SQL и небольших выборках разницу между В и ИЛИ вряд ли кто-то заметит.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |