Программно получить список номенклатуры в скидках
В скидках(наценках) установлено:
Предоставляется на: "Номенклатура по отбору" и указан отбор - Номенклатура из такой-то группы или списка групп.
В справочнике "СкидкиНаценки", судя по гуглу, этот отбор хранится в реквизите "ХранилищеНастроекКомпоновкиДанных". Не могу найти как извлечь этот набор и по нему вывести сам список номенклатуры.
Делаю так:
Предоставляется на: "Номенклатура по отбору" и указан отбор - Номенклатура из такой-то группы или списка групп.
В справочнике "СкидкиНаценки", судя по гуглу, этот отбор хранится в реквизите "ХранилищеНастроекКомпоновкиДанных". Не могу найти как извлечь этот набор и по нему вывести сам список номенклатуры.
Делаю так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СкидкиНаценки.Ссылка КАК Ссылка,
| СкидкиНаценки.ЗначениеСкидкиНаценки КАК ЗначениеСкидкиНаценки,
| СкидкиНаценки.ВариантОтбораНоменклатуры КАК ВариантОтбораНоменклатуры,
| СкидкиНаценки.ХранилищеНастроекКомпоновкиДанных КАК ХранилищеНастроекКомпоновкиДанных
|ИЗ
| Справочник.СкидкиНаценки КАК СкидкиНаценки
|ГДЕ
| СкидкиНаценки.СпособПредоставления = &СпособПредоставления
| И СкидкиНаценки.ВариантОтбораНоменклатуры = &ВариантОтбораНоменклатуры";
Запрос.УстановитьПараметр("ВариантОтбораНоменклатуры", Перечисления.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных);
Запрос.УстановитьПараметр("СпособПредоставления", Перечисления.СпособыПредоставленияСкидокНаценок.Процент);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
СпрСкидки = Справочники.СкидкиНаценки.Выбрать();
Пока Выборка.Следующий() Цикл
Настройки = Выборка.ХранилищеНастроекКомпоновкиДанных.Получить();
//как дальше сделать выборку?
КонецЦикла;
ПоказатьПо теме из базы знаний
- Типовая борьба - личный опыт работы с типовыми конфигурациями 1С:8
- Бонусная система в 1С для УТ 10.3
- Алгоритмы с решениями для экзамена Специалист УТ 11.1
- Иерархия библиотек. Автоматическое обновление или как отказаться от переопределяемых модулей
- Интеграция с маркетплейсами МегаМаркет, Wildberries, OZON, ЯндексМаркет, VK, Avito, Леруа Мерлен, Aliexpress, КУПЕР, Dostavista
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Нужно использовать ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
Примерно вот так:
Примерно вот так:
//Насчет макета не уверен, возможно подойдет "ОтборСтрок" или "ОтборСтрокНоменклатура"
СхемаКомпоновкиДанных = Справочники.СкидкиНаценки.ПолучитьМакет("ОтборСтрок");
ВыборкаХранилищеНастроекКомпоновкиДанных = Выборка.ХранилищеНастроекКомпоновкиДанных; // ХранилищеЗначения
НастройкиКомпоновкиДанных = ВыборкаХранилищеНастроекКомпоновкиДанных.Получить();
// Подготовка компоновщика макета компоновки данных, загрузка настроек
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
Если НастройкиКомпоновкиДанных <> Неопределено Тогда
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных);
КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность);
Иначе
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
КонецЕсли;
//Устанавливаем параметры
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Параметр1");
Если Параметр <> Неопределено Тогда
Параметр.Использование = Истина;
Параметр.Значение = Параметр1;
КонецЕсли;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
СхемаКомпоновкиДанных,
КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"), Ложь);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТЗРезультат = Новый ТаблицаЗначений();
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ТЗРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот