Имя: Пароль:
1C
1С v8
СКД: как правильно суммировать?
,
0 541
 
29.02.12
08:57
Есть вот такой вот самопальный отчет: http://savepic.net/2523162.png

в нем все поля, кроме последнего, заполняются путем простого выдергивания данных из нужных регистров. Последнее - вычисляемое поле, должно быть равно "остаток + заказано" по каждой позиции (характеристике номенклатуры).

На данный момент оно заполняется только если оба поля ("остаток" и "заказано") заполнены.

Как заставить систему понимать пустое поле, как значение, равное нулю?
1 Смешной 1С
 
29.02.12
09:11
ЕстьNULL
2 mikecool
 
29.02.12
09:12
(0) сделай вычисляемое поле
3 Смешной 1С
 
29.02.12
09:13
+ (1) т.е ЕстьNULL(остаток, 0) + ЕстьNULL(заказано, 0)
(2) У него и так вычисляемое
4 541
 
29.02.12
09:27
Сейчас пришел к выводу, что ошибка не в вычисляемом поле, а в формировании исходных значений. Вот запрос для получения "остаток" и "едет":

ВЫБРАТЬ
   ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
   ТоварыНаСкладахОстатки.Номенклатура,
   СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК ОстатокНаПервомСкладе1,
   СУММА(ЗаказыПоставщикамОстатки.КоличествоОстаток) КАК ЗаказаноПоставщику1
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
       ПО ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры
ГДЕ
   ТоварыНаСкладахОстатки.Склад.Наименование = "Наш склад"

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
   ТоварыНаСкладахОстатки.Номенклатура

Результат выполнения запроса - набор записей, в которых заполнены оба значения. Наверное, это из-за условия "ТоварыНаСкладахОстатки.Склад.Наименование = "Наш склад"".

Как обойти?
5 НЕА123
 
29.02.12
09:31
(4)
ЛЕВОЕ надо.
6 541
 
29.02.12
09:33
а если остаток будет = 0, а "едет" <> 0 ?
7 НЕА123
 
29.02.12
09:34
может ПОЛНОЕ.
8 541
 
29.02.12
09:34
ты издеваешься чтоли?
9 НЕА123
 
29.02.12
09:34
(6)
ага. ПОЛНОЕ надо.
10 Wobland
 
29.02.12
09:35
(8) я тоже за полное
11 541
 
29.02.12
09:35
магия. работает

Спасибо всем
12 541
 
29.02.12
09:48
а, нет, все-равно не работает.
Записи, в которых "остаток" = 0, а "едет" <> 0 не отображаются.
13 Wobland
 
29.02.12
09:50
(12) а ты до сих пор только по характеристике соединяешь?
14 541
 
29.02.12
09:52
да, а следует дополнительно по номенклатуре? что это изменит?
15 Wobland
 
29.02.12
09:52
(14) попадут номенклатуры с пустыми характеристиками
16 Wobland
 
29.02.12
09:53
(15) или я не пообедал ещё?
17 541
 
29.02.12
09:54
крайне мало у нас таких номенклатур, если есть вообще. До сих пор ни разу на это не натыкались
18 Wobland
 
29.02.12
09:57
(17) всё равно некрасиво. Номенклатура Трамвай (с пустой характеристикой) будет соединена с номенклатурой Бабушка (с пустой характеристикой).
в консоли запрос глядел?
19 541
 
29.02.12
09:58
в консоли это и вижу - не показывает нужные строчки
20 НЕА123
 
29.02.12
09:58
(14)
склад еще есть. и "помни о детях!" (с) т.е. ЕСТЬNULL
21 Wobland
 
29.02.12
10:00
(19) (справочник номенклатура левое товары) полное (справочник номенклатура левое заказы) ?
22 Wobland
 
29.02.12
10:01
(20) у него остатки, какой ЕСТЬNULL?
23 Wobland
 
29.02.12
10:01
+(22) и СУММА()
24 Wobland
 
29.02.12
10:01
(21) всё, пойду обедать
25 Wobland
 
29.02.12
10:03
(19) ну ты понял, что у тебя в виртуальной таблице некоторых номенклатур может и не быть?
26 НЕА123
 
29.02.12
10:04
(22)
соединение у него ПОЛНОЕ, вроде. получается, что NULL везде может быть.
27 Garkin
 
29.02.12
10:04
(22) Самый настоящий СУММА(ЕСТЬNULL(....) ) и далее по тексту
28 Wobland
 
29.02.12
10:32
(21) + где товары<>NULL и заказы<>NULL
29 541
 
29.02.12
11:28
ЕстьNULL здесь не при чем. Все упирается в условие "ТоварыНаСкладахОстатки.Склад.Наименование = "Наш склад"".

Подскажите (если можно, максимально конкретно и логично), каким образом к характеристике "хар1" единым запросом найти значения "остаток" (обязательно отбор только по "наш склад") и "едет" (заказано поставщику)?
30 Wobland
 
29.02.12
11:34
(29) выбрать заказы.номенклатура, заказы.остаток, естьNULL(товары.остаток) из заказы(&период, &склад) левое товары(&период, &склад)
31 541
 
29.02.12
11:43
А если позиция не заказана, но есть в остатке?
32 Garkin
 
29.02.12
11:46
(29) Сделай вложенный запрос по ТоварыНаСкладахОстатки с условием ГДЕ, а потом соединяй вложенный запрос с заказами.

ЗЫ: За условие типа ТоварыНаСкладахОстатки.Склад.Наименование = "Наш склад"" обычно предлагают чтонибудь оторвать.
33 Wobland
 
29.02.12
11:49
(31) -> (21)+(28)