Имя: Пароль:
1C
1С v8
Программно узнать используется ли параметр в отчете
0 itbchern
 
22.08.16
07:54
Здравствуйте
Знаю, что вопрос скорее всего уже где-то поднимался, но не смог найти ответа
Как в модуле объекта отчета узнать, используется ли какой-то определенный параметр (т.е. стоит ли у него галочка на форме)
1С 8.3, делаю отчет на СКД, программно заполняю набор данных- объект
1 extrim-style
 
22.08.16
08:36
ИдентификаторПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).ИдентификаторПользовательскойНастройки;
    НастройкаПараметра = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПараметра);
    ИспользованиеПараметра = ?(НастройкаПараметра <> Неопределено, НастройкаПараметра.Использование, КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).Использование);
2 extrim-style
 
22.08.16
08:36
+(1) если не установлено - по умолчанию
3 ASU_Diamond
 
22.08.16
08:39
я так делал:
    Для каждого лЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если лЭлементОтбора.Использование Тогда
            Если лЭлементОтбора.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Номенклатура") Тогда
                            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
4 extrim-style
 
22.08.16
08:45
(3) так ты не получишь значение, изменённое пользователем на форме
5 Зая Бусечка
 
22.08.16
08:50
Надо не КомпоновщикНастроек.Настройки
а

настройки = КомпоновщикНастроек.ПолучитьНАстройки();

И отсюда уже плясать.
6 extrim-style
 
22.08.16
09:02
(5) кстати да, спасибо.
7 ASU_Diamond
 
22.08.16
09:09
(4) работает всё. Хотя этот код написан давно, в (1) более правильный.
8 DrZombi
 
гуру
22.08.16
09:15
Зачем это все?
Там есть параметр "Использовать ВСЕГДа" :)
9 extrim-style
 
22.08.16
09:16
(7) судя по всему у тебя отбор выведен на форму. В отборе параметры нельзя использовать, а в (0) вопрос именно о параметрах, а не об отборе.
10 itbchern
 
23.08.16
18:32
То ли лыжи, то ли я...
Если стандартно отключено использование элемента в СКД- то возвращается "Нет", в противном случае- "Да"
Тыкание галочки вручную на результат не влияет
Пробовал получать настройки и "КомпоновщикНастроек.Настройки", и "КомпоновщикНастроек.ПолучитьНастройки"
Такое ощущение что он просто получает настройки по умолчанию и больше ничего не хочет
Вот мой пример

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

Вариант из (1) не сработал
11 itbchern
 
23.08.16
18:33
Пытаюсь сделать, кстати, в событии ПриКомпоновкеРезультата()"
12 hitodom
 
23.08.16
18:35
через макет компоновки можно получить результирующий запрос
13 itbchern
 
23.08.16
18:52
Похоже все-таки лыжи

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

Как-то так получилось сделать то, что мне хотелось
14 itbchern
 
23.08.16
18:54
Точнее как-то так

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