|
Запрос и пустая таблица документа. | ☑ | ||
---|---|---|---|---|
0
ValeriTim
29.08.13
✎
14:54
|
Есть табличная часть документа с полями номенклатура и количество. Надо, чтобы запрос при пустой табличной часть возвращал одну строку с пустой номенклатурой и количеством равным 0. Не могу понять как это сделать ...
|
|||
1
exwill
29.08.13
✎
14:55
|
(0) Левое соединение + ВЫБОР ... КОГДА
|
|||
2
ValeriTim
29.08.13
✎
14:56
|
(1) левое соединение с чем ?
|
|||
3
exwill
29.08.13
✎
14:59
|
(2) Таблицы документов с таблицей табличной части.
|
|||
4
MKZM
29.08.13
✎
14:59
|
с самим собой
|
|||
5
ValeriTim
29.08.13
✎
15:01
|
(3) Я не пока в запросе не обрабатываю сам документ, а только табличную часть.
(4) и что это даст? Пустая таблица с пустой в любом случае не вернет ни одной строки. |
|||
6
exwill
29.08.13
✎
15:04
|
(5) Вот и обрабатывай сам документ. А ты как хотел? Откуда ты возьмешь информации о документе с пустой таб. частью?
|
|||
7
ValeriTim
29.08.13
✎
15:10
|
Сейчас запрос выглядит так:
ВЫБРАТЬ ВЫБОР КОГДА ОтгрузкаПокупателямТовары.Ссылка.ДляВсейНоменклатуры ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ИНАЧЕ ОтгрузкаПокупателямТовары.Номенклатура КОНЕЦ КАК Номенклатура, ВЫБОР КОГДА ОтгрузкаПокупателямТовары.Ссылка.ДляВсейНоменклатуры ТОГДА ОтгрузкаПокупателямТовары.Ссылка.ПроцентНаценки ИНАЧЕ ОтгрузкаПокупателямТовары.ПроцентНаценки КОНЕЦ КАК ПроцентНаценки, ОтгрузкаПокупателямПолучатели.Контрагент, ОтгрузкаПокупателямПолучатели.Получатель ИЗ Документ.ОтгрузкаПокупателям.Товары КАК ОтгрузкаПокупателямТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаПокупателям.Получатели КАК ОтгрузкаПокупателямПолучатели ПО (ИСТИНА) ГДЕ ОтгрузкаПокупателямПолучатели.Ссылка = &Ссылка И ОтгрузкаПокупателямТовары.Ссылка = &Ссылка |
|||
8
ValeriTim
29.08.13
✎
15:13
|
Поясню. В документе две табличные части - Товары (Номенклатура, ПроцентНаценки) и Получатели (Контрагент, получатель)
В итоге надо получить результирующую таблице, где к каждой строке из Товары шло по одной строке из Получатели. Загвоздка состоит в том, когда табличная часть Товары пуста - в этом случае там должна быть пустая номенклатура. |
|||
9
giallo
29.08.13
✎
15:22
|
[ где к каждой строке из Товары шло по одной строке из Получатели.] не соответствует [ ЛЕВОЕ СОЕДИНЕНИЕ...ПО (ИСТИНА)]
|
|||
10
Starhan
29.08.13
✎
15:24
|
ЕстьNULL(Номенклатура, Значение(Справочник.Номенклатура.ПустаяССсылка))
|
|||
11
1Сергей
29.08.13
✎
15:24
|
ТЧ Покупатели - это сильно
|
|||
12
ValeriTim
29.08.13
✎
15:29
|
(9) когда табличные части заполнены как раз и соответствует.
(10) Это тоже не работает - табличная то часть пуста. (11) что не так ? |
|||
13
giallo
29.08.13
✎
15:34
|
(12) просто у тебя в ТЧ Покупатели одна строка, будет несколько строк, тогда каждая строка с товаром из Товары размножится по числу строк в ТЧ получатели
|
|||
14
ValeriTim
29.08.13
✎
15:36
|
(13) именно это и требуется. Я не правильно выразился выше. В ТЧ Товары 3 строки, в ТЧ Покупатели 2 строки - в результате запроса должно получится 6 строк.
|
|||
15
1Сергей
29.08.13
✎
15:38
|
(14) в любом случае надо соединять с самим документом, если ТЧ может быть пустой
|
|||
16
giallo
29.08.13
✎
15:38
|
(14) тогда сделай правое соединение и (10)
|
|||
17
sirsp
29.08.13
✎
15:39
|
(14) Если получатели _всегда_ заполнены, достаточно в запросе поменять таблицы местами и использовать (10)
|
|||
18
ValeriTim
29.08.13
✎
15:41
|
Все дело в том, что пустой может быть любая из ТЧ, но только одна. А получить результат надо выборки самого документа.
|
|||
19
ValeriTim
29.08.13
✎
15:42
|
Я изначально упростил саму задачу, чтобы легче было понять, так что (11) не обращайте внимание на название табличных частей и реквизиты.
|
|||
20
le_
29.08.13
✎
15:47
|
(0) Запрос выведет выбранные номенклатуру и количество, если ТЧ документа не заполнена:
ВЫБРАТЬ
|
|||
21
giallo
29.08.13
✎
15:50
|
(19) Делай пакетный запрос
1 таб - таб часть товары 2 таб - таб часть получатели 3 запрос - левым содинением по истина эти первые две таб к таблице документа и (10) |
|||
22
ValeriTim
29.08.13
✎
15:52
|
(21) да надо без таблицы документа это обработать ... а то бы я сделал ...
|
|||
23
giallo
29.08.13
✎
15:53
|
(22) тогда сделай полное соединение по истина и (10)
|
|||
24
ValeriTim
29.08.13
✎
16:06
|
(23) попробовал - результат тот же ... щас еще одна идея появилась ...
|
|||
25
giallo
29.08.13
✎
16:10
|
(24) тот же результат потому что условие ГДЕ Ссылка = &Ссылка делает соединение внутренним. Сделай как (21) и полное соединение в третьем запросе
|
|||
26
ValeriTim
29.08.13
✎
16:38
|
(25), (21) спасибо - попробуем
|
|||
27
ValeriTim
29.08.13
✎
16:57
|
Получилось. и даже (10) применять не надо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |