Имя: Пароль:
1C
1С v8
Отбор по списку значений в запросе
,
0 picom
 
04.06.15
10:03
В запросе есть отбор по списку значений
ГДЕ
Документ.Представительство В(&Представительство)
Нужно это условие сделать по хитрому, если представительство пустой список то не выполнять это условие
Подскажите как описать это программно в запросе
ГДЕ
Если &Представительство.список.Количество > 0 Тогда Документ.Представительство В(&Представительство)
иначе 1=1
1 xaozai
 
04.06.15
10:07
(0) Можно передать в запрос параметр.

Запрос.УстановитьПараметр("ЕстьСписок", список.Количество > 0);
Запрос.УстановитьПараметр("Представительство", список);

ГДЕ
ВЫБОР КОГДА НЕ &ЕстьСписок ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА Документ.Представительство В(&Представительство) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ
2 picom
 
04.06.15
10:09
(1) да, но хочется это как-то запросом промутить
может Значение(список.Количество > 0) как-то поможет...
3 lEvGl
 
гуру
04.06.15
10:10
"динамический" текст запроса
Запрос.Текст = "бла ла ла";
Если ЗначениеЗаолпнено(Список.Количество()) Тогда
Запрос.Текст = Запрос.Текст + "Где бла лала"
КонецЕсли;
4 picom
 
04.06.15
10:13
(3) да нуу, потом даже конструктором не посмотреть
5 xaozai
 
04.06.15
10:14
(4) Зато запрос получается более "оптимальным" с точки зрения производительности. В типовых часто так делается.
6 xaozai
 
04.06.15
10:14
(3) ЗначениеЗаолпнено(Список.Количество()) - весьма оригинально )
7 Вася Чез
 
04.06.15
10:15
(4) так пишут тру программисты, котырые не пользуются конструктором, а уж тем более богомерзкой консолью, так что поддерживаю (3)
8 18_plus
 
04.06.15
10:20
правильный ответ в (1)
9 elCust
 
04.06.15
10:23
(4) Хочешь и рыбку съесть... Короче либо криво либо никак в твоем случае.
10 разработчик 1с
 
04.06.15
10:23
если представительство сделать тз, можно через подзапросы узнать сколько там строк
11 picom
 
04.06.15
10:24
(9) ну сто пудово как-то в запросе можно получить количество в списке значений или хотя бы признак их присутствия
12 elCust
 
04.06.15
10:24
(11) Никак.
13 18_plus
 
04.06.15
10:25
нужно ещё упростить (1) :
ВЫБОР КОГДА НЕ &ЕстьСписок ТОГДА ИСТИНА
ИНАЧЕ Документ.Представительство В(&Представительство) КОНЕЦ
14 picom
 
04.06.15
10:25
(12) а если через Значение(хз) тоже никак?
15 xaozai
 
04.06.15
10:26
(11) Если вместо списка будет ТЗ, тогда так можно.
16 разработчик 1с
 
04.06.15
10:27
(13) НЕ &ЕстьСписок или Документ.Представительство В(&Представительство)
17 lEvGl
 
гуру
04.06.15
10:29
(4) ну понятно, что кривовато, а что делать. если текст запроса зависит от условия. это как вариант. Можно выборами. Можно СКД, там есть {Где ...}, попробуйте через компоновку, если так важен конструктор
18 18_plus
 
04.06.15
10:30
(16) я не в курсе, но не может ли случиться так, что при выполнении запроса (ну там на разных СУБД) будет проверено условие Документ.Представительство В(&Представительство) независимо от значения &ЕстьСписок ?
19 D_E_S_131
 
04.06.15
10:30
Можно еще перед установкой параметра проверить на пустоту списка и внести в него один элемент = пустая ссылка. "Пустая ссылка" — это всегда элемент верхнего уровня и будет выполняться условие вхождения.
20 picom
 
04.06.15
10:34
(19) что-то в этом есть
21 Classic
 
04.06.15
10:42
Используй построитель запроса
22 picom
 
04.06.15
12:59
(21) самое не простое решение, но наверняка самое правильное. Буду благодарен примерам использования или докум для УФ
23 D_E_S_131
 
04.06.15
13:06
(21) И чем поможет Построитель? Возни только будет еще больше чем с "ЕстьСписок", а результат такой же.
24 Crush
 
04.06.15
13:09
(0) Всё не читал, мож уже предлагали:
Выбери доки в виртуальную таблицу с единственным полем Количество(Ссылка).
потом приляпай эту таблицу из одной строки к своему запросу
25 Михаил Козлов
 
04.06.15
13:23
(23) Присоединяюсь к (21). Мне нравится с построителем: поставил отбор на форму и забот не знаешь.
26 ppaulus
 
04.06.15
13:56
Зачем динозавр-построитель?
СКД отбор на форму точно так же легко выводится.