Имя: Пароль:
1C
 
Заполнить значение отбора в СКД через форму.
0 gsdgdgds
 
05.04.16
15:31
Не заполняет значение отбора. Подскажите в чем косяк. Вот Код:

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

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

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

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

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

    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ИмяПараметра));
    ИДОтбораВНастройках = Параметр.ИдентификаторПользовательскойНастройки;
    
    ОтборВНастройках = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИДОтбораВНастройках);
    ОтборВНастройках.Значение = Значение;
    ОтборВНастройках.Использование = Истина;
    
КонецПроцедуры