Имя: Пароль:
1C
1С v8
СКД получить данные и по дополнительной расшифровке запустить свой отчет с ними
0 Aradel3d
 
30.07.15
11:33
Добрый день!
Делаю запуск своего отчета по клику в расшифровке (В УПП есть штатный способ вызывать свой отчет как дополнительную расшифровку), затем нужно передавать в него данные изначального отчета. Как к ним можно обратиться и прочесть? Либо как запустить запрос из СКД и выгрузить его? С СКД редко работаю, подскажите плиз.
1 bootini
 
30.07.15
11:46
2 fisher
 
30.07.15
12:04
Я для получения данных из расшифровки вот таким пользуюсь:

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

Функция ПолучитьСтруктуруПолейРасшифровки(ЭлементРасшифровки) Экспорт
    
    МассивЭлементовРасшифровки = ПолучитьМассивРодительскихЭлементовРасшифровки(ЭлементРасшифровки);
    МассивЭлементовРасшифровки.Добавить(ЭлементРасшифровки);
    
    СтруктураПолей = Новый Структура;
    
    Для Каждого текЭлементРасшифровки Из МассивЭлементовРасшифровки Цикл
        
        Для Каждого текПоле Из текЭлементРасшифровки.ПолучитьПоля() Цикл
            
            СтруктураПолей.Вставить(текПоле.Поле, текПоле.Значение);
            
        КонецЦикла;
        
    КонецЦикла;
    
    Возврат СтруктураПолей;
    
КонецФункции    

Функция ПолучитьПараметрыРасшифровываемогоПоля(ИндексЭлементаРасшифровки, АдресДанныхРасшифровкиВоВременномХранилище) Экспорт
    
    СтруктураРезультата = Новый Структура;
    
    ДанныеРасшифровкиОтчета = ПолучитьИзВременногоХранилища(АдресДанныхРасшифровкиВоВременномХранилище);
    
    ЭлементРасшифровки = ДанныеРасшифровкиОтчета.Элементы[ИндексЭлементаРасшифровки];
    
    ИмяРасшифровываемогоПоля = Неопределено;
    ПоляЭлементаРасшифровки = ЭлементРасшифровки.ПолучитьПоля();
    Если ПоляЭлементаРасшифровки.Количество() > 0 Тогда
        ИмяРасшифровываемогоПоля = ПоляЭлементаРасшифровки[0].Поле;
    КонецЕсли;
    
    СтруктураРезультата.Вставить("ИмяПоля", ИмяРасшифровываемогоПоля);
        СтруктураРезультата.Вставить("ПоляГруппировок", УправлениеОтчетами.ПолучитьСтруктуруПолейРасшифровки(ЭлементРасшифровки));
    
    Возврат СтруктураРезультата;
    
КонецФункции
3 fisher
 
30.07.15
12:06
Т.е. просто вызываешь ПолучитьПараметрыРасшифровываемогоПоля(), а оно тебе выдает структуру со значениями группировок.
4 bootini
 
30.07.15
12:15
(3) Спс, при случае попробуем.
5 Aradel3d
 
30.07.15
12:37
Спасибо. Получается кроме группировок, которые в данный момент на экране, вытянуть более ничего нельзя? Но с другой стороны первоначально выводятся начисления и суммы, отчет позволяет додетализировать до сотрудников -> нырнуть в результаты запроса которые не на экране все же можно?
6 fisher
 
30.07.15
13:01
Значения ресурсов в данные расшифровки не попадают. Можно только до текстового значения в табличном документе добраться.
"Нырнуть" никуда нельзя. Детализация по расшифровке выполняется перекомпоновкой отчета.