Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запрос по остаткам

Запрос по остаткам
Я
   progaoff
 
12.11.20 - 14:00
ПОМЕСТИТЬ ВТ_ОстаткиТоваров
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
                &Период,
                Склад В (&МассивСкладов)
                    И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыНаСкладахОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
            ПО ТоварыНаСкладахОстатки.Склад = Склады.Ссылка
                И ТоварыВРезервеНаСкладахОстатки.Склад = Склады.Ссылка
        ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                &Период,
                Склад В (&МассивСкладов)
                    И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладахОстатки
        ПО СпрНоменклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&Период, НЕ ЗаказПоставщику.Склад В (&ДальниеСклады)) КАК ЗаказыПоставщикамОстатки
        ПО СпрНоменклатура.Ссылка = ЗаказыПоставщикамОстатки.Номенклатура

Добрый день, подскажите, есть запрос, пытаюсь соединение по складам сделать, пишет - Поле не найдено "ТоварыВРезервеНаСкладахОстатки.Склад"
Что не так делаю? Заранее благодарен
   ДенисЧ
 
1 - 12.11.20 - 14:05
Я тоже в приведённом запросе этого поля не нашёл...
Рад, что хоть твоя 1с со мной на одной волне...
   lodger
 
2 - 12.11.20 - 14:07
ну смотри.
сперва к Справочник.Номенклатура приделан РегистрНакопления.ТоварыНаСкладах.Остатки
а к ним Справочник.Склады
при чем тут ТоварыВРезервеНаСкладахОстатки.Склад?
   progaoff
 
3 - 12.11.20 - 14:10
(1) ))) Как его связать?
   ДенисЧ
 
4 - 12.11.20 - 14:12
(3) Попробуй вот это видеоруководство
https://www.youtube.com/watch?v=tJi3zi4yVWM
   youalex
 
5 - 12.11.20 - 14:14
И ТоварыВРезервеНаСкладахОстатки.Склад = Склады.Ссылка

у тебя на этот момент еще соединения с РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки нет , и псевдонима ТоварыВРезервеНаСкладахОстатки, соответственно тоже
   progaoff
 
6 - 12.11.20 - 14:45
(5) да это я уже понял.
   progaoff
 
7 - 12.11.20 - 14:50
Теперь бы понять как соединение сделать верно.
   youalex
 
8 - 12.11.20 - 14:54
Для начала нужно понять, зачем тебе это соединение
   progaoff
 
9 - 12.11.20 - 15:16
(8) В разрезе склада увидеть свободный остаток
   youalex
 
10 - 12.11.20 - 15:28
Нулевые остатки тоже нужно видеть?
   progaoff
 
11 - 12.11.20 - 15:35
(10) ага
   progaoff
 
12 - 12.11.20 - 15:45
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК ОстатокНаСкладе,
    ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК РезервПодРозницу,
    ЕСТЬNULL(ЗаказыПоставщикамОстатки.КоличествоОстаток, 0) КАК ЗаказаноПоставщикам,
    Склады.Ссылка КАК Склад
ПОМЕСТИТЬ ВТ_ОстаткиТоваров
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
                &Период,
                Склад В (&МассивСкладов)
                    И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыНаСкладахОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
            ПО ТоварыНаСкладахОстатки.Склад = Склады.Ссылка
                И ТоварыНаСкладахОстатки.Склад = Склады.Ссылка
        ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                &Период,
                Склад В (&МассивСкладов)
                    И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладахОстатки
        ПО СпрНоменклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&Период, НЕ ЗаказПоставщику.Склад В (&ДальниеСклады)) КАК ЗаказыПоставщикамОстатки
        ПО СпрНоменклатура.Ссылка = ЗаказыПоставщикамОстатки.Номенклатура
ГДЕ
    НЕ СпрНоменклатура.ПометкаУдаления
    И НЕ СпрНоменклатура.ЭтоГруппа
    И НЕ СпрНоменклатура.СтатусНеПоставляется
    И СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника)
Вот что было.
   youalex
 
13 - 12.11.20 - 15:50
Тогда тебе надо кросс-джойн номенклатуры со складами, а потом уже к этой матрице Номенклатура/Склад цеплять таблицы остатков
   progaoff
 
14 - 12.11.20 - 16:50
(13) не совсем понял
   Said_We
 
15 - 12.11.20 - 17:05
(13) Нееее....
Сначала надо в подзапрос или ВТ засунуть номенклатуру с фильтрами СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника)
Далее при сборе всех остатков по всем регистрам тоже этот фильтр на номенклатуру использовать.
А потом уже что-то с чем-то связывать. Но вместо трех джоинов можно использовать только один. Сначала остатки объединить и свернуть по номенклатуре.
   youalex
 
16 - 12.11.20 - 17:15
(15) Так ему остатки нужны в разрезе Склад/Номенклатура, как я понял. Иначе из-за чего весь сыр-бор? )  
С фильтрами - да.
В ВТ лучше запихивать не Номенклатуру, а данные таблиц остатков, а к Номенклатура/Склад уже цеплять эти ВТ с остатками
   lodger
 
17 - 12.11.20 - 21:00
(15)
интересно, быстрее
"Сначала остатки объединить и свернуть по Склад/Номенклатура."
или просто приджоинить к таблице остатков таблицу резервов?
например, от запроса мне нужны те и другие цифры отдельно, а заниматься их анализом будем уже в коде.
   Said_We
 
18 - 13.11.20 - 09:43
(17) Конечно отдельно так же как в (0). В чем проблема-то?
   Said_We
 
19 - 13.11.20 - 09:45
(17) Отдельно как в (12). Склад, номенклатура и три поля с разными остатками...
   Said_We
 
20 - 13.11.20 - 10:50
Это как суть описанного (15) в первом приближении - не проверял и писал ручками. Мог что-то "написать" :-)
Не знаю я что там за дальние склады... И почему по резервам нет фильтра "В (&МассивСкладов)". Я не разбирался в логике что необходимо вытащить. Вот как в (12), только переписал.
Получилось примерно так:
-------------------------------------

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура
Поместить ВТ_Номенклатура
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
ГДЕ
    СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника)
    И НЕ СпрНоменклатура.СтатусНеПоставляется
    И НЕ СпрНоменклатура.ЭтоГруппа
    И НЕ СпрНоменклатура.ПометкаУдаления
;

ВЫБРАТЬ
    ВложенныйЗапрос.Склад КАК Склад,
    ВТ_Номенклатура.Номенклатура КАК Номенклатура,
    ЕСТЬNULL(ВложенныйЗапрос.ОстатокНаСкладе, 0) КАК ОстатокНаСкладе,
    ЕСТЬNULL(ВложенныйЗапрос.РезервПодРозницу, 0) КАК РезервПодРозницу,
    ЕСТЬNULL(ВложенныйЗапрос.ЗаказаноПоставщикам, 0) КАК ЗаказаноПоставщикам
ИЗ
    ВТ_Номенклатура КАК ВТ_Номенклатура

    ЛЕВОЕ СОЕДИНЕНИЕ
        (ВложенныйЗапрос.Склад КАК Склад,
        ВложенныйЗапрос.Номенклатура КАК Номенклатура,
        СУММА(ВложенныйЗапрос.КоличествоОстаток) КАК КоличествоОстаток,
        СУММА(ВложенныйЗапрос.РезервПодРозницу) КАК РезервПодРозницу,
        СУММА(ВложенныйЗапрос.ЗаказаноПоставщикам) КАК ЗаказаноПоставщикам
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Склад,
        ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
        0 КАК РезервПодРозницу,
        0 КАК ЗаказаноПоставщикам
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(
                &Период,
                Склад В (&МассивСкладов)
                    И Номенклатура В (ВЫБРАТЬ т.Номенклатура ИЗ ВТ_Номенклатура КАК т)
                    И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыНаСкладахОстатки
ОБЪЕДИНИТЬ ВСЕ

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

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

ВЫБРАТЬ
        ТоварыВРезервеНаСкладах.ЗаказПоставщику.Склад,
        ТоварыВРезервеНаСкладах.Номенклатура КАК Номенклатура,
        0,
        0,
        ТоварыВРезервеНаСкладах.КоличествоОстаток
    ИЗ
        РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                &Период,
                НЕ ЗаказПоставщику.Склад В (&ДальниеСклады)
                    И Номенклатура В (ВЫБРАТЬ т.Номенклатура ИЗ ВТ_Номенклатура КАК т)
                    И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладах
    ) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Склад КАК Склад,
        ВложенныйЗапрос.Номенклатура
    ) КАК ВложенныйЗапрос
    ПО ВТ_Номенклатура.Номенклатура = ВложенныйЗапрос.Номенклатура
   Said_We
 
21 - 13.11.20 - 10:52
Ну да в запросе по резервам лишнее условие: "И НЕ СерияНоменклатуры.БракОписан".
   Said_We
 
22 - 13.11.20 - 10:52
В общем суть нарисовал для (0) далее осталось проверить и может что подправить.
   progaoff
 
23 - 13.11.20 - 10:56
(22) Вот спасибо)
   Said_We
 
24 - 13.11.20 - 11:07
(23) Проверил?
   progaoff
 
25 - 13.11.20 - 11:17
(24) Смотрю.
   progaoff
 
26 - 13.11.20 - 11:19
На скобку матерится, 
СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Склад КАК Склад,
   Ненавижу 1С
 
27 - 13.11.20 - 11:21
конфигурация какая хоть?
   progaoff
 
28 - 13.11.20 - 11:22
ка 1.1
   progaoff
 
29 - 13.11.20 - 11:33
(24) матерится из начально ЛЕВОЕ СОЕДИНЕНИЕ
        (ВложенныйЗапрос.Склад КАК Склад,
   lubitelxml
 
30 - 13.11.20 - 11:52
(29) там "Выбрать" пропущено похоже
 
 Рекламное место пустует
   progaoff
 
31 - 13.11.20 - 11:59
(30) Это я уже понял.
СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Склад КАК Склад,
Дальше сюда матерится на скобку
   Said_We
 
32 - 13.11.20 - 12:01
"ВложенныйЗапрос.Склад КАК Склад," в группировке нет КАК. Замени на "ВложенныйЗапрос.Склад,"
   Said_We
 
33 - 13.11.20 - 12:15
Ещё где-то ругается?
   progaoff
 
34 - 13.11.20 - 12:21
(33) Все, спасибо. Плохо быть по пояс деревянным))
   progaoff
 
35 - 24.11.20 - 16:38
Блин, я конечно понимаю что туплю)) но нужен еще хелб по этой проблеме, дело в том, что запрос не выдает склады где товара нет совсем.
   lubitelxml
 
36 - 24.11.20 - 16:40
(35) сначала выбери запросом все склады, и соедини левым твою результирующую таблицу по полю склад
   progaoff
 
37 - 24.11.20 - 17:39
(36) пытался, не получается( все равно результат без 0
   progaoff
 
38 - 24.11.20 - 18:14
ВЫБРАТЬ
    МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
    ЦеныНоменклатуры.ТипЦен КАК ТипЦен,
    ЦеныНоменклатуры.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_ПоследниеЦены
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
    ЦеныНоменклатуры.ТипЦен = &БазоваяРРЦ
    И ЦеныНоменклатуры.Период <= &Период

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

ИНДЕКСИРОВАТЬ ПО
    Период,
    ТипЦен,
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ_ПоследниеЦены.Период КАК Период,
    ВТ_ПоследниеЦены.ТипЦен КАК ТипЦен,
    ВТ_ПоследниеЦены.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры.Цена КАК Цена
ПОМЕСТИТЬ ВТ_АктуальныеТоварыСЦеной
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследниеЦены КАК ВТ_ПоследниеЦены
        ПО ЦеныНоменклатуры.Период = ВТ_ПоследниеЦены.Период
            И ЦеныНоменклатуры.Номенклатура = ВТ_ПоследниеЦены.Номенклатура
            И ЦеныНоменклатуры.ТипЦен = ВТ_ПоследниеЦены.ТипЦен
ГДЕ
    ЦеныНоменклатуры.Цена <> 0

ИНДЕКСИРОВАТЬ ПО
    Период,
    ТипЦен,
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Склады.Ссылка КАК Склад
ПОМЕСТИТЬ ВТ_Склады
ИЗ
    Справочник.Склады КАК Склады
ГДЕ
    Склады.Ссылка В(&МассивСкладов)
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
ГДЕ
    СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника)
    И НЕ СпрНоменклатура.ЭтоГруппа
    И НЕ СпрНоменклатура.ПометкаУдаления
;

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ_АктуальныеТоварыСЦеной.Номенклатура КАК Номенклатура,
    ВТ_АктуальныеТоварыСЦеной.Цена КАК Цена,
    ВТ.ОстатокНаСкладе КАК ОстатокНаСкладе,
    ВТ.РезервПодРозницу КАК РезервПодРозницу,
    ВТ.ЗаказаноПоставщикам КАК ЗаказаноПоставщикам,
    ВЫБОР
        КОГДА ВТ.ОстатокНаСкладе - ВТ.РезервПодРозницу > 0
            ТОГДА "В наличии"
        КОГДА ВТ.ОстатокНаСкладе - ВТ.РезервПодРозницу <= 0
                И ВТ.ЗаказаноПоставщикам > 0
            ТОГДА "Ожидается"
        ИНАЧЕ "Под заказ"
    КОНЕЦ КАК Статус,
    ВТ_АктуальныеТоварыСЦеной.Номенклатура.Код КАК Код,
    ВТ.ОстатокНаСкладе - ВТ.РезервПодРозницу КАК Количество,
    ВТ_Склады.Склад КАК Склад
ИЗ
    ВТ_АктуальныеТоварыСЦеной КАК ВТ_АктуальныеТоварыСЦеной
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Склады КАК ВТ_Склады
            ПО ВТ.Склад = ВТ_Склады.Склад
        ПО ВТ_АктуальныеТоварыСЦеной.Номенклатура = ВТ.Номенклатура
   Said_We
 
39 - 24.11.20 - 20:53
(38) Склады основная таблица. И к ней уже всё что нужно.....
   progaoff
 
40 - 26.11.20 - 10:50
(39) Да нифффффига не получается, уже который день мучаюсь с этим запросом


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.