Программный вывод отчета

Отзывов (9)FavoriteLoadingВ закладки

Несмотря на то, изучающие СКД встречаются с этим на первый или второй день, это должно быть в разделе FAQ. Простой пример программного вывода отчета на компоновке, использующий настройки по умолчанию.

//Получаем схему из макета
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

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

//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

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

//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();

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

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

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

9 Коммент.

  1. пропахал интернет, так никто и не знает как сделать чтоб работала расшифровка при программном выводе отчета. при таком выводе она не работает.
    Пробовал такой совет:
    после строки
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    поместить
    ДанныеРасшифровки.Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    все равно не работает стандартная расшифровка по двойному клику. выдает лишь номер ячейки.

  2. Написала в точности, как здесь
    Ругается:

    Ошибка при вызове метода контекста (Инициализировать): Несоответствие типов (параметр номер ‘2’)
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ДанныеРасшифровки);

    В чем может быть дело?

    • Если вы посмотрите в синтакс-помошник или справку – то увидите, что метод Инициализировать() у ПроцессораКомпоновкиДанных имеет 4 параметры:
      Макет – обязательный
      ВнешниеНаборыДанных – необязательный
      ДанныеРасшифровки – необязательный
      ИспользоватьВнешниеФункции – необязательный.
      Поэтому в примере все верно написано

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

  4. Вообще то все намного проще. Статья от вендора на ИТС “Использование объекта ДанныеРасшифровки”
    http://its.1c.ru/db/metod8dev#content:2797:hdoc

    Применительно к примеру добавить

    Перем ДанныеРасшифровкиСКД;
    ……
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровкиСКД);
    ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиСКД, УникальныйИдентификатор);

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровкиСКД);

Трекбеки/Пинги

  1. Как программно установить схему их XML - СКД: создаем отчеты любой сложно - [...] что угодно. Например сформировать отчет по примеру отсюда. Рекомендуем также следующие [...]

Оставить комментарий

RSSКомментарии в RSS

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.