Имя: Пароль:
1C
 
как сделать условие на составное перечисление в запросе?
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 и небольших выборках разницу между В и ИЛИ вряд ли кто-то заметит.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.