Программный вывод отчета
Несмотря на то, изучающие СКД встречаются с этим на первый или второй день, это должно быть в разделе FAQ. Простой пример программного вывода отчета на компоновке, использующий настройки по умолчанию.
//Получаем схему из макета СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //Из схемы возьмем настройки по умолчанию Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; //Помещаем в переменную данные о расшифровке данных ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); //Очищаем поле табличного документа Результат = ЭлементыФормы.Результат; Результат.Очистить(); //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
пропахал интернет, так никто и не знает как сделать чтоб работала расшифровка при программном выводе отчета. при таком выводе она не работает.
Пробовал такой совет:
после строки
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
поместить
ДанныеРасшифровки.Настройки = КомпоновщикНастроек.ПолучитьНастройки();
все равно не работает стандартная расшифровка по двойному клику. выдает лишь номер ячейки.
надо использовать Форма.ДанныеРасшифровки
Написала в точности, как здесь
Ругается:
Ошибка при вызове метода контекста (Инициализировать): Несоответствие типов (параметр номер ‘2’)
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ДанныеРасшифровки);
В чем может быть дело?
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
Запятая пропущена
второй параметр насколько я помню обязательный
Re: also
Запятая не причем, все равно не катит, 3-й параметр.
Если вы посмотрите в синтакс-помошник или справку – то увидите, что метод Инициализировать() у ПроцессораКомпоновкиДанных имеет 4 параметры:
Макет – обязательный
ВнешниеНаборыДанных – необязательный
ДанныеРасшифровки – необязательный
ИспользоватьВнешниеФункции – необязательный.
Поэтому в примере все верно написано
Кому не охота создавать на форме табличное поле но хочется сохранить расшифровку, то можно закомментить последнюю строчку из сабжа и сделать так:
//ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Результат = Новый ТабличныйДокумент;
Результат.ТолькоПросмотр = Истина;
Результат.ОтображатьГруппировки = Ложь;
Результат.ОтображатьЗаголовки = Ложь;
Результат.ОтображатьСетку = Ложь;
ПроцессорВывода.НачатьВывод();
ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
Пока НЕ ЭлементРезультата = Неопределено Цикл
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
Для счКол = 1 по Результат.ШиринаТаблицы Цикл
ТекРасшифровкаИдентификатор = Результат.Область(Результат.ВысотаТаблицы,счКол).Расшифровка;
Результат.Область(Результат.ВысотаТаблицы,счКол).Расшифровка = ДанныеРасшифровки.Элементы[ТекРасшифровкаИдентификатор].ПолучитьПоля()[0].Значение
КонецЦикла;
КонецЕсли;
ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий();
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
Результат.Показать();
Вообще то все намного проще. Статья от вендора на ИТС “Использование объекта ДанныеРасшифровки”
http://its.1c.ru/db/metod8dev#content:2797:hdoc
Применительно к примеру добавить
Перем ДанныеРасшифровкиСКД;
……
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровкиСКД);
ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиСКД, УникальныйИдентификатор);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровкиСКД);