![]() |
|
Установить программный отбор номенклатуры в скидках УТ | ☑ | ||
---|---|---|---|---|
0
noffkj
04.08.20
✎
15:28
|
Необходимо программно установить отбор в скидках.
Сам отбор я сделал. Настройки = Схема.НастройкиПоУмолчанию; КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроекДанных.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); ДоступноеПоле = КомпоновщикНастроекДанных.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Номенклатура")); ЭлементОтбора = КомпоновщикНастроекДанных.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = ДоступноеПоле.Поле; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ЭлементОтбора.ПравоеЗначение = СтрРезультатПоиска.ГруппаТовараСсылка;; ЭлементОтбора.Использование = Истина; Но куда его записывать в элменте справочника СкидкиНаценки так и не нашел. Может кто сталкивался. Подскажите. |
|||
1
noffkj
04.08.20
✎
15:51
|
УТ 11.4
|
|||
2
ks_83
04.08.20
✎
15:54
|
ХранилищеНастроекКомпоновкиДанных
|
|||
3
noffkj
04.08.20
✎
16:37
|
Пробовал.
не работает Хранилище = Новый ХранилищеЗначения(КомпоновщикНастроекДанных.ПолучитьНастройки()); Скидка.ХранилищеНастроекКомпоновкиДанных = Хранилище; |
|||
4
noffkj
04.08.20
✎
16:37
|
Есть такое решение на инфостарте
Для Каждого Строка Из Объект.ТаблСкидок Цикл ФормаЗаписи = ПолучитьФорму("Справочник.СкидкиНаценки.Форма.ФормаЭлемента"); СтруктураСвойств = Новый Структура; // Структура содержит значения тех реквизитов, которые нужно заполнить на форме нового документа, но которых нет в документе-источнике СтруктураСвойств.Вставить("Наименование",""+Строка.Поставщик + " - " +Строка.Соглашение+ ", " +Строка.Скидка+ "%, " +Строка.Группа+ "/" +Строка.Код1+ "/" +Строка.Код2+ "/" +Строка.Код3); СтруктураСвойств.Вставить("ЗначениеСкидкиНаценки", Строка.Скидка); СтруктураСвойств.Вставить("ВариантОтбораНоменклатуры", ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных")); ФормаЗаписи.Элементы.ОтборПредставление.Видимость = (ФормаЗаписи.Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных")); ЭлементОтбора = ФормаЗаписи.КомпоновщикНастроекОтборПоНоменклатуре.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура"); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = "цколыотаьб"; СтруктураСвойств.Вставить("КомпоновщикНастроекОтборПоНоменклатуре", ЭлементОтбора); ЗаполнитьЗначенияСвойств(ФормаЗаписи.Объект,СтруктураСвойств,"Наименование,ЗначениеСкидкиНаценки,ВариантОтбораНоменклатуры",); ФормаЗаписи.Открыть(); КонецЦикла; |
|||
5
noffkj
04.08.20
✎
16:57
|
нет идей?
|
|||
6
noffkj
04.08.20
✎
17:53
|
И так. Пришлось сделать через жопу.
Сделал скидку руками в режиме предприятие. Далее получил ее отбор. В структуре заменил отбор на созданный программно. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СкидкиНаценки.Ссылка КАК Ссылка, | СкидкиНаценки.ХранилищеНастроекКомпоновкиДанных КАК Хранилище |ИЗ | Справочник.СкидкиНаценки КАК СкидкиНаценки |ГДЕ | СкидкиНаценки.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Объект.РабочаяСкидка); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Жопа = Выборка.Хранилище.Получить(); КонецЦикла; Настройки = Схема.НастройкиПоУмолчанию; КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроекДанных.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); ДоступноеПоле = КомпоновщикНастроекДанных.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Номенклатура"));//.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Получить(0); ЭлементОтбора = КомпоновщикНастроекДанных.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = ДоступноеПоле.Поле; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии; ЭлементОтбора.ПравоеЗначение = СтрРезультатПоиска.ГруппаТовараСсылка;; ЭлементОтбора.Использование = Истина; Жопа.Запрос.Параметры.П_Кэшируется = СтрРезультатПоиска.ГруппаТовараСсылка; Жопа.ОтборПоНоменклатуре = КомпоновщикНастроекДанных.Настройки; Хранилище = Новый ХранилищеЗначения(Жопа); Скидка.ХранилищеНастроекКомпоновкиДанных = Хранилище; Попытка Скидка.Записать(); Исключение СообщениеПользователю = Новый СообщениеПользователю; СообщениеПользователю.Текст = ОписаниеОшибки(); СообщениеПользователю.Сообщить(); КонецПопытки; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |