Имя: Пароль:
1C
1С v8
Выборка данных из разных типов документов
0 Одичавший Одинэсник
 
05.04.24
09:02
Добрый день!

Делал ВПФ для Маршрутного листа.
Теперь необходимо, чтобы данная печатка печаталась из Расходной накладной.

В запросе ВПФ сейчас у меня в массив объектов попадает Маршрутный лист (или несколько), и из него (их) вытаскиваются расходные накладные.

Столкнулся с проблемой, что при печати из док-та Расходная накладная, в массив поступают именно они (что, вроде бы логично).

Как правильно сделать запрос, чтобы при разных документах немного по разному отрабатывал запрос?
Т.е. если в Массиве объектов Маршрутные листы, тогда отбиралось по ним, а если расходные накладные - то сразу по ним?


    Запрос.Текст =
    "ВЫБРАТЬ
    |    МаршрутныйЛистЗаказы.Ссылка КАК Ссылка,
    |    МаршрутныйЛистЗаказы.РасходнаяНакладная КАК РасходнаяНакладная1
    |ПОМЕСТИТЬ втМаршрутный
    |ИЗ
    |    Документ.МаршрутныйЛист.Заказы КАК МаршрутныйЛистЗаказы
    |ГДЕ
    |    МаршрутныйЛистЗаказы.Ссылка В(&МассивОбъектов)
    |;
    |


Собственно, кусок запроса, который, как я думаю, надо заменить.

Есть мысль, что надо использовать ВЫБОР КОГДА ТОГДА ИНАЧЕ, но не уверен, что так правильно (да и не понимаю, как сделать даже таким образом);

Спасибо!
1 Одичавший Одинэсник
 
05.04.24
09:04
П.С. Никогда не делал ВПФ сразу на несколько документов, поэтому прошу отнестись с пониманием)
2 FIXXXL
 
05.04.24
09:06
(0) можно собирать &МассивОбъектов просто от входящих данных отдельным запросом, или в пакете основного
пришел массив Листов - передаем как есть, пришло что-то другое - собираем Листы из того, что пришло
3 Смотрящий
 
05.04.24
09:07
Через объединить все
первый кусок запроса на маршруты, второй на расходные
4 Одичавший Одинэсник
 
05.04.24
09:57
(3) Спасибо, интересный способ.

Сначала не понял, а потом как понял) Реализовал, работает вроде. Не знаю, какие могут быть подводные камни, пока всё хорошо)
5 Одичавший Одинэсник
 
05.04.24
10:07
(2) Спасибо за помощь. Вот с этим немного не понял, хотя изо всех сил пытался понять. Решил через (3) .
6 p-soft
 
05.04.24
10:10
(5) типовой код какой нибудь ут почитайте, там много интересного.
7 Смотрящий
 
05.04.24
10:14
(6) Не смущай неофита. Так он тычется и нарабатывает собственный опыт; а твое предложение прямой пусть в гуглопогромизды
8 p-soft
 
05.04.24
10:17
(7) то что сейчас тычется, уже говорит о том, что он из стадии "гуглопогромизды" пытается выглядывать. реалии сейчас таковы, что если раньше дети из капусты лезли, то сейчас их гугел почкует.
9 Смотрящий
 
05.04.24
10:20
(8) Вряд ли выглядывает - они или находят код подходящий под задачу и ничего не спрашивают или "стоят такие, в глазах слезинка..."
10 FIXXXL
 
05.04.24
10:20
(5) если во входящем массиве первый элемент не Лист - создать новый массив Листов по входящему массиву
(3) хороший вариант, но запрос может быть громоздкий :)
11 Одичавший Одинэсник
 
05.04.24
10:40
(10) В моём случае запрос вышел таким:

    "ВЫБРАТЬ
    |    МаршрутныйЛистЗаказы.Ссылка КАК Ссылка,
    |    МаршрутныйЛистЗаказы.РасходнаяНакладная КАК РасходнаяНакладная1
    |ПОМЕСТИТЬ втМаршрутный
    |ИЗ
    |    Документ.МаршрутныйЛист.Заказы КАК МаршрутныйЛистЗаказы
    |ГДЕ
    |    МаршрутныйЛистЗаказы.Ссылка В(&МассивОбъектов)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    0,
    |    РасходнаяНакладная.Ссылка
    |ИЗ
    |    Документ.РасходнаяНакладная КАК РасходнаяНакладная
    |ГДЕ
    |    РасходнаяНакладная.Ссылка В(&МассивОбъектов)
    |;


Остальное там без изменений, типовое с УНФ
12 Смотрящий
 
05.04.24
10:48
0, - плохое решение; замени на пустую ссылку на документ МаршрутныйЛист
13 DJ Anthon
 
05.04.24
10:53
(11) у тебя один документ может попасть несколько раз. и нет проверки на проведенность.
14 Одичавший Одинэсник
 
05.04.24
11:38
(12) Да, уже подправил, спасибо!
(13) Проверки нет, там в ТЧ Маршрутного заполняются уже проведенные документы.
А накладную отдельно да, можно непроведённую напечатать. Надо исправить, спасибо!
Несколько одинаковых документов не попадут (или я не вижу возможного варианта, тогда прошу подсказать).
15 Смотрящий
 
05.04.24
11:39
(14) Сгруппируй результат. Тогда "один документ может попасть несколько раз" выродится в одну строку в запросе
16 Одичавший Одинэсник
 
05.04.24
11:42
(15) А как вообще может туда несколько одинаковых документов попасть? Я этого не могу понять.
Печать идёт из Маршрутного листа, где уже заполнены накладные. Либо непосредственно из накладной
17 Смотрящий
 
05.04.24
11:46
(16) Да хрен его знает. (13) движения наводит
18 DJ Anthon
 
05.04.24
11:46
(16) один документ может быть в табличной части два раза. например, после объединения дублей. и у тебя "объединить все" в запросе, это тоже фактор дублей всегда. а еще есть полезное слово "различные", изучи его
19 Одичавший Одинэсник
 
05.04.24
11:56
(18) "после объединения дублей" - частный случай, хз когда и как это может быть. Группировать и ставить "Различные" особо не вижу смысла. Если вдруг понадобится, обязательно сгруппирую, спасибо
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.