Имя: Пароль:
1C
 
Запрос. Как сэмулировать получение данных?
0 Галахад
 
гуру
30.07.20
12:15
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад КАК Ссылка,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В ИЕРАРХИИ (&Номенклатура) и Склад В ИЕРАРХИИ (&Склад)) КАК ТоварыНаСкладахОстатки

Допустим есть простой запрос.
И в параметрах указаны три склада. На одном из них товара нет. Соответственно в результате данных по этом складу просто не будет.
Но хотелось бы чтобы в получаемой табличке был этот склад с остатком = 0.
1 H A D G E H O G s
 
30.07.20
12:17
Очень странные дела...
2 yzimin
 
30.07.20
12:19
сэмулируй левым соединением, но надо подумать)))
3 Nikoss
 
30.07.20
12:22
Выбрать сначала номенклатуру из параметра во временную таблицу, потом к ней левым соединением остатки (ну и ЕСТЬНУЛЛ(Остаток, 0))
4 Nikoss
 
30.07.20
12:22
(2) ой, надо было дать человеку подумать?))
5 Галахад
 
гуру
30.07.20
12:26
(3) А склады?
6 ГдеСобака Зарыта
 
30.07.20
12:26
(4) сначала надо было подумать тебе). Откуда в (3) все склады появятся?
7 hhhh
 
30.07.20
12:26
(3) это не то. У вас одна строчка, а нужно 3. По каждому складу отдельная строка.
8 Галахад
 
гуру
30.07.20
12:26
Хм. Похоже только декартово произведение спасет меня.
9 Nikoss
 
30.07.20
12:28
(5)(6)(7) ладно ладно) еще склады выбрать во врем таб, и полное соединение с номенклатурой
10 ГдеСобака Зарыта
 
30.07.20
12:33
(8) Т.е. совет подумать из (2) не подходит? Думать не наше кредо?
11 Галахад
 
гуру
30.07.20
12:33
(9) Чего? Какое полное?

(10) А какие еще варианты?
12 ГдеСобака Зарыта
 
30.07.20
12:37
(11) Тут еще не ясен момент с номенклатурой. Если ее нет на остатках ни по одному складу, то тогда выводить в результат или нет?
13 Галахад
 
гуру
30.07.20
12:39
(12) Нет. Если нигде нет, то нет.
14 Ёпрст
 
30.07.20
12:49
(0) ну и сделай запрос к справочнику склады с условием на &Склад + левое соедиенние с твоим запросом в (0). будут тебе все склады в результате
15 Галахад
 
гуру
30.07.20
12:53
(14) Да сделал уже. Но как-то это не красиво...
16 Nikoss
 
30.07.20
12:54
(15) покажи
17 Галахад
 
гуру
30.07.20
12:56
(16) Типа того:

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад КАК Ссылка,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
ПОМЕСТИТЬ ТаблицаДанных
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В ИЕРАРХИИ (&Номенклатура) и Склад В ИЕРАРХИИ (&Склад)) КАК ТоварыНаСкладахОстатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Склады.Ссылка,
    Номенклатура.Ссылка,
    0 КАК Остаток
ИЗ
    Справочник.Склады КАК Склады,
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Склады.Ссылка В ИЕРАРХИИ(&Склад)
    И Номенклатура.Ссылка В ИЕРАРХИИ(&Номенклатура);

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаДанных.Ссылка КАК Ссылка,
    ТаблицаДанных.Номенклатура КАК Номенклатура,
    ТаблицаДанных.Остаток КАК Остаток
ИЗ
    ТаблицаДанных КАК ТаблицаДанных
18 Nikoss
 
30.07.20
13:28
(17) так у тебя же будет по 2 строки, если по номенклатуре есть остаток. Одна с остатком и вторая с нулем.
19 Nikoss
 
30.07.20
13:30
ну и условие из (13) где?
20 Галахад
 
гуру
30.07.20
13:52
(19) Это запрос для примера. Реальный запрос несколько сложнее и там всё это есть.
21 Вафель
 
30.07.20
13:56
можно в процессе вывода обходить запрса по группировкам со всеми значениями