Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 окт 2021, 20:06

Товарный отчёт

Автор Afellay, 29 ноя 2016, 16:22

0 Пользователей и 1 гость просматривают эту тему.

Afellay

Всем привет, просьба подсказать, есть отчёт по товаром, в разрезе товаров, но он выдает неверную сумму в движении. Ошибка на скриншотах. Просьба подсказать, куда капать, чтобы исправить ошибку, отображения суммы.
Отчёт на СКД. Первая Часть НабораДанных
ВЫБРАТЬ
"Остатки" КАК ТипДокумента,
NULL КАК Документ,
ТоварыНаСкладахОстатки.ВНаличииОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК НачальныйОстаток,
0 КАК КонечныйОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоПериода, {(Номенклатура).*, (Склад).*}) КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НачалоПериода, ВидЦены = &ВидЦены {(Номенклатура).*}) КАК ЦеныНоменклатурыСрезПоследних
ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ТоварыНаСкладахОстатки.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика

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

ВЫБРАТЬ
"Остатки",
NULL,
0,
ТоварыНаСкладахОстатки.ВНаличииОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, {(Номенклатура).*, (Склад).*}) КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ВидЦены = &ВидЦены {(Номенклатура).*}) КАК ЦеныНоменклатурыСрезПоследних
ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ТоварыНаСкладахОстатки.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика

Вторая часть
ВЫБРАТЬ
ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) КАК ТипДокумента,
ТоварыНаСкладахОбороты.Период,
ТоварыНаСкладахОбороты.Регистратор КАК Документ,
ТоварыНаСкладахОбороты.Номенклатура,
ТоварыНаСкладахОбороты.ВНаличииПриход КАК Приход,
ТоварыНаСкладахОбороты.ВНаличииРасход КАК Расход
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Регистратор, {(Номенклатура).*, (Склад).*}) КАК ТоварыНаСкладахОбороты
ГДЕ
ВЫБОР
КОГДА &НеОтображатьПеремещения
ТОГДА НЕ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
ИНАЧЕ ИСТИНА
КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.Период,
ЦеныНоменклатуры.Регистратор,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена
ПОМЕСТИТЬ ВТ_ЦеныНоменклатуры
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Период <= &КонецПериода
И ЦеныНоменклатуры.ВидЦены = &ВидЦены
{ГДЕ
ЦеныНоменклатуры.Номенклатура.*}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Обороты.Документ,
ВТ_Обороты.Номенклатура,
МАКСИМУМ(ВТ_ЦеныНоменклатуры.Период) КАК ПериодУстановкиЦены
ПОМЕСТИТЬ ВТ_ПериодыУстановкиЦен
ИЗ
ВТ_Обороты КАК ВТ_Обороты
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныНоменклатуры КАК ВТ_ЦеныНоменклатуры
ПО ВТ_Обороты.Номенклатура = ВТ_ЦеныНоменклатуры.Номенклатура
И ВТ_Обороты.Период >= ВТ_ЦеныНоменклатуры.Период

СГРУППИРОВАТЬ ПО
ВТ_Обороты.Документ,
ВТ_Обороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Обороты.ТипДокумента,
ВТ_Обороты.Документ,
СУММА(ВТ_Обороты.Приход * ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0)) КАК Приход,
СУММА(ВТ_Обороты.Расход * ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0)) КАК Расход
ПОМЕСТИТЬ ВТ_ПриходРасход
ИЗ
ВТ_Обороты КАК ВТ_Обороты
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПериодыУстановкиЦен КАК ВТ_ПериодыУстановкиЦен
ПО ВТ_Обороты.Документ = ВТ_ПериодыУстановкиЦен.Документ
И ВТ_Обороты.Номенклатура = ВТ_ПериодыУстановкиЦен.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныНоменклатуры КАК ВТ_ЦеныНоменклатуры
ПО (ВТ_ПериодыУстановкиЦен.Номенклатура = ВТ_ЦеныНоменклатуры.Номенклатура)
И (ВТ_ПериодыУстановкиЦен.ПериодУстановкиЦены = ВТ_ЦеныНоменклатуры.Период)

СГРУППИРОВАТЬ ПО
ВТ_Обороты.ТипДокумента,
ВТ_Обороты.Документ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПриходРасход.ТипДокумента КАК ТипДокумента,
ВТ_ПриходРасход.Документ КАК Документ,
СУММА(ВТ_ПриходРасход.Приход) КАК Приход,
СУММА(ВТ_ПриходРасход.Расход) КАК Расход
ИЗ
ВТ_ПриходРасход КАК ВТ_ПриходРасход

СГРУППИРОВАТЬ ПО
ВТ_ПриходРасход.ТипДокумента,
ВТ_ПриходРасход.Документ

