Вывод максимальной цены в поле СКД

1. Az18011993 15.02.21 20:04 Сейчас в теме
Добрый вечер,уважаемые форумчане!

Есть отчет СКД, есть параметр список значений Виды цен. Нужно,чтобы при выборе нескольких видов цен в поле отчета выводилась максимальная цена.
Агрегатная функция Максимум не помогает(
Не подскажите как лучше реализовать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. un2qum 7 16.02.21 05:31 Сейчас в теме
Покажите пожалуйста полностью запрос, без него очень трудно понять что происходит. Можно еще прикрепить схему СКД, будет вообще здорово!
3. Az18011993 16.02.21 07:20 Сейчас в теме
(2)
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	Сегменты.Номенклатура КАК Номенклатура,
	Сегменты.Характеристика КАК Характеристика,
	ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры
ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
ИЗ
	РегистрСведений.НоменклатураСегмента КАК Сегменты
{ГДЕ
	Сегменты.Сегмент.* КАК СегментНоменклатуры,
	Сегменты.Номенклатура.* КАК Номенклатура,
	Сегменты.Характеристика.* КАК Характеристика}

ИНДЕКСИРОВАТЬ ПО
	Номенклатура,
	Характеристика,
	ИспользуетсяОтборПоСегментуНоменклатуры
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СвободныеОстаткиОстатки.Номенклатура,
	СвободныеОстаткиОстатки.Характеристика,
	СвободныеОстаткиОстатки.Склад,
	СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
	СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток КАК ВРезервеОстаток,
	ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток, 0) КАК Остаток,
	ТоварныеОграничения.СтраховоеКоличествоЗапаса КАК СтраховоеКоличествоЗапаса,
	ТоварныеОграничения.МинимальноеКоличествоЗапаса КАК МинимальноеКоличествоЗапаса,
	ТоварныеОграничения.МаксимальноеКоличествоЗапаса КАК МаксимальноеКоличествоЗапаса,
	ТоварныеОграничения.МетодОбеспеченияПотребностей КАК МетодОбеспеченияПотребностей
ПОМЕСТИТЬ СвободныеОстатки
ИЗ
	РегистрНакопления.СвободныеОстатки.Остатки(&Период, ) КАК СвободныеОстаткиОстатки
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварныеОграничения КАК ТоварныеОграничения
		ПО &ПодстановкаТоварногоОграничения
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
	ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	ВЫБОР
		КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
			ТОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаИзмерения
		ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Упаковка
	КОНЕЦ КАК Упаковка,
	ЦеныНоменклатурыСрезПоследних.Валюта КАК Валюта,
	ЦеныНоменклатурыСрезПоследних.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
	ВЫБОР
		КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
			ТОГДА СвободныеОстатки.Остаток
		ИНАЧЕ СвободныеОстатки.Остаток / &ТекстЗапросаКоэффициентУпаковки
	КОНЕЦ КАК Остаток,
	ВЫБОР
		КОГДА СвободныеОстатки.Остаток <= 0 ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.НетВНаличии) ИНАЧЕ
			ВЫБОР КОГДА СвободныеОстатки.Остаток <= (СвободныеОстатки.МинимальноеКоличествоЗапаса) ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.УточняйтеНаличие) ИНАЧЕ
				ВЫБОР 
					КОГДА СвободныеОстатки.Остаток < (СвободныеОстатки.СтраховоеКоличествоЗапаса + СвободныеОстатки.МинимальноеКоличествоЗапаса) ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Мало) ИНАЧЕ
						ВЫБОР 
							КОГДА СвободныеОстатки.Остаток < СвободныеОстатки.МаксимальноеКоличествоЗапаса ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Достаточно) ИНАЧЕ
								ВЫБОР КОГДА СвободныеОстатки.Остаток >= СвободныеОстатки.МаксимальноеКоличествоЗапаса 
									ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Много) ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Неизвестно)
							КОНЕЦ
						КОНЕЦ
				КОНЕЦ
		КОНЕЦ
	КОНЕЦ КАК ОстатокТекстом,
	СвободныеОстатки.Склад КАК Склад,
	СвободныеОстатки.МетодОбеспеченияПотребностей КАК МетодОбеспеченияПотребностей
ПОМЕСТИТЬ Цены
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ВидЦены В (&ВидыЦен) {((Номенклатура, Характеристика) В
				(ВЫБРАТЬ
					ОтборПоСегментуНоменклатуры.Номенклатура,
					ОтборПоСегментуНоменклатуры.Характеристика
				ИЗ
					ОтборПоСегментуНоменклатуры
				ГДЕ
					ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)),
				((Номенклатура) В
				(ВЫБРАТЬ
					ОтборПоАссортименту.Номенклатура
				ИЗ
					ОтборПоАссортименту
				ГДЕ
					ОтборПоАссортименту.ИспользуетсяОтборПоАссортименту = &ИспользуетсяОтборПоАссортименту))
					}) КАК ЦеныНоменклатурыСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ СвободныеОстатки КАК СвободныеОстатки
		ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СвободныеОстатки.Номенклатура
			И ЦеныНоменклатурыСрезПоследних.Характеристика = СвободныеОстатки.Характеристика
			
		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, {ВидЦены КАК ВидЦеныДиапазон((Номенклатура, Характеристика) В
				(ВЫБРАТЬ
					ОтборПоСегментуНоменклатуры.Номенклатура,
					ОтборПоСегментуНоменклатуры.Характеристика
				ИЗ
					ОтборПоСегментуНоменклатуры
				ГДЕ
					ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)),
				((Номенклатура) В
				(ВЫБРАТЬ
					ОтборПоАссортименту.Номенклатура
				ИЗ
					ОтборПоАссортименту
				ГДЕ
					ОтборПоАссортименту.ИспользуетсяОтборПоАссортименту = &ИспользуетсяОтборПоАссортименту))
					}) КАК ЦеныНоменклатурыОтбор
		ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыОтбор.Номенклатура
			И ЦеныНоменклатурыСрезПоследних.Характеристика = ЦеныНоменклатурыОтбор.Характеристика
			}
		
ГДЕ
	ЦеныНоменклатурыСрезПоследних.Цена > 0
{ГДЕ
	ЦеныНоменклатурыОтбор.Цена КАК ЦенаОт,
	ЦеныНоменклатурыОтбор.Цена КАК ЦенаДо
}
;
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Цены.Номенклатура,
	Цены.Характеристика,
	Цены.ВидЦены,
	Цены.Цена,
	Цены.Упаковка,
	Цены.Валюта,
	Цены.ЦеноваяГруппа,
	Цены.Склад,
	ВЫБОР КОГДА Цены.Остаток <0 
		ТОГДА 0 
		ИНАЧЕ Цены.Остаток
	КОНЕЦ КАК Остаток,
	ВЫБОР КОГДА (Цены.МетодОбеспеченияПотребностей = ЗНАЧЕНИЕ (Перечисление.МетодыОбеспеченияПотребностей.ЗаказПодЗаказ))
			ИЛИ (Цены.МетодОбеспеченияПотребностей ЕСТЬ NULL И Цены.Остаток > 0)
		ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.ПодЗаказ)
		ИНАЧЕ Цены.ОстатокТекстом
	КОНЕЦ КАК ОстатокТекстом
{ВЫБРАТЬ
	Номенклатура.*,
	Характеристика.*,
	ВидЦены.*,
	Цена,
	Упаковка.*,
	Валюта.*,
	ЦеноваяГруппа.*,
	Склад.*}
ИЗ
	Цены КАК Цены
{ГДЕ
	Цены.Номенклатура.*,
	Цены.Характеристика.*,
	Цены.ВидЦены.*,
	Цены.Цена,
	Цены.Упаковка.*,
	Цены.Валюта.*,
	Цены.Склад.*}
}
Показать
Прикрепленные файлы:
Схема.xml
4. Az18011993 16.02.21 07:25 Сейчас в теме
(2)И еще момент, стоит группировка по складу,но если ее убрать,то цены отображаются некорректно)А мне не нужно в отчете отображение группировки по складам,так как тогда появляются несколько одинаковых послей с номенклатурой,но разным складом.
5. meriferi 18.02.21 19:45 Сейчас в теме
Делайте группировки пакетами запросов и связывайте их по номенклатуре
Оставьте свое сообщение

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