Как получить скидку по номенклатуре и номенклатурной группе в документе из регистра сведений Скидки
Всем доброго времени суток! Прошу помочь в решении курсовой. Есть задача: получить запросом срез последних на указанную дату с отбором по номенклатуре и номенклатурной группе и вернуть скидку, установленную для номенклатурной группы, если нет скидки для конкретной номенклатуры. В регистреСведений.Скидки Измерение составного типа:СправочникСсылка.НоменклатурныеГруппы, СправочникСсылка.Номенклатура. Скидку смог получить только отбором и то без выбора условия:
Функция СкидкаНаДату(НоменклатураНоменклатурнаяГруппа, Дата) Экспорт
Скидка = 0;
Отбор = Новый Структура("НоменклатураНоменклатурнаяГруппа",НоменклатураНоменклатурнаяГруппа);
//Получить актуальные значения ресурсов регистра
Если ТипЗнч(НоменклатураНоменклатурнаяГруппа) = Тип("СправочникСсылка.НоменклатурныеГруппы") Тогда
КонецЕсли;
ЗначенияРесурсов=РегистрыСведений.Скидки.ПолучитьПоследнее(Дата,Отбор);
Возврат ЗначенияРесурсов.Скидка;
КонецФункции
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Доброго времени суток!
(1)
(1)
помочь в решении курсовой. Есть задача: получить запросом срез последних на указанную дату с отбором по номенклатуре и номенклатурной группе и вернуть скидку, установленную для номенклатурной группы, если нет скидки для конкретной номенклатуры. В регистреСведений.Скидки Измерение составного типа:СправочникСсылка.НоменклатурныеГруппы, СправочникСсылка.Номенк
Предположу, что регистр периодический.
Запрос = Новый Запрос("Выбрать Скидка из РегистрСведений.Скидки.СрезПоследних(&НаДату, НоменклатураНоменклатуранаяГруппа = &ОтборПоИзмерению)");
Запрос.УстановитьПараметр("НаДату", туточки указать нужную дату);
Запрос.УстановитьПараметр("ОтборПоИзмерению", туточки указать...);
РезЗапроса = Запрос.Выполнить();
Если РезЗапроса.Пустой() тогда
Результат = 0;
Иначе
Выборка = РезЗапроса.Выбрать();
Выборка.Следующий();
Результат = Выборка.Скидка;
КонецЕсли;
Показать
Тут главное нужно, чтобы в функцию, которую мы разрабатываем может прийти НоменклатурнаяГруппа, может прийти номенклатура с установленной скидкой, а может прийти номенклатура, скидки на которую нет, но есть скидка на ее номенклатурную группу
вот третий случай у меня и не получается..
вот третий случай у меня и не получается..
Попробуйте следующий запрос (для простоты "НоменклатураНоменклатурнаяГруппа" я заменил на "Источник"):
ВЫБРАТЬ ПЕРВЫЕ 1
ТаблицаСкидок.Скидка КАК Скидка
ИЗ
РегистрСведений.Скидки.СрезПоследних(
&Период,
Источник В
(ВЫБРАТЬ
&Источник
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Номенклатура.НоменклатурнаяГруппа
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Источник)) КАК ТаблицаСкидок
УПОРЯДОЧИТЬ ПО
ВЫБОР
КОГДА ТаблицаСкидок.Источник ССЫЛКА Справочник.Номенклатура
ТОГДА 1
ИНАЧЕ 2
КОНЕЦ
Показать
Так не работает.
Все время берет данные по номенклатурной группе
Все время берет данные по номенклатурной группе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СкидкиСрезПоследних.Скидка КАК Скидка
|ИЗ
| РегистрСведений.Скидки.СрезПоследних(
| &Период,
| &НоменклатураНоменклатурнаяГруппа В
| (ВЫБРАТЬ
| &НоменклатураНоменклатурнаяГруппа
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Номенклатура.НоменклатурнаяГруппа
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ГДЕ
| Номенклатура.Ссылка = &НоменклатураНоменклатурнаяГруппа)) КАК СкидкиСрезПоследних
|
|УПОРЯДОЧИТЬ ПО
| ВЫБОР
| КОГДА СкидкиСрезПоследних.НоменклатураНоменклатурнаяГруппа ССЫЛКА Справочник.Номенклатура
| ТОГДА 1
| ИНАЧЕ 2
| КОНЕЦ";
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот