Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   СКД: Не устанавливается отбор в ПередЗагрузкойВариантаНаСервере (http://forums.kuban.ru/f1040/skd_ne_ustanavlivaetsya_otbor_v_peredzagruzkojvariantanaservere-9240302.html)

bvb 27.01.2025 13:55

СКД: Не устанавливается отбор в ПередЗагрузкойВариантаНаСервере
 
Добрый день

Использую ФормуОтчета
Нужно предустановить в СКД отбор (фича в том, что это список значений, и в макете я это сделать не могу).
Ну и естественно отбор должен отображаться в настройках формы отчета



Делаю это в ПередЗагрузкойВариантаНаСервере :

&НаСервере
Процедура ПередЗагрузкойВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт


КомпоновщикНастроекФормы = Форма.Отчет.КомпоновщикНастроек;

СпВидовОпераций = Новый СписокЗначений;
СпВидовОпераций.Добавить(Перечисления.ВидыОперацийРасходнаяНакладная.ПродажаПокупателю);
СпВидовОпераций.Добавить(Перечисления.ВидыОперацийРасходнаяНакладная.ПередачаНаКомиссию);

УстановитьЗначениеОтбора(КомпоновщикНастроекФормы.Настройки, "ВидОперации", СпВидовОпераций, ВидСравненияКомпоновкиДанных.ВСписке, ИСТИНА);

НовыеНастройкиКД = КомпоновщикНастроекФормы.Настройки;

КонецПроцедуры

Процедура УстановитьЗначениеОтбора(Настройки, НазваниеОтбора, ЗначениеОтбора, ВидСравнения, Использование = ИСТИНА) Экспорт

Для Каждого Элемент ИЗ Настройки.Отбор.Элементы Цикл

Если Строка(Элемент.ЛевоеЗначение) = НазваниеОтбора Тогда

Элемент.ВидСравнения = ВидСравнения;
Элемент.ПравоеЗначение = ЗначениеОтбора ;
Элемент.Использование = Использование;

КонецЕсли;
КонецЦикла;

КонецПроцедуры



Вроде вроде по процедурам все отрабатывает :
1. Процедура вызывается
2. Отбор устанавливается в КомпоновщикНастроекФормы.Настройки

но в настройках ФормыОтчета отбор не появляется и при построении отчета не срабатывает


Пробовал также ПриЗагрузкеПользовательскихНастроекНаСервере


НЕ работает ни так :
УстановитьЗначениеОтбора(КомпоновщикНастроек.Настройки, "ВидОперации", СпВидовОпераций, ВидСравненияКомпоновкиДанных.ВСписке, ИСТИНА);
НовыеПользовательскиеНастройкиКД = КомпоновщикНастроек.Настройки;


ни так :
УстановитьЗначениеОтбора(Форма.Отчет.КомпоновщикНастроек.Настройки, "ВидОперации", СпВидовОпераций, ВидСравненияКомпоновкиДанных.ВСписке, ИСТИНА);
НовыеПользовательскиеНастройкиКД = Форма.Отчет.КомпоновщикНастроек.Настройки;

Uho 27.01.2025 18:59

[quote=bvb;49389747]фича в том, что это список значений, и в макете я это сделать не могу[/quote]
Почему? Список значений из перечисления легко устанавливается в схеме.

bvb 28.01.2025 12:32

Из перечисления - да
Но мне всё равно нужно реализовать именно задачу из сабжа.

Так как есть ситуации что отбор нужно заполнять программно

Например мне нужно заполнить предустановленный список контрагентов на основании запроса.

bvb 31.01.2025 11:17

Если кратенько то нужно непосредственно заряжать отбор параметра процедуры НовыеНастройкиКД

И никаких прочих хитростей нет....

Для Каждого Отбор Из НовыеНастройкиКД.Отбор.Элементы Цикл

Если Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент") Тогда

Отбор.ПравоеЗначение = СпКонтрагентов;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
Отбор.Использование = ЛОЖЬ; //значения отбора предустановлены, но см отбор выключен

ИначеЕсли Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВидОперации") Тогда

Отбор.ПравоеЗначение = СпВидовОпераций;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

КонецЕсли;

Если Пользователи.ЭтоПолноправныйПользователь() Тогда
Отбор.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
КонецЕсли;

КонецЦикла;


Текущее время: 18:44. Часовой пояс GMT +3.