Имя: Пароль:
1C
 
СКД: Как сделать расшифровку при заданном предопределённом макете?
0 Лойфер
 
30.03.09
11:26
Добрый день!
Стандартная расшифровка СКД (Системы Компоновки Данных) позволяет расшифровать любое поле табличного документа. Однако, стоит указать полю предопределённый макет с параметром - расшифровка сразу же пропадает. Книжка Хрусталёвой "Разработка сложных отчётов в 1С:Предприятии 8" касается только вершины айсберга. И в примерах с расшифровкой использует стандартные макеты :(
Может Параметр надо как-то по особому обзывать или что-то эдакое писать в Параметре расшифровки (по идее там должен быть объект типа ИдентификаторРасшифровки)?

Подскажите, пожалуйста!
1 IronDemon
 
30.03.09
11:28
Программно выводишь?
2 Лойфер
 
30.03.09
11:32
Пробовал выводить НЕ программно. Только заводишь макет для поля - любого - расшифровка моментом отрубается.
3 Krom
 
30.03.09
11:35
(2), выводи программно
Перем ТЗ Экспорт;

Процедура ВывестиОтчет() Экспорт

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

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

КонецПроцедуры
4 Лойфер
 
30.03.09
11:43
(3) Я верно понимаю, что заполнять Расшифровку параметра надо в этом цикле? :
   ЭлементРезультата = ПроцессорКомпоновки.Следующий();
   Пока ЭлементРезультата <> Неопределено Цикл
       ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
   КонецЦикла;
5 Лойфер
 
30.03.09
11:57
Что-то у меня работает ни разу ваш код. Если заполнить ДанныеРасшифровки неопределённым, то отчёт вообще вылезет пустым. Где заполнять параметр расшифровки в переменной ЭлементРезультата тоже неясно.
Можно попросить пару комментариев к коду?
6 Лойфер
 
30.03.09
12:09
Хотя насчёт ДанныеРасшифровки = Неопределено; я погорячился - эта строка бесполезна полностью. Одним словом приведённый код мне ничем не помог.
7 Лойфер
 
30.03.09
12:28
Да даже если бы можно было писать в ЭлементРезультата - это бы мне не сильно помогло. Выходит что в СКД либо красивое оформление либо расшифровка... либо у меня лыжи не едут :)

Неужели никто не писал ДЕЙСТВИТЕЛЬНО сложных отчётов в СКД??
8 AquaKosh
 
30.03.09
12:53
(7) Сложность-то бывает разная. :) У кого-то навороченное получение данных, но типовая расшифровка, а у кого-то - свои макеты. :)
9 Лойфер
 
30.03.09
12:58
(8) Ну, понятное дело, я не хотел ни кого обидеть :). Придётся опять изголяться - уберу предопределённые макеты для детальных полей-ресурсов и создам свой макет оформления. Может прокатит...
Независимо от того, куда вы едете — это в гору и против ветра!