Установить программный отбор номенклатуры в скидках УТ 11.3
Здравствуйте!
Есть задача программно загрузить скидки из экселя, в файле 2 колонки - код группы номенклатуры к которой нужно применять скидку и размер скидки. Создаю документ таким образом
но скидка является не активной тк не установлен отбор по номенклатуре, как этот отбор можно программно установить?
в справочнике есть реквизит ХранилищеНастроекКомпоновкиДанных, возможно в него надо писать?
Есть задача программно загрузить скидки из экселя, в файле 2 колонки - код группы номенклатуры к которой нужно применять скидку и размер скидки. Создаю документ таким образом
ЭлементСкидка = Справочники.СкидкиНаценки.СоздатьЭлемент();
ЭлементСкидка.Наименование = ExcelЛист.Cells(Строка,СкидкаИзЭкселя).Text;
ЭлементСкидка.Родитель = Справочники.СкидкиНаценки.КорневаяГруппа;
ЭлементСкидка.ЗначениеСкидкиНаценки = ExcelЛист.Cells(Строка,СкидкаИзЭкселя).Text;
ЭлементСкидка.СпособПримененияСкидки = Перечисления.СпособыПримененияСкидокНаценок.ПрименитьВМоментРасчетаСкидокНаценок;
ЭлементСкидка.СпособПредоставления = Перечисления.СпособыПредоставленияСкидокНаценок.Процент;
ЭлементСкидка.ВариантОтбораНоменклатуры = Перечисления.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных;
ЭлементСкидка.Записать();
Показатьно скидка является не активной тк не установлен отбор по номенклатуре, как этот отбор можно программно установить?
в справочнике есть реквизит ХранилищеНастроекКомпоновкиДанных, возможно в него надо писать?
Прикрепленные файлы:



По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Это я сделал вот здесь, оно работает
поле заполняется как "Номенклатуру по отбору", а сам отбор который похож на гиперссылку не знаю как заполнять
ЭлементСкидка.ВариантОтбораНоменклатуры = Перечисления.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных;
поле заполняется как "Номенклатуру по отбору", а сам отбор который похож на гиперссылку не знаю как заполнять
(3) Хоть ты и молчал в личку я решил так...через клиент
Для Каждого Строка Из Объект.ТаблСкидок Цикл
ФормаЗаписи = ПолучитьФорму("Справочник.СкидкиНаценки.Форма.ФормаЭлемента");
СтруктураСвойств = Новый Структура; // Структура содержит значения тех реквизитов, которые нужно заполнить на форме нового документа, но которых нет в документе-источнике
СтруктураСвойств.Вставить("Наименование",""+Строка.Поставщик + " - " +Строка.Соглашение+ ", " +Строка.Скидка+ "%, " +Строка.Группа+ "/" +Строка.Код1+ "/" +Строка.Код2+ "/" +Строка.Код3);
СтруктураСвойств.Вставить("ЗначениеСкидкиНаценки", Строка.Скидка);
СтруктураСвойств.Вставить("ВариантОтбораНоменклатуры", ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных"));
ФормаЗаписи.Элементы.ОтборПредставление.Видимость = (ФормаЗаписи.Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных"));
ЭлементОтбора = ФормаЗаписи.КомпоновщикНастроекОтборПоНоменклатуре.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура");
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = "цколыотаьб";
СтруктураСвойств.Вставить("КомпоновщикНастроекОтборПоНоменклатуре", ЭлементОтбора);
ЗаполнитьЗначенияСвойств(ФормаЗаписи.Объект,СтруктураСвойств,"Наименование,ЗначениеСкидкиНаценки,ВариантОтбораНоменклатуры",);
ФормаЗаписи.Открыть();
КонецЦикла;
Показать
я тоже столкнулся похожей задачей. В итоге я делал так:
ХранилищеНастроекКомпоновкиДанных = новый Структура;
ХранилищеНастроекКомпоновкиДанных.Вставить("ДополнительныеУсловия", новый НастройкиКомпоновкиДанных);
ХранилищеНастроекКомпоновкиДанных.Вставить("Запрос", новый Структура);
ХранилищеНастроекКомпоновкиДанных.Вставить("ОтборПоНоменклатуре", новый НастройкиКомпоновкиДанных);
//
ХранилищеНастроекКомпоновкиДанных.Запрос.Вставить("ИндексЗапросаРезультата", 2);
ХранилищеНастроекКомпоновкиДанных.Запрос.Вставить("КоличествоЗапросовВПакете", 3);
ХранилищеНастроекКомпоновкиДанных.Запрос.Вставить("Параметры", новый Структура);
ХранилищеНастроекКомпоновкиДанных.Запрос.Вставить("ТекстЗапроса", "ВЫБРАТЬ
| ФильтрПоНоменклатуре.КлючСвязи КАК КлючСвязи
|ПОМЕСТИТЬ ФильтрПоНоменклатуре
|ИЗ
| ВременнаяТаблицаТовары КАК ФильтрПоНоменклатуре
|ГДЕ
| ФильтрПоНоменклатуре.Номенклатура В ИЕРАРХИИ (&П_Кэшируется)
|
|;
|
|////////////////////////////////////////////////////////////////////////////////
|// #Результат#
|ВЫБРАТЬ
| Товары.КлючСвязи КАК КлючСвязи,
| Неопределено КАК ЗначениеПоказателя,
| -1 КАК КратностьВыполнения
|ИЗ
| ФильтрПоНоменклатуре КАК Товары
|
|;
|
|////////////////////////////////////////////////////////////////////////////////
|
|УНИЧТОЖИТЬ ФильтрПоНоменклатуре
|");
ХранилищеНастроекКомпоновкиДанных.Запрос.Параметры.Вставить("П_Кэшируется", новый СписокЗначений);
ХранилищеНастроекКомпоновкиДанных.Запрос.Параметры.Вставить("ПодстановкаТоварногоОграничения_Кэшируется", Неопределено);
//__ тут добавляем в список товары и группы отбора
//ХранилищеНастроекКомпоновкиДанных.Запрос.Параметры.П_Кэшируется.Добавить(Группа1);
//ХранилищеНастроекКомпоновкиДанных.Запрос.Параметры.П_Кэшируется.Добавить(Товар2);
//
врВрем = врСтрРез.ХранилищеНастроекКомпоновкиДанных.ОтборПоНоменклатуре.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
врВрем.Заголовок = "";
врВрем.Использование = Истина;
врВрем.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
врВрем.Поле = Новый ПолеКомпоновкиДанных("КлючСвязи");
//
врВрем = врСтрРез.ХранилищеНастроекКомпоновкиДанных.ОтборПоНоменклатуре.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
врВрем.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
врВрем.Использование = Истина;
врВрем.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;
врСписок = новый СписокЗначений;
врВрем.ПравоеЗначение = врСписок;
врВрем.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
врВрем.ЛевоеЗначение = новый ПолеКомпоновкиДанных("Номенклатура");
//__ тут тоже добавляем в список товары и группы отбора
//врВрем.ПравоеЗначение.Добавить(Группа1);
//врВрем.ПравоеЗначение.Добавить(Товар2);
врХранилище = новый ХранилищеЗначения(ХранилищеНастроекКомпоновкиДанных, Новый СжатиеДанных(9));
//ну и потом уже в сам элемент справочника скидок
ЭлементСкидка.ХранилищеНастроекКомпоновкиДанных = врХранилище;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот