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