---
title: Добавить произвольные команды на общую форму отчета
slug: общие-скд-и-отчеты/добавить-произвольные-команды-на-общую-форму-отчета
---

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

```bsl
Процедура НастроитьВариантыОтчетов(Настройки) Экспорт

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

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

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

```

В модуле объекта отчета
```bsl
// Параметры:
//   Форма - ФормаКлиентскогоПриложения, Неопределено
//   КлючВарианта - Строка, Неопределено
//   Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
    Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры

// См. ОтчетыПереопределяемый.ПриСозданииНаСервере.
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт

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

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

```

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

...

// примеры
// См. ОтчетыКлиентПереопределяемый.ОбработчикКоманды.
Процедура НачатьРедактированиеОтчета(ФормаОтчета) Экспорт 
	
	ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыРедактораТабличногоДокумента();
	ПараметрыФормы.ИмяДокумента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		НСтр("ru = 'Редактирование таблицы сформированного отчета ""%1""'"),
		ФормаОтчета.Заголовок);
	ПараметрыФормы.Редактирование = Истина;
	СтандартныеПодсистемыКлиент.ПоказатьРедакторТабличногоДокумента(ФормаОтчета.ОтчетТабличныйДокумент, ПараметрыФормы);
	
КонецПроцедуры

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