Возникла необходимость сделать вывод отчета на СКД в форме отчета. Отчет сделал, все выводит. Но есть проблемы с расшифровкой:
Вместо открытия ссылок, показывает числа.
Отчет сверочный. Строится по данным из 1С и внешней системы, данные которой передаются как параметр ТЗ в запрос.
Поля ТЗ (проверял отладчиком) типизированы. В СКД для полей указан явно тип (скрин)
Код формирования отчета следующий:

```1c
    ОтчетТЗ = Отчет.Выгрузить();

    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    Настройки = КомпоновщикНастроек.Настройки;
    ДругиеНастройки = Настройки.ПараметрыВывода.Элементы;

    НачалоПериодаОтбор = НачалоДня(НачалоПериода);
    КонецПериодаОтбор = КонецДня(КонецПериода);

    //--------
    НастройкаНачалоПериода = Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
    НастройкаНачалоПериода.Использование = Истина;
    НастройкаНачалоПериода.Значение = НачалоПериодаОтбор;

    НастройкаКонецПериода = Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
    НастройкаКонецПериода.Использование = Истина;
    НастройкаКонецПериода.Значение = КонецПериодаОтбор;

    НастройкаНачалоОстатки = Настройки.ПараметрыДанных.Элементы.Найти("НачалоОстатки");
    НастройкаНачалоОстатки.Использование = Истина;
    НастройкаНачалоОстатки.Значение = НачалоПериодаОтбор;

    НастройкаКонецПериодаГраница = Настройки.ПараметрыДанных.Элементы.Найти("КонецПериодаГраница");
    НастройкаКонецПериодаГраница.Использование = Истина;
    НастройкаКонецПериодаГраница.Значение = Новый Граница(КонецДня(КонецПериодаОтбор), ВидГраницы.Включая);

    НастройкаТЗ = Настройки.ПараметрыДанных.Элементы.Найти("ТЗ");
    НастройкаТЗ.Использование = Истина;
    НастройкаТЗ.Значение = ОтчетТЗ;

    НастройкаБазоваяВалюта = Настройки.ПараметрыДанных.Элементы.Найти("БазоваяВалюта");
    НастройкаБазоваяВалюта.Использование = Истина;
    НастройкаБазоваяВалюта.Значение = Справочники.Валюты.НайтиПоНаименованию("руб.");

    НастройкаВалютаУправленческогоУчета = Настройки.ПараметрыДанных.Элементы.Найти("ВалютаУправленческогоУчета");
    НастройкаВалютаУправленческогоУчета.Использование = Истина;
    НастройкаВалютаУправленческогоУчета.Значение = Справочники.Валюты.НайтиПоНаименованию("руб.");

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

    лВыводитьЗаголовок = ДругиеНастройки.Найти("ВыводитьЗаголовок");
    лВыводитьЗаголовок.Использование = Истина;
    лВыводитьЗаголовок.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;

    лВыводитьПараметрыДанных = ДругиеНастройки.Найти("ВыводитьПараметрыДанных");
    лВыводитьПараметрыДанных.Использование = Истина;
    лВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    МакетОформленияКомпоновкиДанных = ПолучитьМакет("МакетОформленияКомпоновкиДанныхПесок");

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, МакетОформленияКомпоновкиДанных);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);

    ТабДок.Очистить();
    Макет = ПолучитьМакет("Макет");
    ОбластьМакетаШапки = Макет.ПолучитьОбласть("ШапкаОтчета");
    ОбластьМакетаШапки.Параметры.НадписьДаты = Формат(ТекущаяДата(),"ДЛФ=DDT");
    ТабДок.Вывести(ОбластьМакетаШапки);

    ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
    ТабДок.АвтоМасштаб=Истина;
    ТабДок.ФиксацияСлева = 3;

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ТабДок);

    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);
```

Полагаю, что неправильно в этом куске инициализируется расшифровка. Но понятия не имею, что надо сделать
---
В процедуре формирования табличного документа нужно поместить схему и данные расшифровки во временное хранилище
```1c
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
    АдресРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
```
 И переопределить событие ТабДока ОбработкаРасшифровки:
```1c
    &НаКлиенте
    Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)

    СтандартнаяОбработка = Ложь;

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

    КонецПроцедуры

    &НаКлиенте
    Процедура ПослеВыбораДействия(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт

    Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
    ПоказатьЗначение(, ПараметрВыполненногоДействия)
    КонецЕсли;

    КонецПроцедуры
```
---
Да, вот это ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; сбрасывает всю расшифровку.
---
Так вам же надо использовать пользовательские отборы. В настройках находите идентификатор, а уже в пользовательских отборах находите по идентификатору и уже берете значение.
---
В процедуре формирования табличного документа нужно поместить схему и данные расшифровки во временное хранилище
```1c
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
    АдресРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
```
 И переопределить событие ТабДока ОбработкаРасшифровки:
```1c
    &НаКлиенте
    Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)

    СтандартнаяОбработка = Ложь;

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

    КонецПроцедуры

    &НаКлиенте
    Процедура ПослеВыбораДействия(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт

    Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
    ПоказатьЗначение(, ПараметрВыполненногоДействия)
    КонецЕсли;

    КонецПроцедуры
```
---
Огромное спасибо! В очередной раз крепко жму Вашу трехпалую руку!
---
А могли бы вы подсказать как программно делать расшифровку суммы по регистраторам в отчете выведеном в ТабличныйДокумент обработки? А то во всех примерах что находил все показывают для открытия ссылочных данных через ПоказатьЗначение().
---
Либо получать значение поля прямо из элемента расшифровки (тоже потребует хранить данные расшифровки во временном хранилище):
```1c
    &НаКлиенте
    Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)

    СтандартнаяОбработка = Ложь;

    Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") тогда
    Значение = ПолучитьЗначениеРасшифровки(АдресРасшифровки, Расшифровка);
    ПоказатьЗначение(, Значение);
    КонецЕсли;

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьЗначениеРасшифровки(Знач АдресРасшифровки, Знач Расшифровка)
    Результат = Неопределено;
    ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресРасшифровки);
    ЭлементРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка];
    Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
    Поля = ЭлементРасшифровки.ПолучитьПоля();
    Если Поля.Количество() > 0 Тогда
    Результат = Поля[0].Значение;
    КонецЕсли;
    КонецЕсли;

    Возврат Результат
    КонецФункции
```
---
в параметрах формы надо указать реквизит, будет работать без дописок.