Вывод отчета в обработке: Вместо открытия ссылки показывает число
Возникла необходимость сделать вывод отчета на СКД в форме отчета. Отчет сделал, все выводит. Но есть проблемы с расшифровкой:
Вместо открытия ссылок, показывает числа.
Отчет сверочный. Строится по данным из 1С и внешней системы, данные которой передаются как параметр ТЗ в запрос.
Поля ТЗ (проверял отладчиком) типизированы. В СКД для полей указан явно тип (скрин)
Код формирования отчета следующий:
Полагаю, что неправильно в этом куске инициализируется расшифровка. Но понятия не имею, что надо сделать
Вместо открытия ссылок, показывает числа.
Отчет сверочный. Строится по данным из 1С и внешней системы, данные которой передаются как параметр ТЗ в запрос.
Поля ТЗ (проверял отладчиком) типизированы. В СКД для полей указан явно тип (скрин)
Код формирования отчета следующий:
ОтчетТЗ = Отчет.Выгрузить();
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
Настройки = КомпоновщикНастроек.Настройки;
ДругиеНастройки = Настройки.ПараметрыВывода.Элементы;
НачалоПериодаОтбор = НачалоДня(НачалоПериода);
КонецПериодаОтбор = КонецДня(КонецПериода);
//--------
НастройкаНачалоПериода = Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
НастройкаНачалоПериода.Использование = Истина;
НастройкаНачалоПериода.Значение = НачалоПериодаОтбор;
НастройкаКонецПериода = Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
НастройкаКонецПериода.Использование = Истина;
НастройкаКонецПериода.Значение = КонецПериодаОтбор;
НастройкаНачалоОстатки = Настройки.ПараметрыДанных.Элементы.Найти("НачалоОстатки");
НастройкаНачалоОстатки.Использование = Истина;
НастройкаНачалоОстатки.Значение = НачалоПериодаОтбор;
НастройкаКонецПериодаГраница = Настройки.ПараметрыДанных.Элементы.Найти("КонецПериодаГраница");
НастройкаКонецПериодаГраница.Использование = Истина;
НастройкаКонецПериодаГраница.Значение = Новый Граница(КонецДня(КонецПериодаОтбор), ВидГраницы.Включая);
НастройкаТЗ = Настройки.ПараметрыДанных.Элементы.Найти("ТЗ");
НастройкаТЗ.Использование = Истина;
НастройкаТЗ.Значение = ОтчетТЗ;
НастройкаБазоваяВалюта = Настройки.ПараметрыДанных.Элементы.Найти("БазоваяВалюта");
НастройкаБазоваяВалюта.Использование = Истина;
НастройкаБазоваяВалюта.Значение = Справочники.Валюты.НайтиПоНаименованию("руб.");
НастройкаВалютаУправленческогоУчета = Настройки.ПараметрыДанных.Элементы.Найти("ВалютаУправленческогоУчета");
НастройкаВалютаУправленческогоУчета.Использование = Истина;
НастройкаВалютаУправленческогоУчета.Значение = Справочники.Валюты.НайтиПоНаименованию("руб.");
Если ЗначениеЗаполнено(Контрагент) тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Настройки.Отбор, "Контрагент", Контрагент, ВидСравненияКомпоновкиДанных.Равно, ,Истина);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Настройки.Отбор, "Контрагент", Контрагент, ВидСравненияКомпоновкиДанных.Равно, ,Ложь);
КонецЕсли;
//--------
лВыводитьЗаголовок = ДругиеНастройки.Найти("ВыводитьЗаголовок");
лВыводитьЗаголовок.Использование = Истина;
лВыводитьЗаголовок.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
лВыводитьПараметрыДанных = ДругиеНастройки.Найти("ВыводитьПараметрыДанных");
лВыводитьПараметрыДанных.Использование = Истина;
лВыводитьПараметрыДанных.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетОформленияКомпоновкиДанных = ПолучитьМакет("МакетОформленияКомпоновкиДанныхПесок");
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, МакетОформленияКомпоновкиДанных);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);
ТабДок.Очистить();
Макет = ПолучитьМакет("Макет");
ОбластьМакетаШапки = Макет.ПолучитьОбласть("ШапкаОтчета");
ОбластьМакетаШапки.Параметры.НадписьДаты = Формат(ТекущаяДата(),"ДЛФ=DDT");
ТабДок.Вывести(ОбластьМакетаШапки);
ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб=Истина;
ТабДок.ФиксацияСлева = 3;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ТабДок.ПоказатьУровеньГруппировокСтрок(УровеньГруппировки);
ПоказатьПолагаю, что неправильно в этом куске инициализируется расшифровка. Но понятия не имею, что надо сделать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
В процедуре формирования табличного документа нужно поместить схему и данные расшифровки во временное хранилище И переопределить событие ТабДока ОбработкаРасшифровки:
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
АдресРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
&НаКлиенте
Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтандартнаяОбработка = Ложь;
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
ОбработкаРасшифровки.ПоказатьВыборДействия(Новый ОписаниеОповещения("ПослеВыбораДействия", ЭтотОбъект), Расшифровка, , , Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораДействия(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт
Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
ПоказатьЗначение(, ПараметрВыполненногоДействия)
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В процедуре формирования табличного документа нужно поместить схему и данные расшифровки во временное хранилище И переопределить событие ТабДока ОбработкаРасшифровки:
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор);
АдресРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
&НаКлиенте
Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтандартнаяОбработка = Ложь;
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
ОбработкаРасшифровки.ПоказатьВыборДействия(Новый ОписаниеОповещения("ПослеВыбораДействия", ЭтотОбъект), Расшифровка, , , Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораДействия(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт
Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
ПоказатьЗначение(, ПараметрВыполненногоДействия)
КонецЕсли;
КонецПроцедуры
Показать
Либо получать значение поля прямо из элемента расшифровки (тоже потребует хранить данные расшифровки во временном хранилище):
&НаКлиенте
Процедура ТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") тогда
Значение = ПолучитьЗначениеРасшифровки(АдресРасшифровки, Расшифровка);
ПоказатьЗначение(, Значение);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьЗначениеРасшифровки(Знач АдресРасшифровки, Знач Расшифровка)
Результат = Неопределено;
ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресРасшифровки);
ЭлементРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка];
Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
Поля = ЭлементРасшифровки.ПолучитьПоля();
Если Поля.Количество() > 0 Тогда
Результат = Поля[0].Значение;
КонецЕсли;
КонецЕсли;
Возврат Результат
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот