Имя: Пароль:
1C
1С v8
условие В в запросе
0 Kurbash
 
08.07.14
10:46
делаю запрос к РБ


...
    |    ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Регистратор) = ТИП(Документ.АвансовыйОтчет)
    |    И ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Регистратор) = ТИП(Документ.ВозвратМатериаловИзЭксплуатации)
    |    И ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Регистратор) = ТИП(Документ.ВозвратПереданныхТоваров)
....

можно как нибудь объединить с помощью В(ТИП(Документ.АвансовыйОтчет),ТИП(Документ.ВозвратМатериаловИзЭксплуатации))??
1 Wobland
 
08.07.14
10:47
что было, когда попробовал?
2 Spieluhr
 
08.07.14
10:48
(0) в условии наверное типы значений через ИЛИ нужно перечислять
3 Kurbash
 
08.07.14
10:48
ничего, ошибку выдает
4 censored
 
08.07.14
10:48
а чего это у тебя регистратор должен быть одновременно и Авансовым отчетом и Возвратом материалов и возвратом товаров?
5 Kurbash
 
08.07.14
10:49
значит лучше ИЛИ использовать?
6 Эмбеддер
 
08.07.14
10:51
еще 3-й вариант

ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.АвансовыйОтчет
ИЛИ ...
7 Бешеная Нога
 
08.07.14
10:53
(5) хм...
8 Кир Пластелинин
 
08.07.14
11:05
"или" в условиях тоже не панацея. потом можно столкнуться с тем, что запрос будет медленно работать. лучше разделить на пакетники, где будет по одному условию из связки "или". во временяку кинуть без проверки на ССЫЛКА/ТипЗначения = Тип, а затем соответствующее количество пакетников с одним условием и последующее объединение.
9 Wobland
 
08.07.14
11:07
(3) какой сделал вывод после того, как вник в текст ошибки?
10 samozvanec
 
08.07.14
11:12
(5) хозяин-барин канеш, но ты попробуй
11 Escander
 
08.07.14
11:17
(0) В - это когда значение совпадает с одним из списка, а у вас в вашем куске кода у вас равно одновременно разным величинам....
12 Escander
 
08.07.14
11:17
величинам = значениям
13 Sammo
 
08.07.14
11:21
Еще рекомендую учесть следующий моменты
1. Регулярно объединение 3 запросов с 1 условием работает быстрее, чем 1 запрос с 3 через "или" или "в"
2. "В" в скулевом запросе может превратиться в in, а может в exists. Лучше второе. Как этого достичь - в поиск.

Но все это имеет смысл только на базах приличного и неприличного размера. Может и не потребоваться
14 Serginio1
 
08.07.14
11:39
А так
Массив=Новый Массив;
Масств.Добавить(ТИП(Документ.АвансовыйОтчет))
Масств.Добавить(ТИП(Документ.ВозвратМатериаловИзЭксплуатации));
Масств.Добавить(ТИП(Документ.ВозвратПереданныхТоваров)
)

Запрос.УстановитьПараметр("СписокТипов",Массив);
и условие  ТИПЗНАЧЕНИЯ(Поле) В (&СписокТипов)
15 zladenuw
 
08.07.14
11:42
так лучше 1 запрос и 3 обьдинения в нем. и для каждого отдельно прописать
ГДЕ
ХозрасчетныйОстаткиИОбороты.Регистратор = Ссылка Документ.АвансовыйОтчет

и т.д.
16 Serginio1
 
08.07.14
12:03
Тьфу
Массив=Новый Массив;
Масств.Добавить(ТИП(ДокументСсылка.АвансовыйОтчет))
Масств.Добавить(ТИП(ДокументСсылка.ВозвратМатериаловИзЭксплуатации));

Масств.Добавить(ТИП(ДокументСсылка.ВозвратПереданныхТоваров)
)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший