Имя: Пароль:
1C
1С v8
Объединение виртуальных таблиц в запросе
0 techguru
 
17.02.12
14:15
Есть две таблицы - Резерв и Остатки - со связью по полям Склад и Номенклатура. Левое соединение в запросе. Как сделать, чтобы в результат запроса попадали позиции с нулевым остатком? Сейчас они просто игнорируются.
1 Beduin
 
17.02.12
14:16
(0) Откуда в таблице остатков нулевые остатки?
2 Fish
 
17.02.12
14:17
Не использовать левое соединение?
3 salvator
 
17.02.12
14:18
Переписать запрос?
4 Lys
 
17.02.12
14:19
Сходить на курсы?
5 Lys
 
17.02.12
14:20
Почитать книжки?
6 pessok
 
17.02.12
14:21
уже вижут вирт. таблицу - Остатки.ОстаткиИОбороты()
7 Reset
 
17.02.12
14:21
то, что есть, дополнительно соединить правым соединением со справочником номенклатура.
и да, пред. ораторы тоже правы)
8 techguru
 
17.02.12
14:22
Так, переформулирую вопрос.

Есть виртуальные таблицы ТоварыНаСкладах.Остатки и ТоварыВРезервеНаСкладах.Остатки. Бывает так, что в резерве стоят товары, которых на складе нет, при этом мне необходимо сравнивать КоличествоРезерв и КоличествоОстаток - и в зависимости от результата выводить или не выводить строку.

Если остаток нулевой, то строка не попадает в результат запроса.
9 Beduin
 
17.02.12
14:22
(8) ЕСТЬNULL кури
10 Reset
 
17.02.12
14:22
(8) Полное содинение тогда
11 pessok
 
17.02.12
14:24
(8)
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Склад КАК Склад,
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   0,
   0,
   ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
   0 КАК КоличествоЗаказаноНаПроизводство
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки

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

ВЫБРАТЬ
   ВЫБОР
       КОГДА ЗаказыНаПроизводствоОстатки.Номенклатура.СкладОтгрузкиКонечной <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
           ТОГДА ЗаказыНаПроизводствоОстатки.Номенклатура.СкладОтгрузкиКонечной
       ИНАЧЕ ТоварыНаСкладахОстатки.Склад
   КОНЕЦ,
   ЗаказыНаПроизводствоОстатки.Номенклатура,
   ЗаказыНаПроизводствоОстатки.ХарактеристикаНоменклатуры,
   0,
   0,
   0,
   ЗаказыНаПроизводствоОстатки.КоличествоОстаток
ИЗ
   РегистрНакопления.ЗаказыНаПроизводство.Остатки(, ) КАК ЗаказыНаПроизводствоОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
       ПО ЗаказыНаПроизводствоОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
           И ЗаказыНаПроизводствоОстатки.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры

энджой
12 pessok
 
17.02.12
14:24
регистр свой там подставь
13 Lys
 
17.02.12
14:24
(8) Ну-с, доставайте и показывайте своего друга (с)
Текст запроса в студию.
14 techguru
 
17.02.12
14:30
(13),

ВЫБРАТЬ
   ТоварыВРезервеНаСкладахОстатки.Склад КАК Склад,
   ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоВРезерве,
   ТоварыВРезервеНаСкладахОстатки.ДокументРезерва КАК ДокументРезерва,
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоНаСкладе
ИЗ
   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ) КАК ТоварыВРезервеНаСкладахОстатки
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
       ПО ТоварыВРезервеНаСкладахОстатки.Склад = ТоварыНаСкладахОстатки.Склад
           И ТоварыВРезервеНаСкладахОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
ГДЕ
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > ТоварыНаСкладахОстатки.КоличествоОстаток

СГРУППИРОВАТЬ ПО
   ТоварыВРезервеНаСкладахОстатки.Склад,
   ТоварыВРезервеНаСкладахОстатки.Номенклатура,
   ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)

УПОРЯДОЧИТЬ ПО
   Склад,
   Номенклатура,
   ДокументРезерва
15 pessok
 
17.02.12
14:34
(14) КАК у тебя выведутся товары, которых нет на складе с таким условием?
16 Lys
 
17.02.12
14:34
(14) Условие (секцию ГДЕ) удали.
17 techguru
 
17.02.12
14:36
(16) Если удалить ГДЕ, то конечно, товар с нулевым остатком выводится. Но мне необходимо, чтобы результаты фильтровались по этому условию. Если резерв = 12 шт, а остаток 0 шт, то строка выводится, а если резерв = 1 шт, а остаток = 10 шт, то не выводится.
18 pessok
 
17.02.12
14:38
(17) сделай уже как 11 и наложи условие на результат
19 Reset
 
17.02.12
14:38
(17) "Если резерв = 12 шт, а остаток 0 шт, то строка выводится, а если резерв = 1 шт, а остаток = 10 шт, то не выводится."
Что мешает напичать это условие?
20 Reset
 
17.02.12
14:38
написать*
21 Reset
 
17.02.12
14:41
На самом деле, запутался, что должно выводиться, а что не должно.
22 techguru
 
17.02.12
14:42
(21), должны выводиться только те строки, в которых Резерв превышает Остаток на складе
23 Reset
 
17.02.12
14:42
isNull(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,0) > isNull(ТоварыНаСкладахОстатки.КоличествоОстаток,0)

не прокатит?
24 Reset
 
17.02.12
14:43
(23) к (22)
25 pessok
 
17.02.12
14:45
ВЫБРАТЬ
   ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры КАК СерияНоменклатуры,
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ВРезерве,
   0 КАК НаСкладе
ИЗ
   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки

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

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



условие накладываешь уже на результат
26 techguru
 
17.02.12
14:45
(24), бинго! Спасибо!
27 hhhh
 
17.02.12
14:46
(22) если строки остатка нет, то ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток = NULL и твое условие

ГДЕ
   ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > ТоварыНаСкладахОстатки.КоличествоОстаток

оказывается в полной ж.

ты - миллионпервая жертва NULL.
Основная теорема систематики: Новые системы плодят новые проблемы.