Здравствуйте, уже почти неделю бьюсь над задачей по внешнему отчету. Подскажите, может, я что-то упускаю из виду?
Задача: Нужно получить продажи по товарам за прошлый и позапрошлый года, а также получить остатки на складах по этим товарам. Вся сложность в том, что товар может храниться на том складе, с которого не продавался, из-за этого отчет формируется не совсем верно.
Логика запроса у меня следующая:
1. Получаю всю номенклатуру складов из справочника:
2. Получаю продажи по годам в две разных таблицы:
3. Получаю остатки на складах:
4. Объединяю все ВТ в единую таблицу. Привязывая левым соединением ко всем складам данные из таблицы по реализации товаров и к этим данным левым соединением привязываю данные по остаткам, связываю по номенклатуре.
Вся проблема в том, что когда я объединяю левое соединение по ИСТИНА, тогда мне выводит все склады из установленного отбора, но данные по количеству и остаткам пишет напротив каждого из складов, хотя по идее должен только напротив одного писать (с какого склада и произошла реализация), а остатки и подавно у каждого склада должны быть свои.
Если же я соединяю не по ИСТИНА, а по складам, которые есть в таблицах продаж ( ), то он выдает правильные данные, но из списка складов остаются только те, что участвовали в продажах. А тот склад, на котором действительно есть остатки, указывается сверху основной таблицы с пустым значением. Все остатки указываются для того склада, через который производилась продажа.
Подскажите, пожалуйста, как сделать так, чтобы склады выводились все и данные указывались верно для каждого из них?
Задача: Нужно получить продажи по товарам за прошлый и позапрошлый года, а также получить остатки на складах по этим товарам. Вся сложность в том, что товар может храниться на том складе, с которого не продавался, из-за этого отчет формируется не совсем верно.
Логика запроса у меня следующая:
1. Получаю всю номенклатуру складов из справочника:
ВЫБРАТЬ
Склады.Ссылка КАК Склады
ПОМЕСТИТЬ ВТ3
ИЗ
Справочник.Склады КАК Склады
;
2. Получаю продажи по годам в две разных таблицы:
ВЫБРАТЬ
ПродажиПрошлый.Номенклатура КАК Номенклатура,
ПродажиПрошлый.ДокументПродажи.Склад КАК Склад,
СУММА(ПродажиПрошлый.КоличествоОборот) КАК Количество
ПОМЕСТИТЬ ВТ1
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -1), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -1), , ) КАК ПродажиПрошлый
ЛЕВОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
ПО ПродажиПрошлый.ДокументПродажи.Склад = ВТ3.Склады
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
СГРУППИРОВАТЬ ПО
ПродажиПрошлый.ДокументПродажи.Склад,
ПродажиПрошлый.Номенклатура
;
ПоказатьВЫБРАТЬ
ПродажиПозапрошлый.Номенклатура КАК НоменклатураПред,
ПродажиПозапрошлый.ДокументПродажи.Склад КАК СкладПред,
СУММА(ПродажиПозапрошлый.КоличествоОборот) КАК КоличествоПред
ПОМЕСТИТЬ ВТ2
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -2), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -2), , ) КАК ПродажиПозапрошлый
ЛЕВОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
ПО ПродажиПозапрошлый.ДокументПродажи.Склад = ВТ3.Склады
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПозапрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
СГРУППИРОВАТЬ ПО
ПродажиПозапрошлый.ДокументПродажи.Склад,
ПродажиПозапрошлый.Номенклатура
;
Показать3. Получаю остатки на складах:
ВЫБРАТЬ
Остатки.КоличествоКонечныйОстаток КАК Остатки,
Остатки.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ4
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаОстатка, , , , ) КАК Остатки
;
4. Объединяю все ВТ в единую таблицу. Привязывая левым соединением ко всем складам данные из таблицы по реализации товаров и к этим данным левым соединением привязываю данные по остаткам, связываю по номенклатуре.
ВЫБРАТЬ
ЕСТЬNULL(ВТ1.Номенклатура, ВТ2.НоменклатураПред) КАК Номенклатура,
ВТ3.Склады КАК Склады,
ЕСТЬNULL(ВТ1.Количество, 0) КАК Количество,
ЕСТЬNULL(ВТ2.КоличествоПред, 0) КАК КоличествоПред,
ЕСТЬNULL(ВТ4.Остатки, 0) КАК Остатки
ИЗ
ВТ3 КАК ВТ3
ЛЕВОЕ СОЕДИНЕНИЕ ВТ1 КАК ВТ1
ПОЛНОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
ПО ВТ1.Номенклатура = ВТ2.НоменклатураПред
И ВТ1.Склад = ВТ2.СкладПред
ЛЕВОЕ СОЕДИНЕНИЕ ВТ4 КАК ВТ4
ПО (ВТ1.Номенклатура = ВТ4.Номенклатура
ИЛИ ВТ2.НоменклатураПред = ВТ4.Номенклатура)
ПО (ИСТИНА)
ПоказатьВся проблема в том, что когда я объединяю левое соединение по ИСТИНА, тогда мне выводит все склады из установленного отбора, но данные по количеству и остаткам пишет напротив каждого из складов, хотя по идее должен только напротив одного писать (с какого склада и произошла реализация), а остатки и подавно у каждого склада должны быть свои.
Если же я соединяю не по ИСТИНА, а по складам, которые есть в таблицах продаж (
ВТ3.Склады = ВТ1.Склад ИЛИ ВТ3.Склады = ВТ2.Склад
Подскажите, пожалуйста, как сделать так, чтобы склады выводились все и данные указывались верно для каждого из них?
По теме из базы знаний
Найденные решения
(10)
Решается как минимум 2 способами:
Либо сделать
либо в результирующем запросе:
(10)
Потому что
а должно быть
Именно, нужны остатки только той номенклатуры, что участвовала ранее в продажах
Решается как минимум 2 способами:
Либо сделать
ВЫБРАТЬ
ВТ4.Номенклатура,
ВТ4.Склад,
0 КАК ПродажиПрошлыйГод,
0 КАК ПродажиПозапрошлыйГод,
ВТ4.Остатки КАК Остаток
ПОМЕСТИТЬ ВТПродажиОстатки
ИЗ
ВТ4 КАК ВТ4
ГДЕ
ВТ4.Номенклатура В (Выбрать Т.Номенклатура ИЗ ВТ1 КАК Т ОБЪЕДИНИТЬ ВЫБРАТЬ Т.Номенклатура ИЗ ВТ2 КАК Т)
Показатьлибо в результирующем запросе:
Выбрать
Номенклатура,
Склад,
Сумма(ПродажиПрошлыйГод) Как ПродажиПрошлыйГод,
Сумма(ПродажиПозапрошлыйГод) Как ПродажиПозапрошлыйГод,
Сумма(Остаток) как Остаток
Из
ВТПродажиОстатки
СГРУППИРОВАТЬ ПО
Номенклатура,
Склад
ИМЕЮЩИЕ
Сумма(ПродажиПрошлыйГод) <> 0
ИЛИ Сумма(ПродажиПозапрошлыйГод) <> 0
Показать(10)
Да, я заметил, что эти колонки суммируются и выводятся в одной, только не могу разобраться - почему так
Потому что
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
......
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ1.Номенклатура,
ВТ1.Склад,
ВТ1.Количество,
......
ИЗ
ВТ1 КАК ВТ1
Показатьа должно быть
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
0
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ1.Номенклатура,
ВТ1.Склад,
0,
ВТ1.Количество,
......
ИЗ
ВТ1 КАК ВТ1
Показать
(8)
По такой номенклатуре не нужны остатки или что?
У вас продажи за разные годы выводятся в одну колонку:
Осталось разобраться только с тем, чтобы убрать те позиции номенклатуры, где продаж не было вовсе
По такой номенклатуре не нужны остатки или что?
У вас продажи за разные годы выводятся в одну колонку:
.....
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
0,
0
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ1.Номенклатура,
ВТ1.Склад,
ВТ1.Количество,
0,
0
ИЗ
ВТ1 КАК ВТ1
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)
А какие таблицы стоит объединить? Не до конца понимаю, как работает объединение
UPD: Попробовал сделать через объединение ВТ1 и ВТ2, он выводит все тоже самое. Опять пишет количество продаж у тех складов, с которых продажа не производилась. Если же я пытаюсь связать в итоговой таблице ВТ1 (из ВТ1+ВТ2) с ВТ4 по складам, то начинает считать всю сумму полностью. Тех же остатков показывает 114к, причем у каждой позиции номенклатуры.
Объединение таблиц
А какие таблицы стоит объединить? Не до конца понимаю, как работает объединение
UPD: Попробовал сделать через объединение ВТ1 и ВТ2, он выводит все тоже самое. Опять пишет количество продаж у тех складов, с которых продажа не производилась. Если же я пытаюсь связать в итоговой таблице ВТ1 (из ВТ1+ВТ2) с ВТ4 по складам, то начинает считать всю сумму полностью. Тех же остатков показывает 114к, причем у каждой позиции номенклатуры.
(5)зависит от того, в каком виде нужен результат запроса.
Объединять, ИМХО, нужно ВТ4 с ВТ2 и ВТ3:
Объединять, ИМХО, нужно ВТ4 с ВТ2 и ВТ3:
ВЫБРАТЬ
Номенклатура,
Склад,
0 как продажиПрошлыйГод,
0 как продажиПозапрошлыйГод,
Остатки Как Остаток
Поместить ВТПродажиОстатки
Из
ВТ4
ОБЪЕДИНИТЬ ВСЕ
Выбрать
Номенклатура,
Склад,
Количество,
0,
0
ИЗ
ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Номенклатура,
Склад,
0,
КоличествоПред,
0
ИЗ
ВТ3
;
Выбрать
Номенклатура,
Склад,
Сумма(ПродажиПрошлыйГод) Как ПродажиПрошлыйГод,
Сумма(ПродажиПозапрошлыйГод) Как ПродажиПозапрошлыйГод,
Сумма(Остаток) как Остаток
Из
ВТПродажиОстатки
СГРУППИРОВАТЬ ПО
Номенклатура,
Склад
Показать
(6) От таблицы складов я избавился, попробовал вставить ваш код в программу. Подправил ошибки, на которую ругался 1С. Почему-то не дает запустить, пишет, что не найдено поле "номенклатура", хотя везде она вроде указана..
На выходе я хочу получить в столбце номенклатуру с иерархией, внутри каждой позиции номенклатуры склад. В соседних столбцах информация о количестве продаж за позапрошлый год, в следующем - за прошлый и в третьем остатки на каждом складе у каждой номенклатуры
На выходе я хочу получить в столбце номенклатуру с иерархией, внутри каждой позиции номенклатуры склад. В соседних столбцах информация о количестве продаж за позапрошлый год, в следующем - за прошлый и в третьем остатки на каждом складе у каждой номенклатуры
ВЫБРАТЬ
ПродажиПрошлый.Номенклатура КАК Номенклатура,
ПродажиПрошлый.ДокументПродажи.Склад КАК Склад,
ПродажиПрошлый.КоличествоОборот КАК Количество,
ПродажиПрошлый.ДокументПродажи.Ссылка КАК ПродажиПрошлыйГод
ПОМЕСТИТЬ ВТ1
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -1), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -1), , ) КАК ПродажиПрошлый
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПродажиПозапрошлый.Номенклатура,
ПродажиПозапрошлый.ДокументПродажи.Склад КАК Склад,
ПродажиПозапрошлый.КоличествоОборот КАК Количество,
ПродажиПозапрошлый.ДокументПродажи.Ссылка
ПОМЕСТИТЬ ВТ2
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -2), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -2), , ) КАК ПродажиПозапрошлый
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПозапрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Остатки.Номенклатура КАК Номенклатура,
Остатки.Склад КАК Склад,
СУММА(Остатки.КоличествоОстаток) КАК Остатки
ПОМЕСТИТЬ ВТ4
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатка, ) КАК Остатки
СГРУППИРОВАТЬ ПО
Остатки.Склад,
Остатки.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ4.Номенклатура,
ВТ4.Склад,
0 КАК ПродажиПрошлыйГод,
0 КАК ПродажиПозапрошлыйГод,
ВТ4.Остатки КАК Остаток
ПОМЕСТИТЬ ВТПродажиОстатки
ИЗ
ВТ4 КАК ВТ4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
0,
0
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТПродажиОстатки.Номенклатура,
ВТПродажиОстатки.Склад,
ВТПродажиОстатки.ПродажиПрошлыйГод,
ВТПродажиОстатки.ПродажиПозапрошлыйГод,
ВТПродажиОстатки.Остаток
ИЗ
ВТПродажиОстатки КАК ВТПродажиОстатки
Показать
(7) Запрос подправил, дело было во временной таблице в итоговых объединениях, стало показывать остатки на нужных складах, даже один год продаж вывело верно. Осталось разобраться только с тем, чтобы убрать те позиции номенклатуры, где продаж не было вовсе. И вывести продажи за второй год. Если есть чем кому подсказать по этим моментам, то вот код:
ВЫБРАТЬ
ПродажиПрошлый.Номенклатура КАК Номенклатура,
ПродажиПрошлый.ДокументПродажи.Склад КАК Склад,
ПродажиПрошлый.КоличествоОборот КАК Количество,
ПродажиПрошлый.ДокументПродажи.Ссылка КАК ПродажиПрошлыйГод
ПОМЕСТИТЬ ВТ1
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -1), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -1), , ) КАК ПродажиПрошлый
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПродажиПозапрошлый.Номенклатура,
ПродажиПозапрошлый.ДокументПродажи.Склад КАК Склад,
ПродажиПозапрошлый.КоличествоОборот КАК Количество,
ПродажиПозапрошлый.ДокументПродажи.Ссылка
ПОМЕСТИТЬ ВТ2
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -2), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -2), , ) КАК ПродажиПозапрошлый
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПозапрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Остатки.Номенклатура КАК Номенклатура,
Остатки.Склад КАК Склад,
СУММА(Остатки.КоличествоОстаток) КАК Остатки
ПОМЕСТИТЬ ВТ4
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатка, ) КАК Остатки
СГРУППИРОВАТЬ ПО
Остатки.Склад,
Остатки.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ4.Номенклатура КАК Номенклатура,
ВТ4.Склад КАК Склад,
0 КАК ПродажиПрошлыйГод,
0 КАК ПродажиПозапрошлыйГод,
ВТ4.Остатки КАК Остаток
ИЗ
ВТ4 КАК ВТ4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
0,
0
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ1.Номенклатура,
ВТ1.Склад,
ВТ1.Количество,
0,
0
ИЗ
ВТ1 КАК ВТ1
Показать
(8)
По такой номенклатуре не нужны остатки или что?
У вас продажи за разные годы выводятся в одну колонку:
Осталось разобраться только с тем, чтобы убрать те позиции номенклатуры, где продаж не было вовсе
По такой номенклатуре не нужны остатки или что?
У вас продажи за разные годы выводятся в одну колонку:
.....
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
0,
0
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ1.Номенклатура,
ВТ1.Склад,
ВТ1.Количество,
0,
0
ИЗ
ВТ1 КАК ВТ1
Показать
(10)
Решается как минимум 2 способами:
Либо сделать
либо в результирующем запросе:
(10)
Потому что
а должно быть
Именно, нужны остатки только той номенклатуры, что участвовала ранее в продажах
Решается как минимум 2 способами:
Либо сделать
ВЫБРАТЬ
ВТ4.Номенклатура,
ВТ4.Склад,
0 КАК ПродажиПрошлыйГод,
0 КАК ПродажиПозапрошлыйГод,
ВТ4.Остатки КАК Остаток
ПОМЕСТИТЬ ВТПродажиОстатки
ИЗ
ВТ4 КАК ВТ4
ГДЕ
ВТ4.Номенклатура В (Выбрать Т.Номенклатура ИЗ ВТ1 КАК Т ОБЪЕДИНИТЬ ВЫБРАТЬ Т.Номенклатура ИЗ ВТ2 КАК Т)
Показатьлибо в результирующем запросе:
Выбрать
Номенклатура,
Склад,
Сумма(ПродажиПрошлыйГод) Как ПродажиПрошлыйГод,
Сумма(ПродажиПозапрошлыйГод) Как ПродажиПозапрошлыйГод,
Сумма(Остаток) как Остаток
Из
ВТПродажиОстатки
СГРУППИРОВАТЬ ПО
Номенклатура,
Склад
ИМЕЮЩИЕ
Сумма(ПродажиПрошлыйГод) <> 0
ИЛИ Сумма(ПродажиПозапрошлыйГод) <> 0
Показать(10)
Да, я заметил, что эти колонки суммируются и выводятся в одной, только не могу разобраться - почему так
Потому что
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
......
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ1.Номенклатура,
ВТ1.Склад,
ВТ1.Количество,
......
ИЗ
ВТ1 КАК ВТ1
Показатьа должно быть
ВЫБРАТЬ
ВТ2.Номенклатура,
ВТ2.Склад,
ВТ2.Количество,
0
ИЗ
ВТ2 КАК ВТ2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ1.Номенклатура,
ВТ1.Склад,
0,
ВТ1.Количество,
......
ИЗ
ВТ1 КАК ВТ1
Показать
Добавил условие для соединения итоговой таблицы
Теперь выводит все склады, по которым были продажи и на которых есть остатки. Остатки показывает верно по складам, но почему-то суммирует эти остатки и выводит для того склада, с которого была осуществлена продажа
(ВТ3.Склады = ВТ1.Склад
ИЛИ ВТ3.Склады = ВТ2.СкладПред
ИЛИ ВТ3.Склады = ВТ4.Склад)
Теперь выводит все склады, по которым были продажи и на которых есть остатки. Остатки показывает верно по складам, но почему-то суммирует эти остатки и выводит для того склада, с которого была осуществлена продажа
Избавиться от этой аномалии получилось при помощи удаления таблицы со всеми складами и привязки напрямую таблиц продаж к таблице остатков. Теперь проблема в том, что у одного склада нет остатков по номенклатуре, но с него осуществлялись продажи. А он не выводится в отчете из-за этого, поэтому продажи указываются неверно - напротив складов, с которого по факту не продавалось
ВЫБРАТЬ
ПродажиПрошлый.Номенклатура КАК Номенклатура,
ПродажиПрошлый.ДокументПродажи.Склад КАК Склад,
СУММА(ПродажиПрошлый.КоличествоОборот) КАК Количество,
ПродажиПрошлый.ДокументПродажи.Ссылка КАК ПродажиПрошлыйГод
ПОМЕСТИТЬ ВТ1
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -1), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -1), , ) КАК ПродажиПрошлый
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
СГРУППИРОВАТЬ ПО
ПродажиПрошлый.ДокументПродажи.Склад,
ПродажиПрошлый.ДокументПродажи.Ссылка,
ПродажиПрошлый.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПродажиПозапрошлый.Номенклатура КАК НоменклатураПред,
ПродажиПозапрошлый.ДокументПродажи.Склад КАК СкладПред,
СУММА(ПродажиПозапрошлый.КоличествоОборот) КАК КоличествоПред,
ПродажиПозапрошлый.ДокументПродажи.Ссылка КАК ПродажиПозапрошлыйГод
ПОМЕСТИТЬ ВТ2
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчетаНач, ГОД, -2), ДОБАВИТЬКДАТЕ(&ДатаОтчетаКон, ГОД, -2), , ) КАК ПродажиПозапрошлый
ГДЕ
ТИПЗНАЧЕНИЯ(ПродажиПозапрошлый.ДокументПродажи.Ссылка) = ТИП(Документ.РеализацияТоваровУслуг)
СГРУППИРОВАТЬ ПО
ПродажиПозапрошлый.ДокументПродажи.Склад,
ПродажиПозапрошлый.ДокументПродажи.Ссылка,
ПродажиПозапрошлый.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СУММА(Остатки.КоличествоОстаток) КАК Остатки,
Остатки.Номенклатура КАК Номенклатура,
Остатки.Склад КАК Склад
ПОМЕСТИТЬ ВТ4
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатка, ) КАК Остатки
СГРУППИРОВАТЬ ПО
Остатки.Склад,
Остатки.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЕСТЬNULL(ВТ4.Склад, ЕСТЬNULL(ВТ1.Склад, ВТ2.СкладПред)) КАК Склады,
ВТ1.ПродажиПрошлыйГод КАК ПродажиПрошлыйГод,
ВТ2.ПродажиПозапрошлыйГод КАК ПродажиПозапрошлыйГод,
ЕСТЬNULL(ВТ1.Номенклатура, ВТ2.НоменклатураПред) КАК Номенклатура,
ЕСТЬNULL(ВТ1.Количество, 0) КАК Количество,
ЕСТЬNULL(ВТ2.КоличествоПред, 0) КАК КоличествоПред,
ЕСТЬNULL(ВТ4.Остатки, 0) КАК Остатки
ИЗ
ВТ4 КАК ВТ4
ЛЕВОЕ СОЕДИНЕНИЕ ВТ1 КАК ВТ1
ПОЛНОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
ПО ВТ1.Номенклатура = ВТ2.НоменклатураПред
И ВТ1.Склад = ВТ2.СкладПред
ПО ВТ4.Номенклатура = ВТ1.Номенклатура или ВТ4.Номенклатура = ВТ2.НоменклатураПред
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот