|
Запрос по остаткам | ☑ | ||
---|---|---|---|---|
0
progaoff
12.11.20
✎
14:00
|
ПОМЕСТИТЬ ВТ_ОстаткиТоваров
ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Склад В (&МассивСкладов) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады ПО ТоварыНаСкладахОстатки.Склад = Склады.Ссылка И ТоварыВРезервеНаСкладахОстатки.Склад = Склады.Ссылка ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( &Период, Склад В (&МассивСкладов) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладахОстатки ПО СпрНоменклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&Период, НЕ ЗаказПоставщику.Склад В (&ДальниеСклады)) КАК ЗаказыПоставщикамОстатки ПО СпрНоменклатура.Ссылка = ЗаказыПоставщикамОстатки.Номенклатура Добрый день, подскажите, есть запрос, пытаюсь соединение по складам сделать, пишет - Поле не найдено "ТоварыВРезервеНаСкладахОстатки.Склад" Что не так делаю? Заранее благодарен |
|||
1
ДенисЧ
12.11.20
✎
14:05
|
Я тоже в приведённом запросе этого поля не нашёл...
Рад, что хоть твоя 1с со мной на одной волне... |
|||
2
lodger
12.11.20
✎
14:07
|
ну смотри.
сперва к Справочник.Номенклатура приделан РегистрНакопления.ТоварыНаСкладах.Остатки а к ним Справочник.Склады при чем тут ТоварыВРезервеНаСкладахОстатки.Склад? |
|||
3
progaoff
12.11.20
✎
14:10
|
(1) ))) Как его связать?
|
|||
4
ДенисЧ
12.11.20
✎
14:12
|
(3) Попробуй вот это видеоруководство
https://www.youtube.com/watch?v=tJi3zi4yVWM |
|||
5
youalex
12.11.20
✎
14:14
|
И ТоварыВРезервеНаСкладахОстатки.Склад = Склады.Ссылка
у тебя на этот момент еще соединения с РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки нет , и псевдонима ТоварыВРезервеНаСкладахОстатки, соответственно тоже |
|||
6
progaoff
12.11.20
✎
14:45
|
(5) да это я уже понял.
|
|||
7
progaoff
12.11.20
✎
14:50
|
Теперь бы понять как соединение сделать верно.
|
|||
8
youalex
12.11.20
✎
14:54
|
Для начала нужно понять, зачем тебе это соединение
|
|||
9
progaoff
12.11.20
✎
15:16
|
(8) В разрезе склада увидеть свободный остаток
|
|||
10
youalex
12.11.20
✎
15:28
|
Нулевые остатки тоже нужно видеть?
|
|||
11
progaoff
12.11.20
✎
15:35
|
(10) ага
|
|||
12
progaoff
12.11.20
✎
15:45
|
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура, ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК ОстатокНаСкладе, ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК РезервПодРозницу, ЕСТЬNULL(ЗаказыПоставщикамОстатки.КоличествоОстаток, 0) КАК ЗаказаноПоставщикам, Склады.Ссылка КАК Склад ПОМЕСТИТЬ ВТ_ОстаткиТоваров ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Склад В (&МассивСкладов) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады ПО ТоварыНаСкладахОстатки.Склад = Склады.Ссылка И ТоварыНаСкладахОстатки.Склад = Склады.Ссылка ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( &Период, Склад В (&МассивСкладов) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладахОстатки ПО СпрНоменклатура.Ссылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&Период, НЕ ЗаказПоставщику.Склад В (&ДальниеСклады)) КАК ЗаказыПоставщикамОстатки ПО СпрНоменклатура.Ссылка = ЗаказыПоставщикамОстатки.Номенклатура ГДЕ НЕ СпрНоменклатура.ПометкаУдаления И НЕ СпрНоменклатура.ЭтоГруппа И НЕ СпрНоменклатура.СтатусНеПоставляется И СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника) Вот что было. |
|||
13
youalex
12.11.20
✎
15:50
|
Тогда тебе надо кросс-джойн номенклатуры со складами, а потом уже к этой матрице Номенклатура/Склад цеплять таблицы остатков
|
|||
14
progaoff
12.11.20
✎
16:50
|
(13) не совсем понял
|
|||
15
Said_We
12.11.20
✎
17:05
|
(13) Нееее....
Сначала надо в подзапрос или ВТ засунуть номенклатуру с фильтрами СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника) Далее при сборе всех остатков по всем регистрам тоже этот фильтр на номенклатуру использовать. А потом уже что-то с чем-то связывать. Но вместо трех джоинов можно использовать только один. Сначала остатки объединить и свернуть по номенклатуре. |
|||
16
youalex
12.11.20
✎
17:15
|
(15) Так ему остатки нужны в разрезе Склад/Номенклатура, как я понял. Иначе из-за чего весь сыр-бор? )
С фильтрами - да. В ВТ лучше запихивать не Номенклатуру, а данные таблиц остатков, а к Номенклатура/Склад уже цеплять эти ВТ с остатками |
|||
17
lodger
12.11.20
✎
21:00
|
(15)
интересно, быстрее "Сначала остатки объединить и свернуть по Склад/Номенклатура." или просто приджоинить к таблице остатков таблицу резервов? например, от запроса мне нужны те и другие цифры отдельно, а заниматься их анализом будем уже в коде. |
|||
18
Said_We
13.11.20
✎
09:43
|
(17) Конечно отдельно так же как в (0). В чем проблема-то?
|
|||
19
Said_We
13.11.20
✎
09:45
|
(17) Отдельно как в (12). Склад, номенклатура и три поля с разными остатками...
|
|||
20
Said_We
13.11.20
✎
10:50
|
Это как суть описанного (15) в первом приближении - не проверял и писал ручками. Мог что-то "написать" :-)
Не знаю я что там за дальние склады... И почему по резервам нет фильтра "В (&МассивСкладов)". Я не разбирался в логике что необходимо вытащить. Вот как в (12), только переписал. Получилось примерно так: ------------------------------------- ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Номенклатура Поместить ВТ_Номенклатура ИЗ Справочник.Номенклатура КАК СпрНоменклатура ГДЕ СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника) И НЕ СпрНоменклатура.СтатусНеПоставляется И НЕ СпрНоменклатура.ЭтоГруппа И НЕ СпрНоменклатура.ПометкаУдаления ; ВЫБРАТЬ ВложенныйЗапрос.Склад КАК Склад, ВТ_Номенклатура.Номенклатура КАК Номенклатура, ЕСТЬNULL(ВложенныйЗапрос.ОстатокНаСкладе, 0) КАК ОстатокНаСкладе, ЕСТЬNULL(ВложенныйЗапрос.РезервПодРозницу, 0) КАК РезервПодРозницу, ЕСТЬNULL(ВложенныйЗапрос.ЗаказаноПоставщикам, 0) КАК ЗаказаноПоставщикам ИЗ ВТ_Номенклатура КАК ВТ_Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВложенныйЗапрос.Склад КАК Склад, ВложенныйЗапрос.Номенклатура КАК Номенклатура, СУММА(ВложенныйЗапрос.КоличествоОстаток) КАК КоличествоОстаток, СУММА(ВложенныйЗапрос.РезервПодРозницу) КАК РезервПодРозницу, СУММА(ВложенныйЗапрос.ЗаказаноПоставщикам) КАК ЗаказаноПоставщикам ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, 0 КАК РезервПодРозницу, 0 КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Склад В (&МассивСкладов) И Номенклатура В (ВЫБРАТЬ т.Номенклатура ИЗ ВТ_Номенклатура КАК т) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыВРезервеНаСкладах.Склад, ТоварыВРезервеНаСкладах.Номенклатура КАК Номенклатура, 0, ТоварыВРезервеНаСкладах.КоличествоОстаток, 0 ИЗ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( &Период, Склад В (&МассивСкладов) И Номенклатура В (ВЫБРАТЬ т.Номенклатура ИЗ ВТ_Номенклатура КАК т) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладах ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыВРезервеНаСкладах.ЗаказПоставщику.Склад, ТоварыВРезервеНаСкладах.Номенклатура КАК Номенклатура, 0, 0, ТоварыВРезервеНаСкладах.КоличествоОстаток ИЗ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( &Период, НЕ ЗаказПоставщику.Склад В (&ДальниеСклады) И Номенклатура В (ВЫБРАТЬ т.Номенклатура ИЗ ВТ_Номенклатура КАК т) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладах ) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Склад КАК Склад, ВложенныйЗапрос.Номенклатура ) КАК ВложенныйЗапрос ПО ВТ_Номенклатура.Номенклатура = ВложенныйЗапрос.Номенклатура |
|||
21
Said_We
13.11.20
✎
10:52
|
Ну да в запросе по резервам лишнее условие: "И НЕ СерияНоменклатуры.БракОписан".
|
|||
22
Said_We
13.11.20
✎
10:52
|
В общем суть нарисовал для (0) далее осталось проверить и может что подправить.
|
|||
23
progaoff
13.11.20
✎
10:56
|
(22) Вот спасибо)
|
|||
24
Said_We
13.11.20
✎
11:07
|
(23) Проверил?
|
|||
25
progaoff
13.11.20
✎
11:17
|
(24) Смотрю.
|
|||
26
progaoff
13.11.20
✎
11:19
|
На скобку матерится,
СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Склад КАК Склад, |
|||
27
Ненавижу 1С
гуру
13.11.20
✎
11:21
|
конфигурация какая хоть?
|
|||
28
progaoff
13.11.20
✎
11:22
|
ка 1.1
|
|||
29
progaoff
13.11.20
✎
11:33
|
(24) матерится из начально ЛЕВОЕ СОЕДИНЕНИЕ
(ВложенныйЗапрос.Склад КАК Склад, |
|||
30
lubitelxml
13.11.20
✎
11:52
|
(29) там "Выбрать" пропущено похоже
|
|||
31
progaoff
13.11.20
✎
11:59
|
(30) Это я уже понял.
СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Склад КАК Склад, Дальше сюда матерится на скобку |
|||
32
Said_We
13.11.20
✎
12:01
|
"ВложенныйЗапрос.Склад КАК Склад," в группировке нет КАК. Замени на "ВложенныйЗапрос.Склад,"
|
|||
33
Said_We
13.11.20
✎
12:15
|
Ещё где-то ругается?
|
|||
34
progaoff
13.11.20
✎
12:21
|
(33) Все, спасибо. Плохо быть по пояс деревянным))
|
|||
35
progaoff
24.11.20
✎
16:38
|
Блин, я конечно понимаю что туплю)) но нужен еще хелб по этой проблеме, дело в том, что запрос не выдает склады где товара нет совсем.
|
|||
36
lubitelxml
24.11.20
✎
16:40
|
(35) сначала выбери запросом все склады, и соедини левым твою результирующую таблицу по полю склад
|
|||
37
progaoff
24.11.20
✎
17:39
|
(36) пытался, не получается( все равно результат без 0
|
|||
38
progaoff
24.11.20
✎
18:14
|
ВЫБРАТЬ
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период, ЦеныНоменклатуры.ТипЦен КАК ТипЦен, ЦеныНоменклатуры.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ_ПоследниеЦены ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ГДЕ ЦеныНоменклатуры.ТипЦен = &БазоваяРРЦ И ЦеныНоменклатуры.Период <= &Период СГРУППИРОВАТЬ ПО ЦеныНоменклатуры.ТипЦен, ЦеныНоменклатуры.Номенклатура ИНДЕКСИРОВАТЬ ПО Период, ТипЦен, Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеЦены.Период КАК Период, ВТ_ПоследниеЦены.ТипЦен КАК ТипЦен, ВТ_ПоследниеЦены.Номенклатура КАК Номенклатура, ЦеныНоменклатуры.Цена КАК Цена ПОМЕСТИТЬ ВТ_АктуальныеТоварыСЦеной ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследниеЦены КАК ВТ_ПоследниеЦены ПО ЦеныНоменклатуры.Период = ВТ_ПоследниеЦены.Период И ЦеныНоменклатуры.Номенклатура = ВТ_ПоследниеЦены.Номенклатура И ЦеныНоменклатуры.ТипЦен = ВТ_ПоследниеЦены.ТипЦен ГДЕ ЦеныНоменклатуры.Цена <> 0 ИНДЕКСИРОВАТЬ ПО Период, ТипЦен, Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Склады.Ссылка КАК Склад ПОМЕСТИТЬ ВТ_Склады ИЗ Справочник.Склады КАК Склады ГДЕ Склады.Ссылка В(&МассивСкладов) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ ВТ_Номенклатура ИЗ Справочник.Номенклатура КАК СпрНоменклатура ГДЕ СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаБытоваяТехника) И НЕ СпрНоменклатура.ЭтоГруппа И НЕ СпрНоменклатура.ПометкаУдаления ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Номенклатура.Номенклатура КАК Номенклатура, ЕСТЬNULL(ВложенныйЗапрос.ОстатокНаСкладе, 0) КАК ОстатокНаСкладе, ЕСТЬNULL(ВложенныйЗапрос.РезервПодРозницу, 0) КАК РезервПодРозницу, ЕСТЬNULL(ВложенныйЗапрос.ЗаказаноПоставщикам, 0) КАК ЗаказаноПоставщикам, ВложенныйЗапрос.Склад КАК Склад ПОМЕСТИТЬ ВТ ИЗ ВТ_Номенклатура КАК ВТ_Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.Склад КАК Склад, ВложенныйЗапрос.Номенклатура КАК Номенклатура, СУММА(ВложенныйЗапрос.КоличествоОстаток) КАК ОстатокНаСкладе, СУММА(ВложенныйЗапрос.РезервПодРозницу) КАК РезервПодРозницу, СУММА(ВложенныйЗапрос.ЗаказаноПоставщикам) КАК ЗаказаноПоставщикам ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, 0 КАК РезервПодРозницу, 0 КАК ЗаказаноПоставщикам ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Склад В (ВЫБРАТЬ д.Склад ИЗ ВТ_Склады КАК д) И Номенклатура В (ВЫБРАТЬ т.Номенклатура ИЗ ВТ_Номенклатура КАК т) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыВРезервеНаСкладах.Склад, ТоварыВРезервеНаСкладах.Номенклатура, 0, ТоварыВРезервеНаСкладах.КоличествоОстаток, 0 ИЗ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( &Период, Склад В (ВЫБРАТЬ д.Склад ИЗ ВТ_Склады КАК д) И Номенклатура В (ВЫБРАТЬ т.Номенклатура ИЗ ВТ_Номенклатура КАК т) И НЕ СерияНоменклатуры.БракОписан) КАК ТоварыВРезервеНаСкладах) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Склад, ВложенныйЗапрос.Номенклатура) КАК ВложенныйЗапрос ПО ВТ_Номенклатура.Номенклатура = ВложенныйЗапрос.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_АктуальныеТоварыСЦеной.Номенклатура КАК Номенклатура, ВТ_АктуальныеТоварыСЦеной.Цена КАК Цена, ВТ.ОстатокНаСкладе КАК ОстатокНаСкладе, ВТ.РезервПодРозницу КАК РезервПодРозницу, ВТ.ЗаказаноПоставщикам КАК ЗаказаноПоставщикам, ВЫБОР КОГДА ВТ.ОстатокНаСкладе - ВТ.РезервПодРозницу > 0 ТОГДА "В наличии" КОГДА ВТ.ОстатокНаСкладе - ВТ.РезервПодРозницу <= 0 И ВТ.ЗаказаноПоставщикам > 0 ТОГДА "Ожидается" ИНАЧЕ "Под заказ" КОНЕЦ КАК Статус, ВТ_АктуальныеТоварыСЦеной.Номенклатура.Код КАК Код, ВТ.ОстатокНаСкладе - ВТ.РезервПодРозницу КАК Количество, ВТ_Склады.Склад КАК Склад ИЗ ВТ_АктуальныеТоварыСЦеной КАК ВТ_АктуальныеТоварыСЦеной ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Склады КАК ВТ_Склады ПО ВТ.Склад = ВТ_Склады.Склад ПО ВТ_АктуальныеТоварыСЦеной.Номенклатура = ВТ.Номенклатура |
|||
39
Said_We
24.11.20
✎
20:53
|
(38) Склады основная таблица. И к ней уже всё что нужно.....
|
|||
40
progaoff
26.11.20
✎
10:50
|
(39) Да нифффффига не получается, уже который день мучаюсь с этим запросом
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |