Приветствую Вас ГостьВоскресенье, 19.05.2024, 03:03

Каталог статей


Передача параметров и отборов в вложенную схему

Передача параметров в вложенную схему не составляет проблем. После того, как создали вложенную схему заходим в настройки и заполняем значения параметров из параметров данных владельца.

После этого в настройке варианта отчета добавляем вложенный отчет. Параметры заполняются автоматически настройками, выполненными на предыдущем шаге.

С помощью этого механизма можно настраивать контекстно-зависимые отчеты, если в значение параметра выбрать реквизит родительского отчета.

Можно сразу здесь настраивать значения параметров без предварительной настройки.

С передачей отбора сложнее и так не получиться. Я решил задачу с помощью процедуры ПриКомпоновкеРезультата()

Текст процедуры:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ВложеннаяСхема = Неопределено;
    СтруктураСКД = КомпоновщикНастроек.Настройки.Структура;
    
    //Сначала убеждаемся, что в варианте отчета есть вложенная схема с нужным наименованием
    Для каждого ЭС из СтруктураСКД Цикл
        Если ТипЗНЧ(ЭС) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") И ЭС.ИдентификаторОбъекта = "Корректировки" Тогда
            ВложеннаяСхема = ЭС;
        КонецЕсли;
    КонецЦикла;
    
    //ЕСли вложенной схемы нет, то дальше СКД сама работает
    Если ВложеннаяСхема = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    //Значение отбора сможем получить в пользовательских настройках, но там нет ЛевоеЗначение, 
    //поэтому формируем соотвествие из настроек отбора по идентификатору чтобы потом определить левое значение
    ЭлементыОтбора  = КомпоновщикНастроек.Настройки.Отбор.Элементы;
    ЛевыеЗначения = Новый Соответствие();
    Для Каждого ЭлементОтбора из ЭлементыОтбора Цикл
        ЛевыеЗначения.Вставить(ЭлементОтбора.ИдентификаторПользовательскойНастройки,ЭлементОтбора.ЛевоеЗначение);
    КонецЦикла;
    
    //Перебираем пользовательские настройки и начинаем заполнять отбор вложенной схемы если:
    //    тип пользовательской настройки =  ЭлементОтбораКомпоновкиДанных и элемент отбора используется
    ПользовательскиеНастройки =  КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    Для каждого настройкаОтбора из  ПользовательскиеНастройки Цикл
        Если ТипЗНЧ(настройкаОтбора)= Тип("ЭлементОтбораКомпоновкиДанных") Тогда
            
            //Чтобы не зациклилось проверяем на заполненность ИдентификаторПользовательскойНастройки, а в создаваемых элементах отбора это свойство не заполняем.
            Если настройкаОтбора.Использование И ЗначениеЗаполнено(настройкаОтбора.ИдентификаторПользовательскойНастройки) Тогда
                
                //Создаем в настройках вложенной схемы элемент отбора и заполняем его
                НовыйЭлементОтбора =ВложеннаяСхема.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));                                
                ЗаполнитьЗначенияСвойств(НовыйЭлементОтбора, настройкаОтбора,"ВидСравнения,Использование,ПравоеЗначение");                                        
                НовыйЭлементОтбора.ЛевоеЗначение = ЛевыеЗначения.Получить(настройкаОтбора.ИдентификаторПользовательскойНастройки);
            КонецЕсли;
            
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

Категория: СКД | Добавил: leshic (22.05.2020)
Просмотров: 867 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0