Имя: Пароль:
1C
1С v8
Откуда может быть Null в поле запроса
0 Andreyyy
 
27.05.16
00:21
ВЫБРАТЬ
    ТоварыДокумента.Номенклатура,
    ТоварыДокумента.Характеристика,
    ТоварыДокумента.Количество
ПОМЕСТИТЬ ТоварыВДокументе
ИЗ
    &ТоварыДокумента КАК ТоварыДокумента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СУММА(ТоварыВДокументе.Количество * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) КАК СебестоимостьПоДокументу
ИЗ
    ТоварыВДокументе КАК ТоварыВДокументе
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                &ДатаОкончание,
                ВидЦены = &ВидЦены
                    И Номенклатура В
                        (ВЫБРАТЬ
                            ТоварыВДокументе.Номенклатура
                        ИЗ
                            ТоварыВДокументе КАК ТоварыВДокументе)) КАК ЦеныНоменклатурыСрезПоследних
        ПО ТоварыВДокументе.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ТоварыВДокументе.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
;

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

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ТоварыВДокументе

А конкретно
СУММА(ЕСТЬNULL(ВложенныйЗапрос.ВНаличииОстаток, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) КАК СебестоимостьПоСкладу
1 Сергиус
 
27.05.16
00:39
(0)В каком поле? Если говорить впринципе, то из-за соединения.
2 Andreyyy
 
27.05.16
01:16
(1) >А конкретно
СУММА(ЕСТЬNULL(ВложенныйЗапрос.ВНаличииОстаток, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) КАК СебестоимостьПоСкладу
1
3 youalex
 
27.05.16
01:26
ну, вроде как вместо  СУММА(ЕСТЬNULL(ВложенныйЗапрос.ВНаличииОстаток, 0)
есть смысл написать ISNULL(СУММА(ВложенныйЗапрос.ВНаличииОстаток), 0)
Но не уверен - лень проверять что выдает СУММА() если значений вообще нет.
4 Andreyyy
 
27.05.16
01:41
Типа эту функцию

СУММА(ЕСТЬNULL(ВложенныйЗапрос.ВНаличииОстаток, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0))

обернуть еще в ЕСТЬNULL ?

Скорее всего отработает, спасибо за идею. Но однако неясно почему в текущем варианте бывает "Null".
При каких стечениях обстоятельств и версиях платформы происходит - не разбирался.
5 youalex
 
27.05.16
01:49
(4) ну или так. Но достаточно первый аргумент обернуть, т.к. второй уже - обернут)). Опять же есть смысл проверить (и поделиться лишний раз) - что выдает СУММА() если все - NULLы.
Кстати (отдельно от темы) - почему на клаве английское s (мн.ч.) - это русское ы. Вот так вопрос(с)
6 Andreyyy
 
27.05.16
02:17