Третья часть Набора Данных в СКД ВЫБРАТЬ
ЦеныНоменклатуры.Период,
ЦеныНоменклатуры.Регистратор,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена
ПОМЕСТИТЬ ВТ_ЦеныНоменклатуры
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Период <= &КонецПериода
И ЦеныНоменклатуры.ВидЦены = &ВидЦены
{ГДЕ
ЦеныНоменклатуры.Номенклатура.*}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.Период,
ЦеныНоменклатуры.Регистратор КАК Документ,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Цена
ПОМЕСТИТЬ ВТ_ДокументыУстановкаЦен
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Период МЕЖДУ &НачалоПериода И &КонецПериода
И ЦеныНоменклатуры.ВидЦены = &ВидЦены
{ГДЕ
ЦеныНоменклатуры.Номенклатура.*}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ДокументыУстановкаЦен.Документ,
ВТ_ДокументыУстановкаЦен.Номенклатура,
МАКСИМУМ(ВТ_ЦеныНоменклатуры.Период) КАК ПериодУстановкиЦен
ПОМЕСТИТЬ ВТ_ПериодыУстановкиЦенПереоценка
ИЗ
ВТ_ДокументыУстановкаЦен КАК ВТ_ДокументыУстановкаЦен
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныНоменклатуры КАК ВТ_ЦеныНоменклатуры
ПО ВТ_ДокументыУстановкаЦен.Период > ВТ_ЦеныНоменклатуры.Период
И ВТ_ДокументыУстановкаЦен.Номенклатура = ВТ_ЦеныНоменклатуры.Номенклатура

СГРУППИРОВАТЬ ПО
ВТ_ДокументыУстановкаЦен.Документ,
ВТ_ДокументыУстановкаЦен.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ДокументыУстановкаЦен.Документ,
ВТ_ДокументыУстановкаЦен.Номенклатура,
МАКСИМУМ(ТоварыНаСкладахОстаткиИОбороты.Период) КАК ПериодПолученияОстатка
ПОМЕСТИТЬ ВТ_ПериодыПолученияОстатков
ИЗ
ВТ_ДокументыУстановкаЦен КАК ВТ_ДокументыУстановкаЦен
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , {(Номенклатура).*, (Склад).*}) КАК ТоварыНаСкладахОстаткиИОбороты
ПО ВТ_ДокументыУстановкаЦен.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
И ВТ_ДокументыУстановкаЦен.Период > ТоварыНаСкладахОстаткиИОбороты.Период

СГРУППИРОВАТЬ ПО
ВТ_ДокументыУстановкаЦен.Документ,
ВТ_ДокументыУстановкаЦен.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ДокументыУстановкаЦен.Документ,
ВТ_ДокументыУстановкаЦен.Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК Количество
ПОМЕСТИТЬ ВТ_ОстаткиПереоценка
ИЗ
ВТ_ДокументыУстановкаЦен КАК ВТ_ДокументыУстановкаЦен
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПериодыПолученияОстатков КАК ВТ_ПериодыПолученияОстатков
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Секунда, , {(Номенклатура).*, (Склад).*}) КАК ТоварыНаСкладахОстаткиИОбороты
ПО ВТ_ПериодыПолученияОстатков.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
И ВТ_ПериодыПолученияОстатков.ПериодПолученияОстатка = ТоварыНаСкладахОстаткиИОбороты.Период
ПО ВТ_ДокументыУстановкаЦен.Документ = ВТ_ПериодыПолученияОстатков.Документ
И ВТ_ДокументыУстановкаЦен.Номенклатура = ВТ_ПериодыПолученияОстатков.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"Переоценка" КАК ТипДокумента,
ВТ_ДокументыУстановкаЦен.Документ,
СУММА(ВЫБОР
КОГДА ВТ_ДокументыУстановкаЦен.Цена > ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0)
ТОГДА (ВТ_ДокументыУстановкаЦен.Цена - ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0)) * ЕСТЬNULL(ВТ_ОстаткиПереоценка.Количество, 0)
ИНАЧЕ 0
КОНЕЦ) КАК Приход,
СУММА(ВЫБОР
КОГДА ВТ_ДокументыУстановкаЦен.Цена > ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0)
ТОГДА 0
ИНАЧЕ (ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0) - ВТ_ДокументыУстановкаЦен.Цена) * ЕСТЬNULL(ВТ_ОстаткиПереоценка.Количество, 0)
КОНЕЦ) КАК Расход
ИЗ
ВТ_ДокументыУстановкаЦен КАК ВТ_ДокументыУстановкаЦен
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПериодыУстановкиЦенПереоценка КАК ВТ_ПериодыУстановкиЦенПереоценка
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныНоменклатуры КАК ВТ_ЦеныНоменклатуры
ПО ВТ_ПериодыУстановкиЦенПереоценка.Номенклатура = ВТ_ЦеныНоменклатуры.Номенклатура
И ВТ_ПериодыУстановкиЦенПереоценка.ПериодУстановкиЦен = ВТ_ЦеныНоменклатуры.Период
ПО ВТ_ДокументыУстановкаЦен.Документ = ВТ_ПериодыУстановкиЦенПереоценка.Документ
И ВТ_ДокументыУстановкаЦен.Номенклатура = ВТ_ПериодыУстановкиЦенПереоценка.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОстаткиПереоценка КАК ВТ_ОстаткиПереоценка
ПО ВТ_ДокументыУстановкаЦен.Номенклатура = ВТ_ОстаткиПереоценка.Номенклатура
И ВТ_ДокументыУстановкаЦен.Документ = ВТ_ОстаткиПереоценка.Документ

СГРУППИРОВАТЬ ПО
ВТ_ДокументыУстановкаЦен.Документ

Заранее очень буду благодарен

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск