Я когда-то писал заметку (http://pro1c.org.ua/index.php?showtopic=13696) по расшифровке в СКД. Сейчас я дополню то, что писал и напишу немного нового.
В двух словах о проблеме. Есть макет типа "схема компоновки данных". Там программно заполняются параметры и компонуется отчет. Но в результате даже у ссылочных полей не работает расшифровка. Как сделать что бы заработало - читайте далее.
Отчет формируется по нажатию кнопки кодом типа такого:
НастройкиСКД = КомпоновщикНастроек.Настройки;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ДанныеРасшифровкиОтчета = Новый ДанныеРасшифровкиКомпоновкиДанных;
НастройкиСКД.ПараметрыДанных.Элементы.Найти("Номенклатура").Значение = Справочники.Номенклатура.НайтиПоКоду("1"); // заполняем какие-то параметры
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровкиОтчета);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровкиОтчета);
ДокументРезультат = ЭлементыФормы.Результат;
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ДокументРезультат.Показать();
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровкиОтчета, Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных")) );
МассивДоступныхДействий = Новый Массив;
МассивДоступныхДействий.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
НастройкиРасшифровки = ОбработкаРасшифровки.Выполнить(Расшифровка,, МассивДоступныхДействий);
КонецПроцедуры
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровкиОтчета, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
ПолеРасшифровки = ДанныеРасшифровкиОтчета.Элементы[Расшифровка].ПолучитьПоля()[0];
Если ПолеРасшифровки.Поле = "Контрагент" ИЛИ
ПолеРасшифровки.Поле = "Документ" Тогда
Ссылка = ПолеРасшифровки.Значение;
ОткрытьЗначение(Ссылка);
КонецЕсли;
КонецПроцедуры
Vofka @ 22.04.14, 21:17
,
Это отлично работает в обычной форме.
А в управляемой не получается совместить в одной процедуре получение макета и переменную ДанныеРасшифровкиОтчета. Ведь эта переменная должна быть объявлена в модуле формы как клиентская, а не серверная. А "Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)" нужно выполнять на сервере и обратно на клиент его не получается передать.
Как программно работать с расшифровкой в СКД на управляемых формах?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua