При стандартном формировании отчета на СКД в расшифровке хранится идентификатор расшифровки, при этом объекты ссылочного типа не открываются. Таким образом, если сохранить табличный документ в формате mxl, а затем его снова открыть, то при клике в ячейку открывается идентификатор расшифровки(просто число), а не сам объект, ссылка на который была сохранена
Чтобы победить эту проблему, необходимо заменить значение расшифровки в ячейках табличного документа просто на объекты ссылочного типа
Процедура ОбработатьРасшифровкиОтчетаНаСКД(ТабДок, ДанныеРасшифровки)
Если ТабДок.ШиринаТаблицы * ТабДок.ВысотаТаблицы > 10000 Тогда
Ответ = Вопрос("You are about to save document " + ТабДок.ШиринаТаблицы + " x " + ТабДок.ВысотаТаблицы + " in dimensions.
|This will take at least " + Цел(ТабДок.ШиринаТаблицы * ТабДок.ВысотаТаблицы/700) + " sec. Are you sure?", РежимДиалогаВопрос.ДаНет,,, Метаданные().Синоним);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат
КонецЕсли;
КонецЕсли;
Состояние("Окучиваем табличный документ...");
ПрошлоВремени = ТекущаяДата();
ТипВсеСсылкиСправочники = Справочники.ТипВсеСсылки();
ТипВсеСсылкиДокументы = Документы.ТипВсеСсылки();
КэшНужныхТипов = Новый Соответствие;
Для Каждого Тип Из ТипВсеСсылкиСправочники.Типы() Цикл
КэшНужныхТипов.Вставить(Тип, Истина);
КонецЦикла;
Для Каждого Тип Из ТипВсеСсылкиДокументы.Типы() Цикл
КэшНужныхТипов.Вставить(Тип, Истина);
КонецЦикла;
Для Row = 1 По ТабДок.ВысотаТаблицы Цикл
Для Col = 1 По ТабДок.ШиринаТаблицы Цикл
Ячейка = ТабДок.Область(Row, Col);
Если ТипЗнч(Ячейка.Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
// Так же из данных расшифровки возьмем ссылку на номенклатуру
//МассивПолейРасшифровки = ТиповыеОтчеты.ПолучитьМассивПолейРасшифровки(Ячейка.Расшифровка, ДанныеРасшифровки);
ЭлементРасшифровки = ДанныеРасшифровкиКонсоли.Элементы[Ячейка.Расшифровка];
Если ЭлементРасшифровки.ОсновноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
МассивПолейРасшифровки = ЭлементРасшифровки.ПолучитьПоля();
Для Каждого ЭлементМассива Из МассивПолейРасшифровки Цикл
ТипЗначения = ТипЗнч(ЭлементМассива.Значение);
Если ТипЗнч(ЭлементМассива) = Тип("ЗначениеПоляРасшифровкиКомпоновкиДанных")
И (КэшНужныхТипов.Получить(ТипЗначения) = Истина)
И ЭлементМассива.Иерархия = Ложь Тогда
Ячейка.Расшифровка = ЭлементМассива.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбработкаПрерыванияПользователя();
КонецЦикла;
КонецЦикла;
ПрошлоВремени = ТекущаяДата()-ПрошлоВремени;
Сообщить("Затрачено времени на выполнение процесса: "+Формат('00010101'+ПрошлоВремени,"ДЛФ=T; ДП=0")+" сек");
КонецПроцедуры
После того как расшифровка табличного документа будет доработана, его можно будет сохранить в формате mxl и впоследствии открыть в этой же базе, при этом сохранится возможность открывать объекты ссылочного типа.
Про расшифровку табличного документа на сайте ИТС
В качестве примера доработанная Консоль отчетов СКД+ (обычное приложение).