8.х Заполнить параметр СКД программно

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

  1. TopicStarter Overlay
    avnovak84
    Offline

    avnovak84

    Регистрация:
    20 сен 2018
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!!!
    Имеется СКД Отчет с параметром "Заказчик", хочу заполнить его допустимыми значениями программно для этого в форме отчета написал несколько вариантов раелизации:


    Код:
    &НаСервере
    Процедура ПриОткрытииНаСервере()
     
        ОтчетКлиент=РеквизитФормыВЗначение("Отчет");
        Настройки =
            ОтчетКлиент.КомпоновщикНастроек.ПолучитьНастройки();
        СЗ=Новый СписокЗначений;
        СЗ.Добавить("123","456");
        Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы[15].ДоступныеЗначения=СЗ;
        //Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы.НайтиПараметр("Заказчик").ПараметрЗаказчик.Значение="13213у";
        ОтчетКлиент.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
     
        СЗ = новый СписокЗначений;
        СЗ.Добавить("Значение 1");
        СЗ.Добавить("Значение 2");
     
        ОтчетКлиент.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Заказчик").ДоступныеЗначения = СЗ;
        //ОтчетКлиент.КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Заказчик").Использование=Истина;
     
     
     
        ЗначениеПараметра = ОтчетКлиент.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
            Новый ПараметрКомпоновкиДанных("Заказчик"));
        СЗ = Новый СписокЗначений;
        СЗ.Добавить("123","456");
        ЗначениеПараметра.Значение = СЗ;
        ЗначениеПараметра.Использование = Истина;
     
        ЗначениеВРеквизитФормы(ОтчетКлиент,"Отчет");
    
     
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
     
        //Элементы.КомпоновщикНастроекПользовательскиеНастройки.
        ПриОткрытииНаСервере();
    КонецПроцедуры

    Но не один не даёт желаемого результата.
    Помогите пожалуйста разобраться.
    Последнее редактирование модератором: 8 окт 2018
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.271
    Симпатии:
    966
    Баллы:
    204
    Чем не устраивает использование типового отбора СКД?
  3. TopicStarter Overlay
    avnovak84
    Offline

    avnovak84

    Регистрация:
    20 сен 2018
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    В общем делается это для того, чтобы отобрать и показать в параметрах отчета только тех сотрудников у которых доверенность, этот параметр хранится в другой таблице.
    Есть ли возможность средствами СКД отфильтровать сотрудников и только потом отобразить их в параметрах.
    --- Объединение сообщений, 29 сен 2018 ---

    Поэксперементировал на другой базе.
    Сделал более простой запрос:
    ВЫБРАТЬ
    Номенклатура.ПолноеНаименование КАК ПолноеНаименование,
    Номенклатура.ЕдИзм КАК ЕдИзм
    ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ГДЕ
    Номенклатура.ЕдИзм.Наименование = &ЕдИзм

    Установил ДопустимыеЗначиения параметра:
    Параметр.png
    Затем создал ФормуОтчета, в её модуле написал:


    &НаСервере
    Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки)
    //Настройки.Элементы[0].Значение="14242";
    ОтчетКлиент=РеквизитФормыВЗначение("Отчет");
    Настройки1=Отчет.КомпоновщикНастроек.ПолучитьНастройки();

    Настройки1.ПараметрыДанных.УстановитьЗначениеПараметра("ЕдИзм","2334");

    СЗ=Новый СписокЗначений;
    СЗ.Добавить("йцукен","йцукен");
    Настройки1.ПараметрыДанных.ДоступныеПараметры.Элементы[0].ДоступныеЗначения=СЗ;


    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки1);
    ЗначениеВРеквизитФормы(ОтчетКлиент,"Отчет");

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

    &НаСервере
    Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
    Н=Настройки;
    КонецПроцедуры

    &НаСервере
    Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
    Н=Настройки;
    КонецПроцедуры

    В результате я получил это:
    Результат.png
    Таким образом, код выделенный жирным цветом - работает, а код выделенный курсивом - не работает, мне нужно заполнить параметр допустимымиЗначениями из модуля формы.
    То есть в списке ДопустимыхЗначений парамета у меня должно было появиться: "йцукен", а не "штука"
    Последнее редактирование: 29 сен 2018
  4. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    7.873
    Симпатии:
    503
    Баллы:
    204
    Чето все сложно как то. Указываете вид сравнения параметра "В списке". И значение равно список значений с вашими сотрудниками.

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