Цены номенклатуры в отчете Выпуск продукции

1. user1008893 24.02.21 08:33 Сейчас в теме
Здравствуйте. Есть готовый отчет- рабочий. Всегда работал,а сейчас берёт цены установленные в начале месяца,хоте есть установка цен от 10.02. Уже вроде бы все проверили. Подскажите пожалуйста... Самописная конфигурация. Отчет на основе универсального отчета.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТаблицаРегистра.Период КАК Период,
	ТаблицаРегистра.Регистратор КАК Регистратор,
	ТаблицаРегистра.Номенклатура КАК Номенклатура,
	ТаблицаРегистра.ВариантИсполнения КАК ВариантИсполнения
ПОМЕСТИТЬ ВТ_ВыпускиПоПериоду
ИЗ
	РегистрНакопления.ВыпускПродукции.Обороты(&ДатаНач, &ДатаКон, Регистратор, {(ДокЗаказ.Филиал).* КАК Филиал, (ДокЗаказ.Фирма).* КАК Фирма, (Номенклатура).*, (ВариантИсполнения).*, (Спецификация).*, (РабочийЦентр).*, (ДокЗаказ).*, (ДокВыпуск).*, (ВидОперации)}) КАК ТаблицаРегистра
{ГДЕ
	ТаблицаРегистра.ДокЗаказ.Филиал.* КАК Филиал,
	ТаблицаРегистра.ДокЗаказ.Фирма.* КАК Фирма,
	ТаблицаРегистра.Номенклатура.*,
	ТаблицаРегистра.ВариантИсполнения.*,
	ТаблицаРегистра.Спецификация.*,
	ТаблицаРегистра.РабочийЦентр.*,
	ТаблицаРегистра.ДокЗаказ.*,
	ТаблицаРегистра.ДокВыпуск.*,
	ТаблицаРегистра.Регистратор.*,
	ТаблицаРегистра.ВидОперации,
	ТаблицаРегистра.Период,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕНЬ)) КАК ПериодДень,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕКАДА)) КАК ПериодДекада,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, МЕСЯЦ)) КАК ПериодМесяц,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, КВАРТАЛ)) КАК ПериодКвартал,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ГОД)) КАК ПериодГод,
	ТаблицаРегистра.КолОборот КАК КолОборот}

СГРУППИРОВАТЬ ПО
	ТаблицаРегистра.Период,
	ТаблицаРегистра.Номенклатура,
	ТаблицаРегистра.ВариантИсполнения,
	ТаблицаРегистра.Регистратор
;

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

СГРУППИРОВАТЬ ПО
	ВТ_ВыпускиПоПериоду.Номенклатура,
	ВТ_ВыпускиПоПериоду.ВариантИсполнения,
	ВТ_ВыпускиПоПериоду.Регистратор,
	ЕСТЬNULL(ЦеныНоменклатуры.Период, ЦеныНоменклатурыБезВИ.Период),
	ВЫБОР
		КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
				И ЦеныНоменклатурыБезВИ.Цена ЕСТЬ NULL
			ТОГДА 0
		ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.Цена, ЦеныНоменклатурыБезВИ.Цена)
	КОНЕЦ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.Номенклатура КАК Номенклатура,
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.ВариантИсполнения КАК ВариантИсполнения,
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.Регистратор КАК Регистратор,
	МАКСИМУМ(ВТ_ПодходящиеУстановкиЦенПоВыпускам.Период) КАК Период
ПОМЕСТИТЬ ВТ_МаксимальнаяДатаУстановкиЦенПоВыпускам
ИЗ
	ВТ_ПодходящиеУстановкиЦенПоВыпускам КАК ВТ_ПодходящиеУстановкиЦенПоВыпускам

СГРУППИРОВАТЬ ПО
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.Номенклатура,
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.ВариантИсполнения,
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.Регистратор
;

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

