Имя: Пароль:
1C
1С v8
Нет расшифровки в СКД. Ремейк.
0 Анцеранана
 
05.06.12
10:40
Друзья , изучил аналогичную тему, как-то не помогло мне..  При двойном щелчке на ячейку выводит цифру, а не стандартную расшифровку...

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


Поле т.д. результат - элемент формы. Код вызывается из модуля формы. Основной реквизит формы - ОтчетОбъект.. Ну что еще не так может быть? Где собака зарыта?)
1 ProDeveloper
 
05.06.12
10:57
Сталкивался когда то с такой траблой. Сперва создаешь строковый реквизит на форме например АдресДанныхРасшифровки, потом так

Процедурка формирования отчета

   //Получаем схему из макета
   СхемаКомпоновкиДанных = ПолучитьМакетНаСервере();
   
   //Из схемы возьмем настройки по умолчанию
   Настройки = Отчет.КомпоновщикНастроек.Настройки;

   //Помещаем в переменную данные о расшифровке данных
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   ДанныеРасшифровки.Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();

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

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

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

   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   
   ТабРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   ТабРезультат.АвтоМасштаб = Истина;


Обработчик события ОбработкаРасшифровки на ЭлементыФормы.Результат (Поле табличного документа)

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

АдресДанныхРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, УникальныйИдентификатор);
3 ProDeveloper
 
05.06.12
11:04
Ну а вообще можешь качнуть вот это http://www.spec8.ru/kurs-po-skd-besplatno
там последний урок как раз таки "Расшифровка при программном формировании отчета"
4 ProDeveloper
 
05.06.12
11:07
Да и кстати в свойствах формы отчета привяжи:
Реквизит результата отчета
Реквизит данных расшифровки
5 Анцеранана
 
05.06.12
11:09
(1) Спс , но ....ПоместитьВоВременноеХранилище это ведь 8.2 не так ли? В синтакс помощнике там я нашел такую.. а у меня 8.1 (((
6 ProDeveloper
 
05.06.12
11:11
Да это для 8.2 я писал, может не взлететь в 8.1, ты прав.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.