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