|
v7: неопределенный вид документа в пречерном запросе | ☑ | ||
---|---|---|---|---|
0
Злопчинский
06.08.13
✎
19:24
|
есть документ, дРегистратор (ТЧ - товар, количество), в нем есть реквизит ДокОснование - тип = Документ.
ДокОснованием может быть Документ.Реализация. . как чорным запросом вытянуть состав ТЧ дРегистратор, для которых выполняется условие Контрагент Реализации = выбКонтрагент. . не получается! спсб. |
|||
1
Тьма
06.08.13
✎
19:35
|
Внешняя функция в условии не?
|
|||
2
Злопчинский
06.08.13
✎
19:47
|
можно и так...
|
|||
3
Dolly_EV
07.08.13
✎
12:03
|
(0) прямой запрос не предлагать?
|
|||
4
Dolly_EV
07.08.13
✎
12:28
|
таки предложу:
лТекстЗапроса = " |ВЫБРАТЬ | $дРегистраторТЧ.Товар КАК [Товар $Справочник.Номенклатура] | ,$дРегистраторТЧ.Количество КАК Кво |ИЗ | ДокументСтроки.дРегистратор КАК дРегистраторТЧ $nolock |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | ЖурналДокументов КАК Жур $nolock |ПО $дРегистраторТЧ.ТекущийДокумент=$Жур.ТекущийДокумент | И $Жур.Проведен=1 | И $Жур.ДатаДокумента МЕЖДУ :лНачДата И :лКонДата~ |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Документ.дРегистратор КАК дРегистратор $nolock |ПО $дРегистраторТЧ.ТекущийДокумент=$дРегистратор.ТекущийДокумент |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Документ.Реализация КАК Реализация $nolock |ПО ПРАВО($дРегистратор.ДокОснование,9)=$Реализация.ТекущийДокумент | И $Реализация.Контрагент=:выбКонтрагент |СГРУППИРОВАТЬ | $дРегистраторТЧ.Товар,$дРегистраторТЧ.Количество"; |
|||
5
Злопчинский
07.08.13
✎
14:17
|
скопипастил, разбираться на будущее,
спсб! |
|||
6
Ёпрст
07.08.13
✎
14:24
|
(0) наслаждайся
|ДокОснование = Документ.дРегистратор.ДокОснование; |Условие((ДокОснование.Вид()=""Реализация"") и (Док.Контрагент в ВыбКонтрагент)); |
|||
7
Dolly_EV
07.08.13
✎
15:24
|
Я после прямых запросов теперь вообще не могу понять логики "чорных":-)) ужас!
|
|||
8
Злопчинский
07.08.13
✎
18:52
|
(7) я тоже, поэтому чорные запросы пишу просто.
|
|||
9
Злопчинский
07.08.13
✎
18:52
|
(6) ууу. мне надо чтобы
докОнсование.Контрагент = выбконтрагент |
|||
10
Dolly_EV
08.08.13
✎
05:44
|
(9) походу никак... ПРАВО($дРегистратор.ДокОснование,9) в чорном запросе не напишешь..
так возьми (4) и попробуй уже! |
|||
11
Dolly_EV
08.08.13
✎
05:49
|
может так?
Функция лПроверкаКонтра(п_Док) Если п_Док.Вид()="Реализация" Тогда Если п_Док.Контрагент=ВыбКонтрагент Тогда Возврат 1; Иначе Возврат 0; КонецЕсли; Иначе Возврат 0; КонецЕсли КонецФункции ... |ДокОснование = Документ.дРегистратор.ДокОснование; |Условие((ДокОснование.Вид()=""Реализация"") и (лПроверкаКонтра(ДокОснование)=1); |
|||
12
ЧеловекДуши
08.08.13
✎
06:16
|
(7) Аналогично :)
Но если опустить логику SQL и вернуться к то му времени, когда я постигал FoxPro по команде "Hello World!"... То все встает на места, логика там до противности детсадовская :) |
|||
13
Ёпрст
08.08.13
✎
08:36
|
(9) это оно и есть.
|
|||
14
Ёпрст
08.08.13
✎
08:36
|
просто ошибка в синтаксисе
|ДокОснование = Документ.дРегистратор.ДокОснование; |Условие((ДокОснование.Вид()=""Реализация"") и (ДокОснование.Контрагент в ВыбКонтрагент)); |
|||
15
Ёпрст
08.08.13
✎
08:36
|
и не надо там никаких функций.
|
|||
16
Ёпрст
08.08.13
✎
08:37
|
условия в запросе проверяются по сокращенному варианту, если первое ложь, то второе уже не проверяется. Как в снеговике.
|
|||
17
ЧеловекДуши
08.08.13
✎
13:12
|
(16) Ты уверен?
В обычном "Если <?> Тогда" выполняются все условия в независимости от результата :) |
|||
18
Ёпрст
08.08.13
✎
13:27
|
(17) да.
|
|||
19
ЧеловекДуши
08.08.13
✎
13:59
|
(18) Спасибо :)
|
|||
20
Ёпрст
08.08.13
✎
14:03
|
(19) можешь сам проверить..
так, например Функция МояФункция1(парам) сообщить("работает первая"); возврат 0; КонецФункции Функция МояФункция2(парам) сообщить("работает вторая"); возврат 1; КонецФункции |Условие(МояФункция1(ПеремЗапроса)=1 и (МояФункция2(ПеремЗапроса)=1)); |
|||
21
Злопчинский
08.08.13
✎
22:30
|
читаю.
|
|||
22
Ёпрст
09.08.13
✎
09:14
|
(21) делай, а не читай - солнце еще высоко!
|
|||
23
Злопчинский
09.08.13
✎
20:34
|
(220 я плачу...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |