Имя: Пароль:
1C
 
СКД: объединение 2-х отчетов в 1
0 extrim-style
 
18.08.16
11:25
Подскажите, как лучше объединить 2 отчета, имеющих разные источники данных, в 1 с возможностью выбора необходимого отчета через параметр.
Есть условия: не создавать свою форму, использовать минимум кода.
1 extrim-style
 
18.08.16
12:00
1. Создал 2 макета СКД.
2. В каждом макете создал параметр со списком наименований макетов и вывел его в пользовательские настройки.
3. В модуль объекта добавил следующий код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    НаименованиеПараметра = "Продукт";
    ИдентификаторПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).ИдентификаторПользовательскойНастройки;
    НастройкаПараметра = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПараметра);
    Параметр = ?(НастройкаПараметра <> Неопределено, НастройкаПараметра.Значение, КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(НаименованиеПараметра).Значение);
    Схема = ПолучитьМакет(Параметр);
    ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
    КомпоновщикНастроек.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
    КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПользовательскиеНастройки);
    
КонецПроцедуры

Вроде бы работает. Всем спасибо за внимание).
2 extrim-style
 
19.08.16
14:47
Обнаружил еще способ: использование вложенных схем.
1. Создал новую схему без данных, добавил в неё необходимые параметры.
2. Создал необходимые вложенные схемы (через сохранить/загрузить).
3. Параметры вложенных схем привязал к основным параметрам.
4. В настройках (в структуре отчета) добавил 2 вложенных (в виде схем) ранее отчета.
5. Включение/отключение необходимых флагов структуры делаю следующим образом:

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

Не знаю, какой из этих способов лучше. Хотелось бы обойтись совсем без кода.
3 extrim-style
 
22.08.16
09:12
+(2) сократил код (Программно узнать используется ли параметр в отчете):
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    Продукт = Настройки.ПараметрыДанных.Элементы.Найти("Продукт").Значение;
    Для каждого Эл из КомпоновщикНастроек.Настройки.Структура Цикл
        Эл.Использование = Эл.ИдентификаторОбъекта = Продукт;
    КонецЦикла;
4 DrZombi
 
гуру
22.08.16
09:16
Молодца, нечего непонятно, но я рад за вас :)
5 DrZombi
 
гуру
22.08.16
09:17
Для справки и более подробно

Использование нескольких схем компоновки данных в одном отчете
http://1cskd.ru/2010/07/ispolzovanie-neskolkix-sxem-komponovki-dannyx-v-odnom-otchete/
6 vicof
 
22.08.16
09:17
Вариант отчета не?
7 extrim-style
 
22.08.16
09:17
(4) спасибо, я знал, что я не напрасно тружусь)
8 extrim-style
 
22.08.16
09:18
(6) не, т.к. нет быстрого выбора
9 extrim-style
 
22.08.16
09:18
(5) устарело...
10 DrZombi
 
гуру
22.08.16
09:37
(9) Чем устарело? 1С новее нечего не придумало :)
11 extrim-style
 
22.08.16
09:44
(10) кнопки "Выбрать вариант..." раньше не было на форме по умолчанию, а так - http://catalog.mista.ru/public/173309/
12 extrim-style
 
22.08.16
09:47
+(3) надо добить обработкой флага использования:)
    Продукт = КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных.Элементы.Найти("Продукт");
    Для каждого Эл из КомпоновщикНастроек.Настройки.Структура Цикл
        Эл.Использование = ?(Продукт.Использование, Эл.ИдентификаторОбъекта = Продукт.Значение, Ложь);
    КонецЦикла;
13 extrim-style
 
22.08.16
09:50
(12) вобще лучше использование "всегда" сделать...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой