Код
ВЫБРАТЬ
РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
РасходнаяНакладнаяСписокНоменклатуры.Склад КАК Склад,
СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
ПОМЕСТИТЬ ТабСписания
ИЗ
Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
ГДЕ
РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
РасходнаяНакладнаяСписокНоменклатуры.Склад
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Склад
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабСписания.Номенклатура КАК Номенклатура,
СУММА(ТабСписания.Количество) КАК Количество,
СУММА(ТабСписания.Сумма) КАК Сумма
ПОМЕСТИТЬ ТабСписанияБезПартий
ИЗ
ТабСписания КАК ТабСписания
СГРУППИРОВАТЬ ПО
ТабСписания.Номенклатура
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
ОстаткиНоменклатурыОстатки.Склад КАК Склад,
ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток
ПОМЕСТИТЬ ОстаткиПоСкладм
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.Остатки(
&МоментВремени,
Номенклатура В
(ВЫБРАТЬ
ТабСписания.Номенклатура
ИЗ
ТабСписания КАК ТабСписания)) КАК ОстаткиНоменклатурыОстатки
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Склад
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабСписания.Номенклатура КАК Номенклатура,
ТабСписания.Склад КАК Склад,
ВЫБОР
КОГДА ТабСписания.Количество >= ОстаткиПоСкладм.КоличествоОстаток
ТОГДА ОстаткиПоСкладм.КоличествоОстаток
ИНАЧЕ ТабСписания.Количество
КОНЕЦ КАК Количество,
ВЫБОР
КОГДА ТабСписания.Количество >= ОстаткиПоСкладм.КоличествоОстаток
ТОГДА ОстаткиПоСкладм.СуммаОстаток
КОГДА ТабСписания.Количество <> 0
ТОГДА ТабСписания.Количество / ОстаткиПоСкладм.КоличествоОстаток * ОстаткиПоСкладм.СуммаОстаток
ИНАЧЕ 0
КОНЕЦ КАК Сумма,
1 КАК ПриоритетРаспределения
ПОМЕСТИТЬ РаспределенныеПартии
ИЗ
ТабСписания КАК ТабСписания
ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПоСкладм КАК ОстаткиПоСкладм
ПО ТабСписания.Номенклатура = ОстаткиПоСкладм.Номенклатура
И ТабСписания.Склад = ОстаткиПоСкладм.Склад
ГДЕ
ВЫБОР
КОГДА ТабСписания.Количество >= ОстаткиПоСкладм.КоличествоОстаток
ТОГДА ОстаткиПоСкладм.СуммаОстаток
КОГДА ОстаткиПоСкладм.КоличествоОстаток <> 0
ТОГДА ТабСписания.Количество / ОстаткиПоСкладм.КоличествоОстаток * ОстаткиПоСкладм.СуммаОстаток
ИНАЧЕ 0
КОНЕЦ > 0
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Склад
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Таб.Номенклатура КАК Номенклатура,
Таб.Склад КАК Склад,
СУММА(Таб.Количество) КАК Количество,
СУММА(Таб.Сумма) КАК Сумма,
МАКСИМУМ(2) КАК ПриоритетРаспределения
ПОМЕСТИТЬ НеРаспределенныеПартии
ИЗ
(ВЫБРАТЬ
ОстаткиПоСкладм.Номенклатура КАК Номенклатура,
ОстаткиПоСкладм.Склад КАК Склад,
ОстаткиПоСкладм.КоличествоОстаток КАК Количество,
ОстаткиПоСкладм.СуммаОстаток КАК Сумма
ИЗ
ОстаткиПоСкладм КАК ОстаткиПоСкладм
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РаспределенныеПартии.Номенклатура,
РаспределенныеПартии.Склад,
-РаспределенныеПартии.Количество,
-РаспределенныеПартии.Сумма
ИЗ
РаспределенныеПартии КАК РаспределенныеПартии) КАК Таб
СГРУППИРОВАТЬ ПО
Таб.Склад,
Таб.Номенклатура
ИМЕЮЩИЕ
СУММА(Таб.Количество) > 0
ИНДЕКСИРОВАТЬ ПО
Склад,
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
РаспределенныеПартии.Номенклатура КАК Номенклатура,
РаспределенныеПартии.Склад КАК Склад,
РаспределенныеПартии.Количество,
РаспределенныеПартии.Сумма,
РаспределенныеПартии.ПриоритетРаспределения
ПОМЕСТИТЬ ПартииВместе
ИЗ
РаспределенныеПартии КАК РаспределенныеПартии
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НеРаспределенныеПартии.Номенклатура,
НеРаспределенныеПартии.Склад,
НеРаспределенныеПартии.Количество,
НеРаспределенныеПартии.Сумма,
НеРаспределенныеПартии.ПриоритетРаспределения
ИЗ
НеРаспределенныеПартии КАК НеРаспределенныеПартии
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Склад
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТабСписанияБезПартий.Номенклатура КАК Номенклатура,
ТабСписанияБезПартий.Количество КАК КоличествоСписания,
ТабСписанияБезПартий.Сумма КАК СуммаСписания,
ПартииВместе.Склад КАК Склад,
ПартииВместе.Склад.Приоритет КАК СкладПриоритет,
ЕСТЬNULL(ПартииВместе.Количество, 0) КАК КоличествоОстаток,
ЕСТЬNULL(ПартииВместе.Сумма, 0) КАК СуммаОстаток
ИЗ
ТабСписанияБезПартий КАК ТабСписанияБезПартий
ЛЕВОЕ СОЕДИНЕНИЕ ПартииВместе КАК ПартииВместе
ПО ТабСписанияБезПартий.Номенклатура = ПартииВместе.Номенклатура
УПОРЯДОЧИТЬ ПО
ПартииВместе.ПриоритетРаспределения,
ПартииВместе.Склад.Приоритет
ИТОГИ
МАКСИМУМ(КоличествоСписания),
МАКСИМУМ(СуммаСписания),
СУММА(КоличествоОстаток),
СУММА(СуммаОстаток)
ПО
Номенклатура
Один в один как 1.4 только там партии а тут склады. Задачи взаимозаменяемые. Самое сложное это этот запрос, остальное просто сидеть и печатать стандартные штуки