Работа с расшифровкой в управляемом приложении

Печать (Ctrl+P)

Методические рекомендации

В данной статье описывается, как работать с расшифровкой отчета, созданного при помощи системы компоновки данных, в управляемом приложении.
Для того чтобы переопределить расшифровку в форме отчета, нужно установить обработчик события ОбработкаРасшифровки у поля табличного документа, в который выводится результат
отчета.
Выбрать действие расшифровки можно при помощи объекта
ОбработкаРасшифровкиКомпоновкиДанных.
Пример создания объекта обработкаРасшифровкиКомпоновкиДанных:

ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных 
(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));

В данном примере создается объект типа ОбработкаРасшифровкиКомпоновкиДанных, он
инициализируется адресом хранилища, в котором располагаются данные расшифровки (в форме отчета по умолчанию адрес данных расшифровки записывается в реквизит ДанныеРасшифровки), источник доступных настроек. В качестве источника доступных
настроек используется источник для отчета.
После создания объекта, можно воспользоваться его методом ВыбратьДействие, для выбора действия пользователя.
Пример:

Перем ВыбранноеДействие;
Перем ПараметрыВыбранногоДействия;

ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыбранноеДействие,
ПараметрыВыбранногоДействия);

Результат выбора пользователя будет помещен в переменные ВыбранноеДействие и ПараметрыВыбранногоДействия.
Использовать данный выбор можно, например, так:

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

В данном примере, выбор пользователем пункта “Открыть” приведет к тому, что выбранное значение покажется пользователю.
Выбор же другого действия приведет к открытию формы отчета, которой, через параметры форму указали необходимость формирования при открытии и указали необходимость
расшифровки.
Полностью обработчик расшифровки будет выглядеть так:

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

При необходимости, расшифровку, выдаваемую методом ВыбратьДействие можно выполнить и самостоятельно.
Пример:

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

В методе ОбработатьРасшифровку видно, что для применения настроек расшифровки можно использовать метод ПрименитьНастройки. Метод ПрименитьНастройки может вернуть как полные настройки компоновки данных, так и пользовательские настройки компоновки данных.
Пользовательские настройки расшифровки могут быть получены, если применяемые настройки можно полностью применить в пользовательских настройках.

См. также

Previous Article
Next Article

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.