|
В запросе ПОЛНОЕ СОЕДИНЕНИЕ не срабатывает. Подскажите. | ☑ | ||
---|---|---|---|---|
0
gRIP
22.11.11
✎
16:04
|
Привет всем.
Делаю Инвентаризацию по складу. Надо вывести печ. форму с колонками Номенклатура, Штрихкод, УчетКол, УчетВес (эти две колонки из регистра ОстаткиТМЦ), ФактКол, ФактВес (эти две колонки - из тч Изделия, документа Инвентаризация). Таким образом какой-то Номенклатуры может не быть в регистре, какой-то - в документе. Делаю Запрос с подзапросом и пытаюсь соединить их через ПОЛНОЕ СОЕДИНЕНИЕ. Но не попадают данные о Номенклатуре, которая есть в регистре, но нет в документе. Может кто подскажет, что не так ? Сам текст запроса вот: ВЫБРАТЬ Инвентаризация.Номенклатура, Инвентаризация.Штрихкод, СУММА(ЕСТЬNULL(Инвентаризация.Количество, 0)) КАК ФактКол, СУММА(ЕСТЬNULL(Инвентаризация.Вес, 0)) КАК ФактВес, СУММА(ЕСТЬNULL(Подзапрос.Количество, 0)) КАК УчетКол, СУММА(ЕСТЬNULL(Подзапрос.Вес, 0)) КАК УчетВес ИЗ Документ.Инвентаризация.Изделия КАК Инвентаризация ПОЛНОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ ОстаткиТМЦОстатки.Номенклатура КАК Номенклатура, ОстаткиТМЦОстатки.Штрихкод КАК Штрихкод, СУММА(ОстаткиТМЦОстатки.ВесОстаток) КАК Вес, СУММА(ОстаткиТМЦОстатки.КоличествоОстаток) КАК Количество ИЗ РегистрНакопления.ОстаткиТМЦ.Остатки(&МоментВремени, Склад = &Склад) КАК ОстаткиТМЦОстатки СГРУППИРОВАТЬ ПО ОстаткиТМЦОстатки.Номенклатура, ОстаткиТМЦОстатки.Штрихкод) КАК Подзапрос ПО Инвентаризация.Номенклатура = Подзапрос.Номенклатура И Инвентаризация.Штрихкод = Подзапрос.Штрихкод ГДЕ Инвентаризация.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО Инвентаризация.Номенклатура, Инвентаризация.Штрихкод АВТОУПОРЯДОЧИВАНИЕ |
|||
1
Maxus43
22.11.11
✎
16:06
|
ЕСТЬNULL(Инвентаризация.Номенклатура, Подзапрос.Номенклатура)
|
|||
2
Axel2009
22.11.11
✎
16:20
|
(0) а откуда он по вашему должен взять данные, которых нет в документе?
|
|||
3
gRIP
22.11.11
✎
16:54
|
(1) Не очень понял куда это вставлять. Вставил вместо строки 2 ЕСТЬNULL(Инвентаризация.Номенклатура, Подзапрос.Номенклатура) КАК Номенклатура, И в СГРУППИРОВАТЬ ПО Подзапрос.Номенклатура, но всё-равно не показывает полностью всю Номенклатуру.
|
|||
4
andrewks
22.11.11
✎
16:54
|
вместо Инвентаризация.Номенклатура
|
|||
5
gRIP
22.11.11
✎
16:58
|
(2) Ну, вроде, подзапрос выбирает все данные из регистра остатков, по нужному складу. Т.е. туда попадет вобще вся номенклатура на складе. А при Полном соединении, я так понимаю, она должна хм ... отобразиться как NULL, с УчетКол, и УчетВес. Разве нет ?
|
|||
6
gRIP
22.11.11
✎
17:00
|
(4) Да, я туда и вставил получилось
ВЫБРАТЬ ЕСТЬNULL(Инвентаризация.Номенклатура, Подзапрос.Номенклатура) КАК Номенклатура, Инвентаризация.Штрихкод, ... и в конце пришлось добавить группировку СГРУППИРОВАТЬ ПО Подзапрос.Номенклатура, Инвентаризация.Номенклатура, .... (иначе ругает, что Подзапрос.Номенклатура не входит в группировку) Но, всё-равно выдаёт неправильный результат :-/ |
|||
7
Buster007
22.11.11
✎
17:00
|
(0) запрос написан неправильно.
ГДЕ Инвентаризация.Ссылка = &Ссылка когда нет таких позиций в документе, Инвентаризация тоже является NULL, а ты накладываешь условие на результат запроса. Дальше думай сам. |
|||
8
Axel2009
22.11.11
✎
17:07
|
(6) в сгруппировать тоже надо ЕСТЬNULL(Инвентаризация.Номенклатура, Подзапрос.Номенклатура)
|
|||
9
Рыцарь
22.11.11
✎
17:10
|
может лучше использовать конструкцию ОБЪЕДИНИТЬ ВСЕ? или я что то не так понял..
|
|||
10
Defender aka LINN
22.11.11
✎
17:10
|
Ну и где там полное соединение?
|
|||
11
GROOVY
22.11.11
✎
17:12
|
(10) Тебе сказали "Полное" и все. Не спорь с коллегами ;)
|
|||
12
Defender aka LINN
22.11.11
✎
17:14
|
(11) Молчу, молчу... :)
|
|||
13
VVi3ard
22.11.11
✎
17:34
|
(7) правильно написал
|
|||
14
gRIP
22.11.11
✎
18:20
|
Через ОБЪЕДИНИТЬ ВСЕ я и решил. Но это частный случай. Насколько я понимаю Объединение сработает только при одинаковых колонках. Ну а если колонки отличаются ?
В Сгруппировать ЕСТЬNULL(Инвентаризация.Номенклатура, Подзапрос.Номенклатура) - не помогло. Думаю про Ссылку... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |