|   |   | 
| 
 | Программно узнать используется ли параметр в отчете | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Точнее как-то так
 Элемент = Настройки.ПараметрыДанных.Элементы.Найти("ПериодОтчета"); ПользовательЭлемент = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Элемент.ИдентификаторПользовательскойНастройки); Сообщить(ПользовательЭлемент.Использование); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |