Сложности с запросом

1. user1302499 27.05.21 09:18 Сейчас в теме
Добрый день, подскажите, как нужно построить такой запрос (что должно быть в первой ВТ, что во второй ВТ, какие параметры передавать?)

Есть документ который в регистре регистрирует цену! В рс есть Измерение: Объект (Тип Номенклатура + НоменклатурнаяГруппа) Реквизит: Скидка%.

Задание: В документе реализации получить скидки при выборе номенклатуры. Если по номенклатуре скидки нет, то искать по номенклатурной группе скидку. Так же написано что нужно пакетные запросы использовать!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. MikhailDr 27.05.21 09:47 Сейчас в теме
ВЫБРАТЬ
	МАКСИМУМ(ИсторияЦенСрезПоследних.Скидка) КАК Скидка
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
	РегистрСведений.ИсторияЦен.СрезПоследних КАК ИсторияЦенСрезПоследних
ГДЕ
	ИсторияЦенСрезПоследних.Модель = &Модель
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЫБОР
		КОГДА ИсторияЦенСрезПоследних.Скидка = 0
			ТОГДА ВременнаяТаблица.Скидка
		ИНАЧЕ ИсторияЦенСрезПоследних.Скидка
	КОНЕЦ КАК Скидка
ИЗ
	РегистрСведений.ИсторияЦен.СрезПоследних КАК ИсторияЦенСрезПоследних,
	ВременнаяТаблица КАК ВременнаяТаблица
ГДЕ
	ИсторияЦенСрезПоследних.Номенклатура = &Номенклатура
Показать



Только по этому запросу будет вытаскиваться максимальная скидка из группы, тут надо уточнить техзадание
3. Svetlanka_sv 45 27.05.21 09:50 Сейчас в теме
ВЫБРАТЬ
	ЦеныСкидки.Скидка КАК СкидкаПоНом
ПОМЕСТИТЬ ВТ_СкидкаПоНоменклатуре
ИЗ
	РегистрСведений.ЦеныСкидки.СрезПоследних(&Дата, ) КАК ЦеныСкидки
ГДЕ
	ЦеныСкидки.Номенклатура = &Номенклатура
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЕСТЬNULL(ВТ_СкидкаПоНоменклатуре.СкидкаПоНом, ВТ_СкидкаПоНомГруппе.СкидкаПоНомГруппе) КАК Скидка
ИЗ
	ВТ_СкидкаПоНоменклатуре КАК ВТ_СкидкаПоНоменклатуре,
	ВТ_СкидкаПоНомГруппе КАК ВТ_СкидкаПоНомГруппе
Показать
4. user1302499 27.05.21 09:53 Сейчас в теме
(3) Я почти так же сделал, только в последней связь по группе
5. azmon 1 27.05.21 10:09 Сейчас в теме
(3) Данный запрос будет работать некорректно. Существует вариант что если нет скидки на номенклатуру, то в регистре не будет записей по данной номенклатуре. А в этом случае ВТ_СкидкаПоНоменклатуре будет выдавать пустой результат..
6. Степной 27 27.05.21 19:53 Сейчас в теме
(1) Примерно так:

ВЫБРАТЬ
	ЦеныСрезПоследних.Объект КАК Объект,
	ЦеныСрезПоследних.Скидка КАК Скидка,
	ВЫБОР
		КОГДА ТИПЗНАЧЕНИЯ(ЦеныСрезПоследних.Объект) = ТИП(Справочник.Номенклатура)
			ТОГДА 1
		ИНАЧЕ 2
	КОНЕЦ КАК Приоритет
ПОМЕСТИТЬ ВТ_Скидки
ИЗ
	РегистрСведений.Цены.СрезПоследних(&ДатаСреза, Объект В (&СписокОбъектов)) КАК ЦеныСрезПоследних
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
	ВТ_Скидки.Объект КАК Объект,
	ВТ_Скидки.Скидка КАК Скидка
ИЗ
	ВТ_Скидки КАК ВТ_Скидки

УПОРЯДОЧИТЬ ПО
	ВТ_Скидки.Приоритет
Показать


Список объектов - 2 элемента: номенклатура и номенклатурная группа. Этот список можно и в запросе получать, передавая только номенклатуру.
Оставьте свое сообщение

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