Имя: Пароль:
1C
1С v8
Не заполняется таблица значений номенклатурой с нулевым остатком .
, ,
0 VismuT
 
01.08.23
16:04
Здравствуйте.
УТ Кз 2.2 ОП.
Не заполняется таблица значений номенклатурой с нулевым остатком во внешней обработке. Использую Левое соединение и ЕстьNull ///
Текст запроса
НачалоПериода = НачалоПериода;
КонецПериода = КонецПериода;
КоличествоОстаток = 0 ;
    
    Запрос = Новый Запрос;
    Запрос.Текст ="ВЫБРАТЬ
                  |    СрокиГодностиНоменклатуры.Номенклатура,
                  |    СрокиГодностиНоменклатуры.СрокГодности
                  |ПОМЕСТИТЬ ТоварыНаСкладах
                  |ИЗ
                  |    РегистрСведений.СрокиГодностиНоменклатуры КАК СрокиГодностиНоменклатуры
                  |ГДЕ
                  |    СрокиГодностиНоменклатуры.СрокГодности МЕЖДУ &НачалоПериода И &КонецПериода
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    СрокиГодностиНоменклатуры.Номенклатура,
                  |    СрокиГодностиНоменклатуры.СрокГодности
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    ТоварыНаСкладах.Номенклатура,
                  |    МИНИМУМ(ТоварыНаСкладах.СрокГодности) КАК СрокГодности,
                  |    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
                  |ИЗ
                  |    ТоварыНаСкладах КАК ТоварыНаСкладах
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                  |        ПО ТоварыНаСкладах.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
                  |ГДЕ
                  |    ТоварыНаСкладахОстатки.КоличествоОстаток <= &КоличествоОстаток
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ТоварыНаСкладах.Номенклатура,
                  |    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)";
    
    Запрос.УстановитьПараметр("КоличествоОстаток", КоличествоОстаток);
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    
    ТаблицаЗначений = Запрос.Выполнить().Выгрузить();
    ЭлементыФормы.ТаблицаЗначений.СоздатьКолонки();
Вот результат:
https://ibb.co/6rgFqzX
1 RomanYS
 
01.08.23
16:08
поменяй таблицы местами или "левое" замени на "правое"
2 Мультук
 
гуру
01.08.23
16:11
(0)

           |ИЗ
           |    ТоварыНаСкладах КАК ТоварыНаСкладах
           |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
           |        ПО ТоварыНаСкладах.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
           |ГДЕ
           |    ТоварыНаСкладахОстатки.Номенклатура IS NULL
3 VismuT
 
01.08.23
16:12
(1) Таблицы местами не пробовал менять . А типы соединение все перебрал . Результат шляпа.
4 shuhard
 
01.08.23
16:13
(0)   |ГДЕ   ТоварыНаСкладахОстатки.КоличествоОстаток <= &КоличествоОстаток
бред
NULL нельзя сравнивать
5 VismuT
 
01.08.23
16:25
(4) убрал NULL/
Такой же результат .
https://hkar.ru/17QFx
Другие позиции со сроком годности , но без остатка не появляются .
6 НафНаф
 
01.08.23
16:26
сроки годности не заполнены?
7 Garykom
 
гуру
01.08.23
16:27
(0) А у тебя в ВТ ТоварыНаСкладах они есть?
8 VismuT
 
01.08.23
19:50
(6) Сроки заполнены .Мне нужно вывести тот товар,в котором заполнен срок и остаток <=0 . Но получается как будто <0 //

Вот тоже самое на СКД.
ВЫБРАТЬ
    СрокиГодностиНоменклатуры.Номенклатура,
    СрокиГодностиНоменклатуры.СрокГодности
ПОМЕСТИТЬ ТоварыНаСкладах
ИЗ
    РегистрСведений.СрокиГодностиНоменклатуры КАК СрокиГодностиНоменклатуры
ГДЕ
    СрокиГодностиНоменклатуры.СрокГодности МЕЖДУ &НачалоПериода И &КонецПериода

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

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

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

https://hkar.ru/17QJ4
9 1CBaseV8
 
01.08.23
20:31
|ГДЕ
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) <= &КоличествоОстаток
10 VismuT
 
01.08.23
20:53
(9) Все вышло !Спасибо:)