Имя: Пароль:
1C
 
СКД: Не устанавливается отбор в ПередЗагрузкойВариантаНаСервере
0 bvb
 
22.01.25
12:00
Добрый день

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



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

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


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

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

Помогите пожалуйста - оченнно нужно
1 toypaul
 
22.01.25
12:59
"Ну и естественно отбор должен отображаться в настройках формы отчета" если ну естественно, то видимо это не настройки варианта, а настройки пользователя
2 DiFas
 
22.01.25
15:12
Вы пробовали использовать типовые процедуры типа "ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка"? Или я не правильно понял вопрос?
3 bvb
 
22.01.25
15:22
(1) Так в инетрнетах прописано

Есть форма- у нее компоновщик настроек
И заряжать типа нужно его. Так в примерах
И именно в ПередЗагрузкойВариантаНаСервере

(2) УстановитьПараметрДинамическогоСписка

т.е. мне зарядить его нужно  ?
А компоновщик настроек СКД про это как узнает ?

К тому же там нельзя задать вид сравнения

Я конечно могу использовать ПриКомпоновкеРезультата но тогда на форме этот не отобразится...
4 rozer76
 
22.01.25
17:49
А если в ПриЗагрузкеПользовательскихНастроекНаСервере?
Оно позже выполняется https://infostart.ru/1c/articles/2112355
5 bvb
 
22.01.25
18:22
(4) Я читал эту статью

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


НЕ работает ни так :  
УстановитьЗначениеОтбора(КомпоновщикНастроек.Настройки, "ВидОперации", СпВидовОпераций, ВидСравненияКомпоновкиДанных.ВСписке, ИСТИНА);
НовыеПользовательскиеНастройкиКД = КомпоновщикНастроек.Настройки;
                
        
ни так :        
УстановитьЗначениеОтбора(Форма.Отчет.КомпоновщикНастроек.Настройки, "ВидОперации", СпВидовОпераций, ВидСравненияКомпоновкиДанных.ВСписке, ИСТИНА);
НовыеПользовательскиеНастройкиКД = Форма.Отчет.КомпоновщикНастроек.Настройки;
6 bvb
 
28.01.25
12:47
Может, кто-то знает пример отчетов в типовых, где используется форма отчета и предустанавливаются настройки в базовом варианте отчета?
7 DiMel_77
 
28.01.25
13:15
(6) Пожалуйста - ЗУП Отчет "Результаты проверки учета"
Подробности
Процедура ПередЗагрузкойВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт
    
    
    Для Каждого Отбор Из НовыеНастройкиКД.Отбор.Элементы Цикл
        Если Отбор.ЛевоеЗначение <> Новый ПолеКомпоновкиДанных("Ответственный") Тогда
            Продолжить;
        КонецЕсли;
        
        ПравоеЗначениеОтбора = Отбор.ПравоеЗначение;// СписокЗначений
        ПравоеЗначениеОтбора.Добавить(Пользователи.ТекущийПользователь());
        ПравоеЗначениеОтбора.Добавить(Справочники.Пользователи.ПустаяСсылка(), НСтр("ru = 'Без ответственного'"));
        Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
        Если Пользователи.ЭтоПолноправныйПользователь() Тогда
            Отбор.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
        КонецЕсли;
    КонецЦикла;

8 bvb
 
30.01.25
15:20
(7) Спасибо огромное. Очень помогли

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

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

Для Каждого Отбор Из НовыеНастройкиКД.Отбор.Элементы Цикл
            
Если Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент") Тогда
                
    Отбор.ПравоеЗначение     = СпКонтрагентов;
    Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    Отбор.Использование = ЛОЖЬ;  //значения отбора предустановлены, но см отбор выключен
                
ИначеЕсли Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВидОперации") Тогда
                
    Отбор.ПравоеЗначение = СпВидовОпераций;
    Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
                
КонецЕсли;
                    
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
    Отбор.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
КонецЕсли;  
            
КонецЦикла;
AdBlock убивает бесплатный контент. 1Сергей