Программное выполнение СКД и “ПользовательскиеНастройки”

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

Дано:

Стандартный отчёт основанный на СКД с стандартной формой сформированной конструктором.

http://screencast.com/t/3WhbQUEhaHom

Нужно при нажатии на Сформировать сформировать обычный отчет в соответствии с настройками пользователя и получить данные этого отчета в виде коллекции значений. 

ВАЖНО! Форму менять нельзя.

Решение:

Используем процедуру ПриКомпоновкеРезультата

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

СхемаКД=ЭтотОбъект.СхемаКомпоновкиДанных; //Можно без ЭтотОбъект т.к. процедура в модуле объекта.

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

Настройки=ЭтотОбъект.КомпоновщикНастроек.Настройки; //
ПользовательскиеНастройки = ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки;

//МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, ЭтотОбъект.КомпоновщикНастроек.Настройки, ДанныеРасшифровки,, Тип(“ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений”) );

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

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

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

//т.к. стандартный обработчик включен и мы не меняли схему КД то отчет сформируется стандартным алгоритмом а в ТЗ будет коллекция в соответствии с настройками пользователя.

КонецПроцедуры

Проблема:

На данном этапе в “ЭтотОбъект.КомпоновщикНастроек.Настройки” еще не заполнены значения параметров указанные пользователем на форме, не указаны значения и состояние отборов указанные пользователем.

Но они есть в ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки, но  КомпоновщикМакета.Выполнить требует на вход именно Настройки.

И я не как не могу понять как заставить СКД перенести настройки пользователя в настройки или иным способом передать их КомпоновщикуМакета.

Понятно что можно в цикле обойти элементы и соответственно программно внести изменения в “Настройке” но мне кажется должен быть другой способ.

 

 

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

4 Коммент.

  1. Я так понял, Вам нужен метод ПолучитьНастройки()

    КомпоновщикНастроекКомпоновкиДанных (DataCompositionSettingsComposer)
    ПолучитьНастройки (GetSettings)
    Синтаксис:

    ПолучитьНастройки()
    Возвращаемое значение:

    Тип: НастройкиКомпоновкиДанных.

    Описание:

    Позволяет получить копию настроек компоновки данных.

    Доступность:

    Сервер, толстый клиент, внешнее соединение.
    Примечание:

    К возвращаемой копии применяются пользовательские настройки.
    Применение фиксированных настроек:
    Отбор из фиксированных настроек добавляется к отбору основных настроек;
    Условное оформление добавляется к условному оформлению основных настроек;
    Параметры данных, установленные в фиксированных настройках устанавливаются в основных настройках.
    При наличии пересечения отбора и параметров фиксированных настроек с отбором и параметрами настроек генерируется исключение.

  2. ПРАВИЛЬНЫЙ ОТВЕТ:
    Вместо:
    Настройки=ЭтотОбъект.КомпоновщикНастроек.Настройки;
    Надо писать:
    Настройки= КомпоновщикНастроек.ПолучитьНастройки();

  3. В процедуре “ПриКомпоновкеРезультата” добавляю структуру с данными для “ВнешниеНаборыДанных”, а при выводе СКД “не видит” этот набор.
    Подскажите, как ещё передать в УФ таблицу значений для “ВнешнийНаборДанных”?

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

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

Авторизация

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

Архивы

Закладки

  • Your favorites will be here.