Имя: Пароль:
1C
1С v8
Расшифровка в СКД
,
0 leoway
 
23.04.13
14:57
Всем доброго времени суток. Возник вопрос по расшифровке данных в отчете. Прошу помощи.

Вызываю процедуру (см. ниже) из документа. Создал в документе поле "ТабличныйДокумент" - "Календарь" и заполняю его данными из отчета "ГрафикПоДоговоруПоРегистр" построенного на СКД.

Вопрос следующий: почему-то в место расшифровки выдаются числа.
Как поправить?

Заранее спасибо.

&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
 Календарь.Очистить();
 Календарь = ПечатьГрафикПоДоговору();
 Календарь.ПоказатьУровеньГруппировокСтрок(1);  
 Календарь.ПоказатьУровеньГруппировокСтрок(2);

   КонецЕсли;                                                                                          
КонецПроцедуры

&НаСервере
Функция ПечатьГрафикПоДоговору()

   ДокументОбъект = РеквизитФормыВЗначение("Объект");
       
   СхемаКомпоновкиДанных = Отчеты.ГрафикПоДоговоруПоРегистр.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
   //СхемаКомпоновкиДанных = УстановитьСхему();
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   Настройки.ПараметрыДанных.Элементы[0].Значение = ?(ЗначениеЗаполнено(ДокументОбъект.ОсновнойДоговор), ДокументОбъект.ОсновнойДоговор, ДокументОбъект.Ссылка);
   //Настройки = УстановитьНастройки(СхемаКомпоновкиДанных);
   //КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
     
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   //ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);
       
   ДокументРезультат = Новый ТабличныйДокумент;
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

   
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   

   Возврат ДокументРезультат;
КонецФункции
1 cw014
 
23.04.13
14:57
Не числа, а Идентификаторы расшифровки результата.
2 cw014
 
23.04.13
14:59
Точнее это тип ИдентификаторРасшифровкиКомпоновкиДанных
3 cw014
 
23.04.13
14:59
ОписаниеОбработкиРасшифровкиКомпоновкиДанных.По умолчанию (DataCompositionDetailsProcessDescription.Default)
ОписаниеОбработкиРасшифровкиКомпоновкиДанных (DataCompositionDetailsProcessDescription)
Основной
Синтаксис:

Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(<Данные>, <Идентификатор>, <ПрименяемыеНастройки>)
Параметры:

<Данные> (необязательный)

Тип: Строка; Неопределено.
Адрес хранилища, из которого нужно получать данные расшифровки.
<Идентификатор> (необязательный)

Тип: ИдентификаторКомпоновкиДанных; Неопределено.
Идентификатор расшифровки.
<ПрименяемыеНастройки> (необязательный)

Тип: Настройки компоновки данных; Неопределено.
Настройки, применяемые для расшифровки.
Описание:

Создает описание обработки расшифровки компоновки данных
4 cw014
 
23.04.13
14:59
В общем поколупайся в СП - вдруг что умное вычитаешь
5 leoway
 
23.04.13
15:05
а какой-нибудь пример можно?
6 cw014
 
23.04.13
15:06
О ты какой. Я "какой нибудь" пример писал около двух суток
7 cw014
 
23.04.13
15:07
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

ТекРасшифровка = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
ТекущаяРасшифровка = ДанныеРасшифровки.Элементы[Расшифровка];
   РодителиТекущейРасшифровки = ТекущаяРасшифровка.ПолучитьРодителей();
   ПоляТекущейРасшифровки = ТекущаяРасшифровка.ПолучитьПоля();
   
   Если ПоляТекущейРасшифровки.Количество() > 0 Тогда
       ПолеТекущейРасшифровки = ПоляТекущейРасшифровки[0];
   Иначе
       ПолеТекущейРасшифровки = Неопределено;
   КонецЕсли;
8 leoway
 
23.04.13
15:09
вопрос тогда: почему теряются расшифровка?
9 leoway
 
23.04.13
15:09
(7) спасибо.
10 cw014
 
23.04.13
15:12
(9) Спасибо много - 300 р в самый раз
11 leoway
 
06.05.13
11:33
Всем доброго времени суток. Потихоньку разобрался как расшифровывать данные в отчет. Ниже приводу пример, как это можно реализовать.

Дополнительно в реквизитом формы добавил: мДанныеРасшифровки, АдресХранилищаСКД - тип "Строка" 100 символов. Для передачи данных с клиента на сервер.

Надеюсь, что  кому-то помог своим комментарием.

P.S. (10) 300р. это что-то много для форума, где все призваны друг другу помочь. Хочешь помочь помогай, не хочешь не разводи флуд.


&НаКлиенте
Процедура ОтчетНаш(Команда)
   РезультатОтчет = ОтчетНашПечать();    
КонецПроцедуры

&НаСервере
Функция   ОтчетНашПечать()

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


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