Установить программный отбор номенклатуры в скидках УТ 11.3

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

но скидка является не активной тк не установлен отбор по номенклатуре, как этот отбор можно программно установить?
в справочнике есть реквизит ХранилищеНастроекКомпоновкиДанных, возможно в него надо писать?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. iskdv 08.06.17 12:05 Сейчас в теме
нужно посмотреть -- откуда заполняется поле "Предоставляется на" и заполнить его "правильным" вариантом -- "номенклатуру по отбору"
3. samoylov093 13 08.06.17 13:24 Сейчас в теме
(2)Это я сделал вот здесь, оно работает
ЭлементСкидка.ВариантОтбораНоменклатуры = Перечисления.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных;

поле заполняется как "Номенклатуру по отбору", а сам отбор который похож на гиперссылку не знаю как заполнять
4. user671616_nikeefn 08.06.18 15:43 Сейчас в теме
(3) Хоть ты и молчал в личку я решил так...через клиент

Для Каждого Строка Из Объект.ТаблСкидок Цикл
		
		ФормаЗаписи = ПолучитьФорму("Справочник.СкидкиНаценки.Форма.ФормаЭлемента");
		
		  СтруктураСвойств = Новый Структура; // Структура содержит значения тех реквизитов, которые нужно заполнить на форме нового документа, но которых нет в документе-источнике
		  СтруктураСвойств.Вставить("Наименование",""+Строка.Поставщик + " - " +Строка.Соглашение+ ", " +Строка.Скидка+ "%, " +Строка.Группа+ "/" +Строка.Код1+ "/" +Строка.Код2+ "/" +Строка.Код3);
		  СтруктураСвойств.Вставить("ЗначениеСкидкиНаценки", Строка.Скидка);
		  СтруктураСвойств.Вставить("ВариантОтбораНоменклатуры", ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных"));
		  
  		  
		  
		 
		  ФормаЗаписи.Элементы.ОтборПредставление.Видимость = (ФормаЗаписи.Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных"));
		  
		ЭлементОтбора = ФормаЗаписи.КомпоновщикНастроекОтборПоНоменклатуре.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура");
		ЭлементОтбора.Использование = Истина;
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ЭлементОтбора.ПравоеЗначение = "цколыотаьб";
		
		 СтруктураСвойств.Вставить("КомпоновщикНастроекОтборПоНоменклатуре", ЭлементОтбора);
		
		
		
		ЗаполнитьЗначенияСвойств(ФормаЗаписи.Объект,СтруктураСвойств,"Наименование,ЗначениеСкидкиНаценки,ВариантОтбораНоменклатуры",);
		ФормаЗаписи.Открыть();


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

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