Имя: Пароль:
1C
 
Расшифровка не основной схемы СКД
0 dGU
 
02.07.18
01:31
Други хелп. Бьюсь который день!
Задача следующая есть внешний отчет на СКД. В нем две схемы (основная) и не основная, аналогично с формами их тоже две. Все на УФ.
В первом отчет есть расшифровка, она инициализирует открытие второй формы (не основной). Во второй форме, хотим вывести вторую (не основную схему)
Во второй форме, ПриСозданииНаСервере формируем вторую схему, формируется она нормально, но вместо расшифровок, при двойном клике, выводятся цифры - идентификаторы ячейки, расшифровать, открыть, и т.д. не предлагает.

Я сильно думаю что это потому что при генерации ДанныхРасшифровки ее коллекция "Элементы" пустая.

Собстно код:

КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    
    Настройки = КомпоновщикНастроек.Настройки;
    
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); // ТУТ КОЛЛЕКЦИЯ ЭЛЕМЕНТОВ ГЕНЕРИТСЯ ПУСТАЯ!
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки, Истина);
    
    ДокументРезультат = Элементы.Результат;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
    ОтчетОбъект.СкомпоноватьРезультат(Результат, ДанныеРасшифровки);
1 dGU
 
02.07.18
13:29
Up up где знатоки СКД
2 Малыш Джон
 
02.07.18
13:36
...
ДокументРезультат = Элементы.Результат;
...
ПроцессорВывода.УстановитьДокумент(Результат);
...

это так и было задумано?
3 Tonik992
 
02.07.18
13:44
Это нормально,  что там у тебя нет элементов.
Элементы появятся после ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

А то, что у тебя там цифры выводятся, - проверь есть ли реквизит ДанныеРасшифровки и установлено ли в свойствах формы свойство "ДанныеРасшифровки"
4 dGU
 
03.07.18
01:59
Да спасибо. Все верно сказали.

Рабочий код формы расшифровки:

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