8.х Пользовательский отбор при программном формировании отчета на СКД

Тема в разделе "Система компоновки данных (СКД)", создана пользователем Svb, 17 дек 2015.

  1. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Добрый день.
    В схеме СКД поставил отбор (включен в пользовательские настройки).
    Вопрос.jpg
    Установку параметров сделал, как сделать установку отбора при программном формировании отчета.
    В текущем исполнении в строке "Настройки.Отбор.Элементы.Найти(НаименованиеОтбора);" возникает ошибка недоступен метод "Найти()".

    Код:
    &НаСервере
    Процедура УстановитьЗначениеПараметра(Настройки, НаименованиеПараметра, ЗначениеПараметра)
       
        Настройка = Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра);
        Если Настройка <> Неопределено Тогда
            Настройка.Значение = ЗначениеПараметра;   
        КонецЕсли;
       
    КонецПроцедуры
    
    &НаСервере
    Процедура УстановитьЗначениеПользовательскогоОтбора(Настройки, НаименованиеОтбора, ЗначениеОтбора)
       
        Настройка = Настройки.Отбор.Элементы.Найти(НаименованиеОтбора);
        Если Настройка <> Неопределено Тогда
            Настройка.Значение = ЗначениеОтбора;   
        КонецЕсли;
       
    КонецПроцедуры
    
    &НаСервере
    Функция СформироватьОтчетНаСервере()
     
        СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОтчетН1");
    
        
        Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
       
        // Установим параметры
       
        УстановитьЗначениеПараметра(Настройки, "Период", Период);
          
        УстановитьЗначениеПользовательскогоОтбора(Настройки, "Подраздедление", Подразделение);
    
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
        МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
       
        ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
       
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        ПроцессорВывода.УстановитьДокумент(Результат);
        ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
       
    
  2. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Что бы программно установить тебе вот этот отбор нужно что то вроде

    Код:
    Настройки = СхемаКомпоновки.НастройкиПоУмолчанию;
    ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Объект.Контрагент;///Тут значение
    Svb нравится это.
  3. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
  4. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Ну получилось?
  5. TopicStarter Overlay
    Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Да, все получилось. Спасибо

Поделиться этой страницей