Функция СохраняемаяНастройкаФормы(выхНаименование, выхИменаСвойств) Экспорт 
	выхИменаСвойств = "Форма.Список, Форма.ОтключатьВОбнаруженныхФормах, Форма.ОтключатьВФормахИнструментов";
	Возврат Неопределено;
КонецФункции

Процедура ПриОткрытии()
	
	ирКлиент.Форма_ПриОткрытииЛкс(ЭтаФорма);
	ирКлиент.СоздатьМенеджерСохраненияНастроекФормыЛкс(ЭтаФорма);

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

Процедура КлсКомандаНажатие(Кнопка) Экспорт 
	
	ирКлиент.УниверсальнаяКомандаФормыЛкс(ЭтаФорма, Кнопка);
	
КонецПроцедуры

Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт
	
	ирКлиент.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);

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

Процедура ПриЗакрытии()
	ирКлиент.Форма_ПриЗакрытииЛкс(ЭтаФорма);
КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Экспорт
	
	ирКлиент.Форма_ОбработкаОповещенияЛкс(ЭтаФорма, ИмяСобытия, Параметр, Источник); 

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

Процедура ОсновныеДействияФормыОтключить(Кнопка)
	
	Если Список.Количество() = 0 Тогда
		ЗаполнитьСписок();
	КонецЕсли; 
	Для Каждого СтрокаМетода Из Список Цикл
		ирКлиент.ОтключитьГлобальныйОбработчикОжиданияЛкс(СтрокаМетода.Значение);
	КонецЦикла;
	ирОбщий.СообщитьЛкс(ирОбщий.СтрШаблонЛкс("Отключено %1 возможных глобальных обработчиков ожидания", Список.Количество()),,,, Ложь);
	СчетчикОбработчиковФорм = 0;
	#Если ТолстыйКлиентУправляемоеПриложение Тогда
		Если ирКэш.НомерВерсииПлатформыЛкс() > 803001 И ОтключатьВОбнаруженныхФормах Тогда
			Окна = ПолучитьОкна();
			Для Каждого Окно Из Окна Цикл
				Попытка
					Содержимое = Окно.Содержимое;
				Исключение
					// В 8.2 нет такого свойства
					Продолжить;
				КонецПопытки;
				Для Каждого Форма Из Содержимое Цикл
					ОтключитьОбработчикиФормы(Форма, СчетчикОбработчиковФорм);
				КонецЦикла;
			КонецЦикла;  
		КонецЕсли;
	#КонецЕсли
	Если ОтключатьВФормахИнструментов Тогда
		Для Каждого Форма Из ирКэш.ОткрытыеФормыПодсистемыЛкс() Цикл
			ОтключитьОбработчикиФормы(Форма, СчетчикОбработчиковФорм);
		КонецЦикла;
	КонецЕсли;
	ирОбщий.СообщитьЛкс(ирОбщий.СтрШаблонЛкс("Отключено %1 возможных локальных обработчиков ожидания", СчетчикОбработчиковФорм),,,, Ложь);
	Закрыть();
	
КонецПроцедуры

//.
// Параметры:
//    Форма - Форма - 
Функция ОтключитьОбработчикиФормы(Знач Форма, СчетчикОбработчиков = 0) Экспорт
	ИмяФормы = ирОбщий.ПолноеИмяФормыЛкс(Форма);
	Если Не ЗначениеЗаполнено(ИмяФормы) Тогда
		Возврат Ложь;
	КонецЕсли;
	ИмяМодуля = ИмяФормы + ".Форма.Модуль";
	ПолеТекстаМодуля = мПлатформа.ПолеТекстаМодуля(ИмяМодуля);
	Если ПолеТекстаМодуля.мМодульМетаданных = Неопределено Тогда
		ирОбщий.СообщитьЛкс("Модуль """ + ИмяМодуля + """ не найден в файловом кэше модулей");
		Возврат Ложь;
	КонецЕсли; 
	ОтборМетодов = Новый Структура("Клиент, БезКонтекста", Истина, Ложь);
	Методы = ПолеТекстаМодуля.мМодульМетаданных.Методы.НайтиСтроки(ОтборМетодов);
	Для Каждого СтрокаМетода Из Методы Цикл
		Если Ложь
			Или СтрокаМетода.Имя = "<>" 
			Или СтрокаМетода.Имя = "ПриОткрытии"
			Или СтрокаМетода.Имя = "ПриЗакрытии"
		Тогда
			Продолжить;
		КонецЕсли;
		ПараметрыМетода = ПараметрыМетодаМодуля(СтрокаМетода);
		Если ПараметрыМетода = Неопределено Или ПараметрыМетода.Количество() = 0 Тогда
			Форма.ОтключитьОбработчикОжидания(СтрокаМетода.Имя);
			СчетчикОбработчиков = СчетчикОбработчиков + 1;
		КонецЕсли;
	КонецЦикла;
	Возврат Истина;
КонецФункции

Процедура ОсновныеДействияФормыЗаполнить(Кнопка)
	
	ЗаполнитьСписок();
	
КонецПроцедуры

Процедура ЗаполнитьСписок()
	
	Форма = ирКлиент.ПолучитьФормуЛкс("Обработка.ирКлсПолеТекстаПрограммы.Форма.МетодыМодулей",,, "Программно");
	Форма.ПерезаполнитьТаблицуВсехМетодов(Истина);
	Компоновщик = Форма.Компоновщик;
	ирОбщий.НайтиДобавитьЭлементНастроекКомпоновкиПоПолюЛкс(Компоновщик.Настройки.Порядок, "Имя");
	ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(Компоновщик.Настройки.Отбор, "КоличествоПараметров", 0, ВидСравненияКомпоновкиДанных.Равно);
	ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(Компоновщик.Настройки.Отбор, "Глобальный", Истина);
	Форма.ОбновитьДанные();
	Список.ЗагрузитьЗначения(ирОбщий.РазличныеЗначенияКолонкиТаблицыЛкс(Форма.МетодыМодулей, "Имя"));

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

Процедура СписокНачалоВыбора(Элемент, СтандартнаяОбработка)
	
	ирКлиент.ПолеВводаРасширенногоЗначения_НачалоВыбораЛкс(Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

Процедура ОсновныеДействияФормыКэшМодулей(Кнопка)
	
	Форма = ирКлиент.ПолучитьФормуЛкс("Обработка.ирКлсПолеТекстаПрограммы.Форма.ФормаНастройки");
	Форма.Открыть();
	
КонецПроцедуры

ирКлиент.ИнициироватьФормуЛкс(ЭтаФорма, "Обработка.ирПлатформа.Форма.ОбработчикиОжидания");
