|
v7: Как правильно сделать условие в запросе (1с77) | ☑ | ||
---|---|---|---|---|
0
BalBess
02.06.15
✎
07:30
|
Подскажите, уважаемые.. что-то подзабыл
Как мне правильно сделать запрос или условие в запросе Задача следующая, есть документ, есть 2 поля контрагентов Нужно в выборке отобрать документы, чтобы или 1 поле принадлежало определенной группе, либо 2. Т.е. ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Докум = Документ.РасходнаяРеализации.ТекущийДокумент; |Клиент = Документ.РасходнаяРеализации.Клиент, Документ.РасходнаяРеализации.Клиент2; |Группировка Клиент упорядочить по Клиент.Наименование; |Группировка Докум; |"//}}ЗАПРОС ; Вот тут вопрос, как сделать правильное условие? Делал так ТекстЗапроса = ТекстЗапроса + "Условие (Клиент.ПринадлежитГруппе(ВыбКлиент) = 1);"; В выборку не попадают доки у которых 2 поле принадлежит группе ВыбКлиент Второе поле Клиент2, не всегда заполнено т.е. нужно либо (Клиент.ПринадлежитГруппе(ВыбКлиент) = 1) либо (если не пустое Клиент2) Клиент2.ПринадлежитГруппе(ВыбКлиент) = 1 Напомню речь про 1с77 |
|||
1
Провинциальный 1сник
02.06.15
✎
07:33
|
Правильно - забыть про эти кривые штатные недозапросы и использовать прямые запросы 1c++.
|
|||
2
Толич
02.06.15
✎
07:34
|
Если ПустоеЗначение(Клиент2)=0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие ((Клиент.ПринадлежитГруппе(ВыбКлиент) = 1) или (Клиент2.ПринадлежитГруппе(ВыбКлиент) = 1));"; Иначе ТекстЗапроса = ТекстЗапроса + "Условие (Клиент.ПринадлежитГруппе(ВыбКлиент) = 1);"; КонецЕсли; |
|||
3
BalBess
02.06.15
✎
07:38
|
(2) как я узнаю что Клиент2 не пустое, это поле в документе
т.е. как это условие вставить в запрос во вторых поле Клиент2 может быть пустым и условие (Клиент2.ПринадлежитГруппе(ВыбКлиент) = 1) выдает ошибку |
|||
4
titan_aleks
02.06.15
✎
07:40
|
1. В запросе свою функцию вставь = и уже в функции проверяй
|
|||
5
ЧеловекДуши
02.06.15
✎
07:41
|
(0) Состряпай функцию, "МойКонтрагент(Контрагент1,Контрагент2) = 1", и внутри функции делай любые манипуляции.
..Если будет волновать скорость, то "Черные" запросы от 1С тащат практически всю таблицу к тебе на ПК и уже там начинают над ней колдовать... Хочешь скорости, то пиши на прямых запросах. 1С++ тебе в помощь :) |
|||
6
titan_aleks
02.06.15
✎
07:42
|
2
|Клиент = Документ.РасходнаяРеализации.Клиент; |Клиент1 = Документ.РасходнаяРеализации.Клиент2; |Условие ((Клиент.ПринадлежитГруппе(ВыбКлиент) = 1) или (Клиент1.ПринадлежитГруппе(ВыбКлиент) = 1)) |
|||
7
BalBess
02.06.15
✎
07:44
|
(6) я так делал, дело в том что поле клиент1 не всегда заполнено, и на (Клиент1.ПринадлежитГруппе(ВыбКлиент) = 1) выдает ошибку. И не понятно как потом делать группировки
|
|||
8
BalBess
02.06.15
✎
07:46
|
а можно подробнее на счет функций, чет подзабыл все
|
|||
9
titan_aleks
02.06.15
✎
07:47
|
|Условие (МояФункция(Контрагент,Контрагент1) = 1)
|
|||
10
BalBess
02.06.15
✎
07:50
|
(9) спасибо, попробую, отпишусь
|
|||
11
welwel
02.06.15
✎
07:55
|
Условие (Клиент в ВыбКлиент)
не проще ли? |
|||
12
BalBess
02.06.15
✎
08:07
|
(11) в таком случае почему-то не попадают доки в которых Клиент2 принадлежит группе ВыбКлиент
|
|||
13
AntiBuh
02.06.15
✎
08:26
|
(12) ну дык воткни ИЛИ
|
|||
14
BalBess
02.06.15
✎
08:36
|
(13) блин, точно. Заработала такая конструкция
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Докум = Документ.РасходнаяРеализации.ТекущийДокумент; |Клиент = Документ.РасходнаяРеализации.Клиент; |Клиент2 = Документ.РасходнаяРеализации.Клиент2; |Группировка Клиент упорядочить по Клиент.Наименование; |Группировка Докум; |"//}}ЗАПРОС ; ТекстЗапроса = ТекстЗапроса + "Условие ((Клиент в ВыбКлиент) ИЛИ (Клиент2 в ВыбКлиент));"; |
|||
15
BalBess
02.06.15
✎
08:37
|
а я уже и через функцию сделал, тоже заработало (даже и не знал, что так можно)
всем спасибо большое! |
|||
16
vip03
02.06.15
✎
12:54
|
а так не проще?
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Докум = Документ.РасходнаяРеализации.ТекущийДокумент; |Клиент = Документ.РасходнаяРеализации.Клиент,Документ.РасходнаяРеализации.Клиент2; |Группировка Клиент упорядочить по Клиент.Наименование; |Группировка Докум; |"//}}ЗАПРОС ; ТекстЗапроса = ТекстЗапроса + "Условие (Клиент в ВыбКлиент);"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |