Имя: Пароль:
1C
1С v8
Классический вопрос: 2 схемы СКД в отчёте
0 Aswed
 
07.09.20
13:49
САБЖ
Нужно использовать две схемы в одном отчёте.
Формирование произвожу программно, СКД использую для вывода готовых данных.


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

Всё отлично до момента.

ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки()

Эта сволочь получает настройки из схемы указанной по умолчанию. И всё бы ничего, но у меня в одной схеме есть вычисляемые поля, а в другой их нет.
На этом моменте ругается и вылетает с ошибкой.

Если же убираю схему по умолчанию, то настроек нет и отчета нет.

Кто сталкивался с таким, подскажите как обойти эту проблему?
1 Aswed
 
07.09.20
13:59
Вопрос снят.
Вот так можно подпихнуть нужные настройки

МакетКомпановки = КомпоновщикМакета.Выполнить(Схема, Схема.НастройкиПоУмолчанию, ДанныеРасшифровки);
2 toypaul
 
гуру
07.09.20
15:06
делать 2 отчета в одном это извращение. ладно бы в 1С для этого был нормальный интерфейс. но пользователь-то (стандартно) может видеть только одну схему.
предлагаю всегда хорошо подумать прежде чем делать два отчета в одном вместо двух отдельных
3 ДенисЧ
 
07.09.20
15:57
(2) А несколько вариантов одной схемы в отчёте это нормально? ))
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший