Skip to content

Добавить произвольные команды на общую форму отчета

Установить настройки вариантов отчетов

Настройки вариантов отчетов задаются в процедуре НастроитьВариантыОтчетов общего модуля ВариантыОтчетовПереопределяемый

Процедура НастроитьВариантыОтчетов(Настройки) Экспорт
ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИмяОтчета);
КонецПроцедуры

Далее. для указанных в этой процедуре отчетов в модуле менеджера вставить процедуру по шаблону

// Параметры:
// Настройки - см. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.Настройки.
// НастройкиОтчета - см. ВариантыОтчетов.ОписаниеОтчета.
//
Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
НастройкиОтчета.ОпределитьНастройкиФормы = Истина;
КонецПроцедуры

В модуле объекта отчета

// Параметры:
// Форма - ФормаКлиентскогоПриложения, Неопределено
// КлючВарианта - Строка, Неопределено
// Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры
// См. ОтчетыПереопределяемый.ПриСозданииНаСервере.
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
Команда = Форма.Команды.Добавить("<ИмяКоманды>");
Команда.Действие = "Подключаемый_Команда";
Команда.Заголовок = НСтр("ru = '<Представление команды...>'");
ОтчетыСервер.ВывестиКоманду(Форма, Команда, "<ВидГруппы>");
КонецПроцедуры

Обработчик команды устанавливается в процедуре ОтчетыКлиентПереопределяемый.ОбработчикКоманды

// Обработчик команд, добавленных динамически и подключенных к обработчику "Подключаемый_Команда".
// Пример добавления команды см. ОтчетыПереопределяемый.ПриСозданииНаСервере().
//
// Параметры:
// ФормаОтчета - ФормаКлиентскогоПриложения
// - РасширениеУправляемойФормыДляОтчета - форма отчета:
// * Отчет - ОтчетОбъект - структура данных формы аналогичная объекту отчета.
//
// Команда - КомандаФормы - команда, которая была вызвана.
// Результат - Булево - Истина, если вызов команды обработан.
//
Процедура ОбработчикКоманды(ФормаОтчета, Команда, Результат) Экспорт
// _Демо начало примера
ПолноеИмяОтчета = ФормаОтчета.НастройкиОтчета.ПолноеИмя;
Если ПолноеИмяОтчета = "Отчет._ДемоФайлы" И Команда.Имя = "_ДемоКоманда" Тогда
// Обработчик команды, определенной в модуле отчета Отчет._ДемоФайлы в процедуре ПриСозданииНаСервере.
_ДемоСтандартныеПодсистемыКлиент.НачатьРедактированиеОтчета(ФормаОтчета);
ИначеЕсли СтрНайти(ПолноеИмяОтчета, "_Демо") > 0 И СтрНачинаетсяС(Команда.Имя, "_ДемоОформить") Тогда
// Обработчик команды, определенной в ОтчетыПереопределяемый.ПриСозданииНаСервере.
_ДемоСтандартныеПодсистемыКлиент.ОформитьВыделенныеОбластиОтчета(ФормаОтчета, Команда.Имя);
КонецЕсли;
// _Демо конец примера
КонецПроцедур
...
// примеры
// См. ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
Процедура НачатьРедактированиеОтчета(ФормаОтчета) Экспорт
ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыРедактораТабличногоДокумента();
ПараметрыФормы.ИмяДокумента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Редактирование таблицы сформированного отчета ""%1""'"),
ФормаОтчета.Заголовок);
ПараметрыФормы.Редактирование = Истина;
СтандартныеПодсистемыКлиент.ПоказатьРедакторТабличногоДокумента(ФормаОтчета.ОтчетТабличныйДокумент, ПараметрыФормы);
КонецПроцедуры
// См. ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
Процедура ОформитьВыделенныеОбластиОтчета(ФормаОтчета, КатегорияДанных) Экспорт
Если СтрЗаканчиваетсяНа(КатегорияДанных, "ОшибочныеДанные") Тогда
ЦветОформления = WebЦвета.СветлоРозовый;
ИначеЕсли СтрЗаканчиваетсяНа(КатегорияДанных, "КорректныеДанные") Тогда
ЦветОформления = WebЦвета.СветлоЗеленый;
ИначеЕсли СтрЗаканчиваетсяНа(КатегорияДанных, "СомнительныеДанные") Тогда
ЦветОформления = WebЦвета.СветлоЖелтый;
Иначе
Возврат;
КонецЕсли;
ТабличныйДокумент = ФормаОтчета.ОтчетТабличныйДокумент;
Для Каждого Область Из ТабличныйДокумент.ВыделенныеОбласти Цикл
Для НомерСтроки = Область.Верх По Область.Низ Цикл
Для НомерКолонки = Область.Лево По Область.Право Цикл
Ячейка = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки); // ОбластьЯчеекТабличногоДокумента
Ячейка.ЦветФона = ЦветОформления;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры