Имя: Пароль:
1C
1С v8
При обращении к регистру накопления ТоварыНаСкладахОстатки выдаёт только положительные зна
0 taimens
 
21.11.17
10:54
Доброго дня уважаемые форумчане. 1с 8.3 УТ 11.2 Необходимо было добавить колонку остатков в форме списка номенклатуры, остатки добавляет, но не могу понять почему при обращении к регистру накопления ТоварыНаСкладахОстатки выдаёт только положительные значения, остаётся только номенклатура у которой есть остаток, остальная недоступна.Текст запроса:
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.Артикул КАК Артикул,
    СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
    СпрНоменклатура.Родитель,
    ВЫБОР
        КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
            ТОГДА 4 + ВЫБОР
                    КОГДА СпрНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                        ТОГДА 0
                    ИНАЧЕ 2
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА СпрНоменклатура.ПометкаУдаления
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ + ВЫБОР
                КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                    ТОГДА 0
                ИНАЧЕ 2
            КОНЕЦ
    КОНЕЦ КАК ИндексКартинки,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Ленинский,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиДаниловская.ВНаличииОстаток, 0) КАК Даниловская,
    ЕСТЬNULL(ТоварыНаСкладахЛенинский30.ВНаличииОстаток, 0) КАК Ленинский30,
    ЦеныНоменклатурыСрезПоследних.Цена КАК РознUSD
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстаткиДаниловская
        ПО (ТоварыНаСкладахОстаткиДаниловская.Номенклатура = СпрНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахЛенинский30
        ПО (ТоварыНаСкладахЛенинский30.Номенклатура = СпрНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа
    И ТоварыНаСкладахОстатки.Склад.Наименование = "1. Склад  (Ленинский)"
    И ТоварыНаСкладахОстаткиДаниловская.Склад.Наименование = "2, Склад (Даниловская)"
    И ТоварыНаСкладахЛенинский30.Склад.Наименование = "3. Розничный магазин Л-30"
    И ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = "Розничные USD"
{ГДЕ
    (СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры))}


Предполагаю что-то с соединением таблиц, но не могу понять что.
Намекните пожалуйста в чём проблема.
1 Timon1405
 
21.11.17
11:00
(0) Нужно перенести условия из где в соединение примерно так
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахЛенинский30
        ПО (ТоварыНаСкладахЛенинский30.Номенклатура = СпрНоменклатура.Ссылка)
И ТоварыНаСкладахЛенинский30.Склад.Наименование = "3. Розничный магазин Л-30"

При вашем запросе левое соединение превращается во внутреннее
остальной ужс в запросе комментировать не буду
2 НЕА123
 
21.11.17
11:05
(0)
что-то даже показывает при

   И ТоварыНаСкладахОстатки.Склад.Наименование = "1. Склад  (Ленинский)"
    И ТоварыНаСкладахОстаткиДаниловская.Склад.Наименование = "2, Склад (Даниловская)"
    И ТоварыНаСкладахЛенинский30.Склад.Наименование = "3. Розничный магазин Л-30"

?
3 taimens
 
21.11.17
11:12
Не кидайтесь особо тапками.Я не силён в этом. просто попытался разобраться сам на сколько это возможно. Запрос создавал конструктором, поэтому имею что имею.
Остатки показывает по трём складам, но только где есть остаток, нулевые не показывет.
4 Buster007
 
21.11.17
11:26
(3) у нулевых, например,
   И ТоварыНаСкладахОстатки.Склад.Наименование = "1. Склад  (Ленинский)"
это условие не выполняется
5 Михаил Козлов
 
21.11.17
11:28
(3) См. (1)
6 aka AMIGO
 
21.11.17
11:31
7 taimens
 
21.11.17
11:34
Timon1405 спасибо за наводку, разобрался где ошибка, не правильно задавал условия. Всё получилось, код поправил.
8 taimens
 
21.11.17
12:53
В связи с добавлением остатков, почему пропала возможность заходить в карточку товара ?
9 Timon1405
 
21.11.17
14:30
(8) скорее всего в динамическом списке слетела основная таблица
10 taimens
 
21.11.17
15:45
Timon1405 второй раз выручаете меня, респект и уважение. Спасибо
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.