Имя: Пароль:
1C
1C 7.7
v7: Формирование внутренней переменной запроса по условию
0 mpbakunov
 
30.10.11
19:02
Доброго дня!

Делаю запрос по одному документу. В дальнейшем в запросе будет условие по внутренней переменной запроса (Маршрут). В переменной должно сохранятся значение поля Маршрут из документа если оно заполнено или поле Маршрут из элемента спр Контрагенты которое есть в документе. примерно так

|Маршрут=?(Пустоезначение(Документ.Т_РасходнаяНакладнаяПрод_MG.Маршрут_MG)=1,Документ.Т_РасходнаяНакладнаяПрод_MG.Контрагент.Маршрут_MG,Документ.Т_РасходнаяНакладнаяПрод_MG.Маршрут_MG);

но такая конструкция не работает в запросах. Может есть какой нить другой способ реализовать задачу чтобы в запросе была только одна переменная Маршрут. Не хочется формировать 2 ю переменную, потому что надо будет переделовать логику отчета в котором раньше маршрут брался только из контрагента документа. жду советов!
1 Темный Эльф
 
30.10.11
19:05
Напиши два текста запроса и сделай обычное Если
2 mpbakunov
 
30.10.11
19:09
(1) не пойдет. потому что в одних документах маршрут должен браться из поля документа а в других через контрагента документа!
3 Ёпрст
 
30.10.11
19:13
(0) в чорном такую переменную не слепишь, только в условии или в вычислении функции.
4 ДенисЧ
 
30.10.11
19:13
Забей на эту с**ную 1с. Всё равно ничего толкового не выйдет
5 Злопчинский
 
30.10.11
19:14
|Маршрут=Документ.Т_РасходнаяНакладнаяПрод_MG.Контрагент.Маршрут_MG,Документ.Т_РасходнаяНакладнаяПрод_MG.Маршрут_MG
6 Кукуев
 
30.10.11
19:17
Можно, наверное, попробовать через тот же Если...
что-то типа
формируем ТекстЗапроса до определения переменной Маршрут, затем
Если Пустоезначение(Документ.Т_РасходнаяНакладнаяПрод_MG.Маршрут_MG)=1 Тогда
ТекстЗапроса = ТекстЗапроса + |Маршрут = Документ.Т_РасходнаяНакладнаяПрод_MG.Контрагент.Маршрут_MG;";
Иначе
ТекстЗапроса = ТекстЗапроса + |Маршрут =
Документ.Т_РасходнаяНакладнаяПрод_MG.Маршрут_MG";"
КонецЕсли
7 Кукуев
 
30.10.11
19:19
+6 Ага, и синтаксис правильно выставить!!! (кавычки и т.д.) :)
8 Ёпрст
 
30.10.11
19:22
(6) п..ц
9 mpbakunov
 
30.10.11
19:23
(6) да тоже так пробовал , но тянет только первое выражение! :(
10 mpbakunov
 
30.10.11
19:23
сорри последний ответ касается (5)
11 Ёпрст
 
30.10.11
19:23
(5) это не верно, если маршрут не пустой и отличный от маршрута контрагента.
12 Кукуев
 
30.10.11
19:24
(8) сам уже понял, невнимательно прочитал условие...
13 SnarkHunter
 
30.10.11
19:25
(0)Используй прямой запрос и функцию Coalesce...
14 Ёпрст
 
30.10.11
19:31
+13 или тупо case
15 mpbakunov
 
30.10.11
19:32
(13) поподробнее плиз
16 Ёпрст
 
30.10.11
19:39
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший