Имя: Пароль:
1C
1C 7.7
v7: Как совместить в переменной запроса два реквизита документа?
,
0 kissolo
 
04.12.16
16:23
В документе РасходнаяНакладная есть покупатель и грузополучатель. Если грузополучатель совпадает с покупателем, то реквизит "грузополучатель" в документе остается пустым.

Есть запрос, вот его часть:
Грузополучатель = Документ.Заказ.Заказчик,Документ.РасходнаяНакладная.Грузополучатель;

Можно ли как-то указать, в тексте запроса, что если грузополучатель в документе пустой, то в переменную Грузополучатель присваивать значение покупателя из РасходнойНакладной?

PS: этот запрос - часть отчета, сильно переделанного, поэтому если делать отдельный запрос по грп, достаточно геморройно будет искать подходящую строку (т.к. там кроме грузополучателя может быть и другая группировка включена, например, номенклатура)...
1 Mauser
 
04.12.16
16:30
1) У запроса нет переменных
2) В описании языка запросов надо прочитать про ВЫБОР
2 Mauser
 
04.12.16
16:31
А, это 7.7
Извиняюсь, думал про 8
3 Slypower
 
05.12.16
13:19
(0) один из способов, это в запросе сделать:
Грузополучатель = Документ.Заказ.Заказчик;
Грузополучатель1 = Документ.РасходнаяНакладная.Грузополучатель;
, а уже при обработки строк запроса впихнуть:
Если СокрЛП(Грузополучатель)="" Тогда
Грузополучатель=Грузополучатель1;
КонецЕсли;
4 Mauser
 
05.12.16
13:41
(3) А в 7.7 чтобы проверить на пустое значение, обязательно к строке приводить?
5 Builder
 
05.12.16
13:45
(4) Не обязательно, это от религии зависит :)

Если ПустоеЗначение(Грузополучатель)=1 Тогда
КонецЕсли;
6 Mauser
 
05.12.16
13:50
(5) Так даже понятней. Ну, если религия состоит в "было тяжело писать, пусть будет тяжело читать" тогда да...

Там в 7.7 есть функции с выражением КОГДА. Не спасет?
7 lubitelxml
 
05.12.16
13:52
(6) она вроде только для функций... 7.7 давно не видел
8 Lazy Stranger
 
05.12.16
13:53
Ещё можно обработкой во всех накладных в базе в расх. накладных в поле грузополучатель покупателя засунуть (ну и для новых документов при записи это делать)
9 Builder
 
05.12.16
13:54
(6) Она для расчета чего либо,
типа
Функция СуммаКолво = Сумма(Колво) Когда ПустоеЗначение(Грузополучатель)=1
10 kissolo
 
05.12.16
23:44
(3) Не совсем понятен смысл этого кода.
Грп (aka Грузополучатель) - по нему идет группировка. и на одном уровне надо сразу и у заказа и у реализации видеть Грп (чтобы видеть кол-во заказа и отгрузки). Так бы можно было добавить переменную Покупатель, куда брать из реализации Покупателя, и проверку на пустое значение Грп делать (т.е. если Грп пустой, в него писать покупателя) - но это уже другой уровень запроса же будет... а у вас вообще получается, Грп - из заказа, Грп1 - из реализации, и зачем тогда в Грп брать значение из Грп1?
Непонятно..
11 kissolo
 
05.12.16
23:47
(8) Тоже не совсем подходяший вариант, у 1с-ников там хитро придумано, мол, если Грп пустой - в форме документа включается галка "он же" (т.е. Грп = Покупателю), и в печ.ф. так же, и вполне возможно, что где-то еще. Так что не стал рушить, поступил проще - добавил еще реквизит в шапку, Грп1 - и в него при проведении документа отгрузки пишу Грп (а если тот пустой - то покупателя), заодно потом вывожу этот реквизит в форму журнала (они как раз попросили добавить колонку "грп")..

Изврат, конечно... Зато быстро, а то отчет уже долго делаю..
12 Garykom
 
гуру
05.12.16
23:51
Условие(Грузополучатель в СписокГрузополучатели);
13 kissolo
 
06.12.16
09:49
(12) Зачем мне условие в таком виде? Мне надо, что если Грп в документе пустой - брать покупателя (из того же документа).

офф. Я так понимаю, в данном варианте задача не решаема, т.к. группировки по документу нет, а только из документа можно взять покупателя... В общем, остаюсь на своем варианте, всем спасибо.
14 пипец
 
06.12.16
10:08
есть еще внешние функции - но эт уже действительно вопрос религии