СГРУППИРОВАТЬ ПО
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.Номенклатура,
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.ВариантИсполнения,
	ВТ_ПодходящиеУстановкиЦенПоВыпускам.Регистратор
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТаблицаРегистра.КолОборот КАК КолОборот,
	ТаблицаРегистра.КолОборот * ЕСТЬNULL(ВТ_ЦеныНоменкатурыНаДатуВыпуска.Цена, 0) КАК СуммаОборот
{ВЫБРАТЬ
	ТаблицаРегистра.ДокЗаказ.Филиал.* КАК Филиал,
	ТаблицаРегистра.ДокЗаказ.Фирма.* КАК Фирма,
	ТаблицаРегистра.Номенклатура.*,
	ТаблицаРегистра.ВариантИсполнения.*,
	ТаблицаРегистра.Спецификация.*,
	ТаблицаРегистра.РабочийЦентр.*,
	ТаблицаРегистра.ДокЗаказ.*,
	ТаблицаРегистра.ДокВыпуск.*,
	ТаблицаРегистра.Регистратор.*,
	ТаблицаРегистра.ВидОперации,
	ТаблицаРегистра.Период,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕНЬ)) КАК ПериодДень,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕКАДА)) КАК ПериодДекада,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, МЕСЯЦ)) КАК ПериодМесяц,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, КВАРТАЛ)) КАК ПериодКвартал,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ГОД)) КАК ПериодГод,
	КолОборот,
	СуммаОборот}
ИЗ
	РегистрНакопления.ВыпускПродукции.Обороты(&ДатаНач, &ДатаКон, Регистратор, {(ДокЗаказ.Филиал).* КАК Филиал, (ДокЗаказ.Фирма).* КАК Фирма, (Номенклатура).*, (ВариантИсполнения).*, (Спецификация).*, (РабочийЦентр).*, (ДокЗаказ).*, (ДокВыпуск).*, (ВидОперации)}) КАК ТаблицаРегистра
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныНоменкатурыНаДатуВыпуска КАК ВТ_ЦеныНоменкатурыНаДатуВыпуска
		ПО ТаблицаРегистра.Регистратор = ВТ_ЦеныНоменкатурыНаДатуВыпуска.Регистратор
			И ТаблицаРегистра.Номенклатура = ВТ_ЦеныНоменкатурыНаДатуВыпуска.Номенклатура
			И ТаблицаРегистра.ВариантИсполнения = ВТ_ЦеныНоменкатурыНаДатуВыпуска.ВариантИсполнения
{ГДЕ
	ТаблицаРегистра.ДокЗаказ.Филиал.* КАК Филиал,
	ТаблицаРегистра.ДокЗаказ.Фирма.* КАК Фирма,
	ТаблицаРегистра.Номенклатура.*,
	ТаблицаРегистра.ВариантИсполнения.*,
	ТаблицаРегистра.Спецификация.*,
	ТаблицаРегистра.РабочийЦентр.*,
	ТаблицаРегистра.ДокЗаказ.*,
	ТаблицаРегистра.ДокВыпуск.*,
	ТаблицаРегистра.Регистратор.*,
	ТаблицаРегистра.ВидОперации,
	ТаблицаРегистра.Период,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕНЬ)) КАК ПериодДень,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕКАДА)) КАК ПериодДекада,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, МЕСЯЦ)) КАК ПериодМесяц,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, КВАРТАЛ)) КАК ПериодКвартал,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ГОД)) КАК ПериодГод,
	ТаблицаРегистра.КолОборот КАК КолОборот,
	(ТаблицаРегистра.КолОборот * ЕСТЬNULL(ВТ_ЦеныНоменкатурыНаДатуВыпуска.Цена, 0)) КАК СуммаОборот}
{УПОРЯДОЧИТЬ ПО
	ТаблицаРегистра.ДокЗаказ.Филиал.* КАК Филиал,
	ТаблицаРегистра.ДокЗаказ.Фирма.* КАК Фирма,
	ТаблицаРегистра.Номенклатура.*,
	ТаблицаРегистра.ВариантИсполнения.*,
	ТаблицаРегистра.Спецификация.*,
	ТаблицаРегистра.РабочийЦентр.*,
	ТаблицаРегистра.ДокЗаказ.*,
	ТаблицаРегистра.ДокВыпуск.*,
	ТаблицаРегистра.Регистратор.*,
	ТаблицаРегистра.ВидОперации,
	ТаблицаРегистра.Период,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕНЬ)) КАК ПериодДень,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕКАДА)) КАК ПериодДекада,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, МЕСЯЦ)) КАК ПериодМесяц,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, КВАРТАЛ)) КАК ПериодКвартал,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ГОД)) КАК ПериодГод,
	КолОборот,
	СуммаОборот}
