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

Тема в разделе "Система компоновки данных (СКД)", создана пользователем msuslov84, 21 ноя 2016.

  1. TopicStarter Overlay
    msuslov84
    Offline

    msuslov84

    Регистрация:
    25 фев 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Добрый день!

    Помогите, люди добрые! Есть отчет на СКД, УФ. У него есть пять параметров с быстрым выбором. Необходимо сделать так, чтобы при выборе определенного значения первого из них (допустим, это "вид справочника") скрывались из панели быстрого отбора два последних параметра. Т.е. шла фильтрация пользовательских настроек в зависимости от конкретного значения одно из параметров. Возможно ли такое сделать?
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    488
    Симпатии:
    87
    Баллы:
    54
    да, но придётся создавать свою форму и программно менять видимость её элементов.
  3. TopicStarter Overlay
    msuslov84
    Offline

    msuslov84

    Регистрация:
    25 фев 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Спасибо! Решил вопрос двумя клиентскими процедурами. Правда не знаю насколько это оптимально, но все работает...

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

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