Имя: Пароль:
1C
1С v8
Отбор в запросе.
,
0 goleaff2006
 
11.04.13
08:25
Необходимо отобрать данные по нескольким условиям на одно поле в построителе.Как?
Построитель.Отбор.Добавить("Ссылка");
   Построитель.Отбор["Ссылка"].Использование = Истина;
   Построитель.Отбор["Ссылка"].ВидСравнения  = ПолучитьВидСравненияКомпоновщика(стр.видСравнения) ;
   Построитель.Отбор["Ссылка"].Значение      = стр.правоезначение;

Построитель.Отбор.Добавить("Ссылка");
   Построитель.Отбор["Ссылка"].Использование = Истина;
   Построитель.Отбор["Ссылка"].ВидСравнения  = ПолучитьВидСравненияКомпоновщика(стр.видСравнения) ;
   Построитель.Отбор["Ссылка"].Значение      = стр.правоезначение; и т.д
1 Wobland
 
11.04.13
08:28
в списке?
2 goleaff2006
 
11.04.13
08:30
В первом случае вид сравнения не равно, а во втором список.Но почему то  только  последние условие отбора устанавливается.
3 masenshi
 
11.04.13
08:41
Это не отбор в запросе а отбор в построителе.
4 goleaff2006
 
11.04.13
08:42
(3)Я в курсе.Вопрос как туда передать данный отбор.
5 masenshi
 
11.04.13
08:45
(2) Похоже что первое условие затирается вторым.
6 Xatori
 
11.04.13
08:46
(5) +1, ещё 1 отбор добавь с другим именем и должно всё заработать
7 goleaff2006
 
11.04.13
08:48
(5) это я тоже знаю
(6) как с другим именем?
8 masenshi
 
11.04.13
08:50
(4) Не люблю всякие построители. Он позволяет противоречащие друг другу условия использовать? Доработай список и передавай его только.

В обычном запросе можешь хоть миллион условий по одному полю сделать. А в это огурце...
9 Xatori
 
11.04.13
08:57
(7) а хотя нет, если ты добавишь просто имя, не будет прокатывать. В данном случае тебе наверно надо сделать запрос по 1-му условию, потом сделать по 2-му условию и результаты собрать, а то у тебя будут исключающие условия, т.е. получишь в результате только те записи которые соответствуют обоим условиям. Вроде так.
10 cw014
 
11.04.13
09:00
Отбор, он на то и отбор, что "отбирает" данные. То есть любое условие единично, комплекс различных условий всегда отрабатывается по "И"
11 masenshi
 
11.04.13
09:02
(10) У автора как раз "И" и не срабатывает. Второе затирает первое.

Делай как в (8)
Доработай список и используй "в списке" или "не в списке".

Или выкини построитель.
12 goleaff2006
 
11.04.13
09:41
(7) так мне так и нужно.
13 goleaff2006
 
11.04.13
09:45
(9) я как раз так и хочу например выбрать всю номенклатуру кроме определенной.
14 masenshi
 
11.04.13
09:48
(13) Используй вид сравнения: "не в списке"
15 batiskaf
 
11.04.13
11:22
Попробуй поименовать отборы:
Отбор1 = Построитель.Отбор.Добавить("Ссылка");
Отбор1.Использование = Истина;
Отбор1.ВидСравнения = ПолучитьВидСравненияКомпоновщика(стр.видСравнения); // не равно
....

Отбор2 = Построитель.Отбор.Добавить("Ссылка");
Отбор2.Использование = Истина;
Отбор2.ВидСравнения = ПолучитьВидСравненияКомпоновщика(стр.видСравнения); // в списке