ИТОГИ
	СУММА(КолОборот),
	СУММА(СуммаОборот)
ПО
	ОБЩИЕ
{ИТОГИ ПО
	ТаблицаРегистра.ДокЗаказ.Филиал.* КАК Филиал,
	ТаблицаРегистра.ДокЗаказ.Фирма.* КАК Фирма,
	ТаблицаРегистра.Номенклатура.*,
	ТаблицаРегистра.ВариантИсполнения.*,
	ТаблицаРегистра.Спецификация.*,
	ТаблицаРегистра.РабочийЦентр.*,
	ТаблицаРегистра.ДокЗаказ.*,
	ТаблицаРегистра.ДокВыпуск.*,
	ТаблицаРегистра.ВидОперации,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕНЬ)) КАК ПериодДень,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕКАДА)) КАК ПериодДекада,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, МЕСЯЦ)) КАК ПериодМесяц,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, КВАРТАЛ)) КАК ПериодКвартал,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие,
	(НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ГОД)) КАК ПериодГод}
АВТОУПОРЯДОЧИВАНИЕ
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
5. Alvis44 24.02.21 11:00 Сейчас в теме +1 $m
Сдаётся мне, что в этом пакете не хватает соединения по периоду:

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

СГРУППИРОВАТЬ ПО
    ВТ_ПодходящиеУстановкиЦенПоВыпускам.Номенклатура,
    ВТ_ПодходящиеУстановкиЦенПоВыпускам.ВариантИсполнения,
    ВТ_ПодходящиеУстановкиЦенПоВыпускам.Регистратор
Показать


А то в предыдущем пакете максимальная дата цены получена, а тут идёт соединение без учёта даты, и берётся просто максимальная цена. Могу предположить, что цена на начала месяца была выше чем на 10.02))
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Akuji 22 24.02.21 10:12 Сейчас в теме
Может из за того что цены на дату выпуска...? ВТ_ЦеныНоменкатурыНаДатуВыпуска
а эта дата меньше 10го
3. user1008893 24.02.21 10:14 Сейчас в теме
4. Akuji 22 24.02.21 10:18 Сейчас в теме
Если "Всегда работал" и не менялся то думаю что проблема в данных, а не в запросе.
5. Alvis44 24.02.21 11:00 Сейчас в теме +1 $m
Сдаётся мне, что в этом пакете не хватает соединения по периоду:

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

СГРУППИРОВАТЬ ПО
    ВТ_ПодходящиеУстановкиЦенПоВыпускам.Номенклатура,
    ВТ_ПодходящиеУстановкиЦенПоВыпускам.ВариантИсполнения,
    ВТ_ПодходящиеУстановкиЦенПоВыпускам.Регистратор
Показать


А то в предыдущем пакете максимальная дата цены получена, а тут идёт соединение без учёта даты, и берётся просто максимальная цена. Могу предположить, что цена на начала месяца была выше чем на 10.02))
6. user1008893 24.02.21 11:14 Сейчас в теме
(5)да,цена вна начало месяца была выше
7. Alvis44 24.02.21 11:17 Сейчас в теме
(6) Просто в том пакете, что указал, соедините таблицы по периоду, и должно сойтись.
P.s. если дальше по коду ошибки нет. Я на этом куске остановился) Там вроде как явно косячок)
8. user1008893 24.02.21 12:04 Сейчас в теме
(7)Спасибо. Все теперь показывает правильно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот