
Функция Конт(Конт) Возврат Конт; КонецФункции
Функция Сам() Возврат Конт(Контекст); КонецФункции
//______________________________________________________________________________
//
Функция _Объект(__стр ="Делегат")
	_о =СоздатьОбъект(__стр);
	Возврат _о;
КонецФункции
//______________________________________________________________________________
//
Функция _Обработчик(__стр ="ДелегатОбработчик")
	_о =СоздатьОбъект(__стр);
	Возврат _о;
КонецФункции
//______________________________________________________________________________
//
Процедура тестСоздатьОбъект() Экспорт
	Сам =Сам();

	_о =_Объект("Делегат");
//	Сам.ПроверитьРавенство(ТипЗначенияСтр(_о), "Delegate");
	Сам.ПроверитьРавенство(ТипЗначенияСтр(_о), "Делегат");
	_о =0;
	
	_о =_Объект("Delegate");
//	Сам.ПроверитьРавенство(ТипЗначенияСтр(_о), "Delegate");
	Сам.ПроверитьРавенство(ТипЗначенияСтр(_о), "Делегат");
	_о =0;
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестПустой() Экспорт
	Сам =Сам();
	
	_о =_Объект();

	Сам.ПроверитьРавенство(_о.Пустой(), 1);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестПроверкаОбработчика() Экспорт
	Сам =Сам();
	
	_обр =_Обработчик();
	
	Сам.ПроверитьРавенство(_обр.функПроизведение(2,3,4), 24);
	
	_знач =15;
	_обр.процИнкремент(_знач);
	Сам.ПроверитьРавенство(_знач, 16);

	_обр.процКвадрат(_знач);
	Сам.ПроверитьРавенство(_знач, 256);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестДобавитьУдалить() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);

	_о.Добавить(_обр, "процИнкремент");
	_о.Добавить(_обр, "процКвадрат");
	_о.Удалить(_обр, "процКвадрат");
	_о.Удалить(_обр, "процИнкремент");

	Сам.ПроверитьРавенство(_о.Пустой(), 1);
	
	_о.Добавить(_обр, "процИнкремент");
	_о.Добавить(_обр, "процКвадрат");
	_о.Очистить();

	Сам.ПроверитьРавенство(_о.Пустой(), 1);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестДобавитьПовторно() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);

	_знач =_о.Добавить(_обр, "процИнкремент");
	Сам.ПроверитьРавенство(_знач, 1);

	_знач =_о.Добавить(_обр, "процИнкремент");
	Сам.ПроверитьРавенство(_знач, 1);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестУдалитьПовторно() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);

	// добавляем по 2
	_о.Добавить(_обр, "процИнкремент", "Инкремент");
	_о.Добавить(_обр, "процКвадрат", "Квадрат");
	_о.Добавить(_обр, "процИнкремент", "Инкремент");
	_о.Добавить(_обр, "процКвадрат", "Квадрат");
	
	// удаляем 1й раз
	_о.Удалить(_обр, "процИнкремент");
	_знач =_о.Удалить(_обр, "процКвадрат");
	Сам.ПроверитьРавенство(_знач, 1);

	// удаляем 2й раз (этих методов уже нет в текущей ревизии)
	//_о.Удалить(_обр, "процИнкремент");
	//_знач =_о.Удалить(_обр, "процКвадрат");
	//Сам.ПроверитьРавенство(_знач, 0);

	// все удалены
	Сам.ПроверитьРавенство(_о.Пустой(), 1);

	// нечего удалять
	_знач =_о.Удалить(_обр, "процИнкремент");
	Сам.ПроверитьРавенство(_знач, 0);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура _ДобавитьНесуществующийМетод(__стр) Экспорт
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "НетТакого__!__метода");
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестДобавитьНесуществующийМетод() Экспорт
	Сам =Сам();
	
	Сам.ПроверитьИсключение(Сам, "_ДобавитьНесуществующийМетод", "");
КонецПроцедуры
//______________________________________________________________________________
//
Процедура _ДобавитьМетодНеагрегатногоОбъекта(__стр) Экспорт
	_о =_Объект();
	_неагр = "";

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_неагр, "НетТакого__!__метода");
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестДобавитьМетодНеагрегатногоОбъекта() Экспорт
	Сам =Сам();
	
	Сам.ПроверитьИсключение(Сам, "_ДобавитьМетодНеагрегатногоОбъекта", "");
КонецПроцедуры
//______________________________________________________________________________
//
Процедура _ВызватьСЛишнимиПараметрами(__стр) Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент");
	
	_знач =125;
	_о.Вызвать(_знач, _знач); // превышение числа параметров
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьСЛишнимиПараметрами() Экспорт
	Сам =Сам();
	
	Сам.ПроверитьИсключение(Сам, "_ВызватьСЛишнимиПараметрами", "");
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьПроцедуру() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент");
	
	_знач =125;
	_о.Вызвать(_знач);
	Сам.ПроверитьРавенство(_знач, 126);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьФункцию() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(3, 1);
	_о.Добавить(_обр, "функСумма");
	
	_знач =_о.Вызвать(5, 132, -4);
	Сам.ПроверитьРавенство(_знач, 133);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьМножествоПроцедур() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент");
	_о.Добавить(_обр, "процКвадрат");
	
	_знач =11;
	_о.Вызвать(_знач);
	Сам.ПроверитьРавенство(_знач, 144);

	_о.Очистить();
	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процКвадрат");
	_о.Добавить(_обр, "процИнкремент");
	
	_знач =11;
	_о.Вызвать(_знач);
	Сам.ПроверитьРавенство(_знач, 122);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьПроцедуруПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент", "Инкремент");
	_о.Добавить(_обр, "процКвадрат", "Квадрат");
	
	_знач =11;
	_о.ВызватьПоКлючу("Инкремент", _знач);
	Сам.ПроверитьРавенство(_знач, 12);

	_о.ВызватьПоКлючу("Квадрат", _знач);
	Сам.ПроверитьРавенство(_знач, 144);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьФункциюПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(3, 1);
	_о.Добавить(_обр, "функСумма", "Сумма");
	_о.Добавить(_обр, "функПроизведение", "Произведение");
	
	_знач =_о.ВызватьПоКлючу("Сумма", 1, 4, 5);
	Сам.ПроверитьРавенство(_знач, 10);

	_знач =_о.ВызватьПоКлючу("Произведение", 5, 6, -2);
	Сам.ПроверитьРавенство(_знач, -60);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьМножествоОдинаковыхПроцедур() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент");
	_о.Добавить(_обр, "процИнкремент");
	
	_знач =100;
	_о.Вызвать(_знач);
	Сам.ПроверитьРавенство(_знач, 102);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьМножествоПроцедурПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент", "111");
	_о.Добавить(_обр, "процКвадрат", "111");
	
	_знач =11;
	_о.ВызватьПоКлючу("111", _знач);
	Сам.ПроверитьРавенство(_знач, 144);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьОдинаковыеПроцедурыПоРазнымКлючам() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
//	_о.Добавить(_обр, "процИнкремент", "111");
	_о.Добавить(_обр, "процКвадрат", "111");
//	_о.Добавить(_обр, "процДекремент", "222");
	_о.Добавить(_обр, "процКвадрат", "222");
	
	_знач =11;
	_о.ВызватьПоКлючу("111", _знач);
	Сам.ПроверитьРавенство(_знач, 121);

	_знач =15;
	_о.ВызватьПоКлючу("222", _знач);
	Сам.ПроверитьРавенство(_знач, 225);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестУдалитьПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент", "111");
	_о.Добавить(_обр, "процКвадрат", "222");
	
	_знач =_о.УдалитьПоКлючу("111");
	Сам.ПроверитьРавенство(_знач, 1);

	_знач =_о.УдалитьПоКлючу("222");
	Сам.ПроверитьРавенство(_знач, 1);

	_знач =_о.УдалитьПоКлючу("222");
	Сам.ПроверитьРавенство(_знач, 0);

	Сам.ПроверитьРавенство(_о.Пустой(), 1);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестУдалитьМножествоПроцедурПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент", "111");
	_о.Добавить(_обр, "процКвадрат", "111");
	_о.Добавить(_обр, "процДекремент", "222");
	_о.Добавить(_обр, "процКвадрат", "222");
	
	_знач =_о.УдалитьПоКлючу("111");
	Сам.ПроверитьРавенство(_знач, 1);

	_знач =_о.УдалитьПоКлючу("222");
	Сам.ПроверитьРавенство(_знач, 1);

	_знач =_о.УдалитьПоКлючу("222");
	Сам.ПроверитьРавенство(_знач, 0);

	Сам.ПроверитьРавенство(_о.Пустой(), 1);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестЗапретПрерывания() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 1);
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "2");
	_о.Добавить(_обр, "функПостИнкремент", "3");
	_о.Добавить(_обр, "функПостИнкремент", "3");
	_о.Добавить(_обр, "функПостИнкремент", "4");
	
	_нач =-2;
	_кон =_о.Вызвать(_нач);

	Сам.ПроверитьРавенство(_нач, 3);
	Сам.ПроверитьРавенство(_кон, 2);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестПрерывание() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 1, 1);
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "2");
	_о.Добавить(_обр, "функПостИнкремент", "3");
	_о.Добавить(_обр, "функПостИнкремент", "3");
	_о.Добавить(_обр, "функПостИнкремент", "4");
	
	_нач =-2;
	_кон =_о.Вызвать(_нач);

	Сам.ПроверитьРавенство(_нач, 1);
	Сам.ПроверитьРавенство(_кон, 0);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестЗапретПрерыванияПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 1);
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "2");
	
	_нач =-2;
	_кон =_о.ВызватьПоКлючу("1", _нач);

	Сам.ПроверитьРавенство(_нач, 3);
	Сам.ПроверитьРавенство(_кон, 2);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестПрерываниеПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 1, 1);
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "1");
	_о.Добавить(_обр, "функПостИнкремент", "2");
	
	_нач =-2;
	_кон =_о.ВызватьПоКлючу("1", _нач);

	Сам.ПроверитьРавенство(_нач, 1);
	Сам.ПроверитьРавенство(_кон, 0);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестВызватьПоНесуществующемуКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент", "Инкремент");
	
	_знач =14;
	_о.ВызватьПоКлючу("Инкремент", _знач);
	Сам.ПроверитьРавенство(_знач, 15);

	_о.ВызватьПоКлючу("Не_найден_ключ", _знач);
	Сам.ПроверитьРавенство(_знач, 15);

	_о.Добавить(_обр, "процКвадрат", "__default");

	_о.ВызватьПоКлючу("Не_найден_ключ", _знач);
	Сам.ПроверитьРавенство(_знач, 225);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестРегистронезависимостьМетода() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "пРоЦИНкреМенТ");
	_о.Добавить(_обр, "прОЦкВАдрАт");
	
	_знач =14;
	_о.Вызвать(_знач);
	Сам.ПроверитьРавенство(_знач, 225);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестРегистронезависимостьКлюча() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент", "иНкРЕмЕНт");
	_о.Добавить(_обр, "процКвадрат", "__DEFaulT");
	
	_знач =14;
	_о.ВызватьПоКлючу("Инкремент", _знач);
	Сам.ПроверитьРавенство(_знач, 15);

	_о.ВызватьПоКлючу("Не_найден_метод", _знач);
	Сам.ПроверитьРавенство(_знач, 225);
КонецПроцедуры
//______________________________________________________________________________
//
Процедура тестУничтожениеОбработчика() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент");
	_о.Добавить(_обр, "процКвадрат");
	
	_обр = 0;
	_обр = "уже не здесь, еще не там";
	
	_знач =8;
	_о.Вызвать(_знач);
	Сам.ПроверитьРавенство(_знач, 81);
КонецПроцедуры
//______________________________________________________________________________
//

Процедура _ПроверитьТаблицуОбработчиков(Таб, _обр)
	Сам =Сам();

	Сам.ПроверитьРавенство(ТипЗначенияСтр(Таб), "ТаблицаЗначений");
	Сам.ПроверитьРавенство(Таб.КоличествоСтрок(), 2);

	Таб.ПолучитьСтрокуПоНомеру(1);
	Сам.ПроверитьРавенство(ТипЗначенияСтр(Таб.Объект), ТипЗначенияСтр(_обр));
	Сам.ПроверитьРавенство(Таб.Объект, _обр);
	Сам.ПроверитьРавенство(Таб.НаименованиеКласса, ТипЗначенияСтр(_обр));
	Сам.ПроверитьРавенство(Таб.НаименованиеМетода, "процИнкремент");

	Таб.ПолучитьСтрокуПоНомеру(2);
	Сам.ПроверитьРавенство(ТипЗначенияСтр(Таб.Объект), ТипЗначенияСтр(_обр));
	Сам.ПроверитьРавенство(Таб.Объект, _обр);
	Сам.ПроверитьРавенство(Таб.НаименованиеКласса, ТипЗначенияСтр(_обр));
	Сам.ПроверитьРавенство(Таб.НаименованиеМетода, "процКвадрат");
КонецПроцедуры

Процедура тестПолучитьТаблицуОбработчиков() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент");
	_о.Добавить(_обр, "процКвадрат");
	
	Таб = _о.ПолучитьТаблицуОбработчиков();
	// Таб // : ТаблицаЗначений 
	
	_ПроверитьТаблицуОбработчиков(Таб, _обр);
КонецПроцедуры

Процедура тестПолучитьТаблицуОбработчиковПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();

	_о.ОпределитьТип(1, 0);
	_о.Добавить(_обр, "процИнкремент", "111");
	_о.Добавить(_обр, "процДекремент", "222");
	_о.Добавить(_обр, "процКвадрат", "111");
	
	Таб = _о.ПолучитьТаблицуОбработчиковПоКлючу("111");
	// Таб // : ТаблицаЗначений 

	_ПроверитьТаблицуОбработчиков(Таб, _обр);
КонецПроцедуры

Процедура тестСозданияУдаленияОбработчика() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();
	
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	_обр.Инит(Журнал);

	_о.ОпределитьТип(0, 0);
	_о.Добавить(_обр, "ВызовМетодаСЖурналом");
	_о.Удалить(_обр, "ВызовМетодаСЖурналом");

	_обр = 0;
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, Деструктор");
	
КонецПроцедуры	// тестСозданияУдаленияОбработчика

Процедура тестСозданияУдаленияОбработчикаПоКлючу() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();
	
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	_обр.Инит(Журнал);

	_о.ОпределитьТип(0, 0);
	_о.Добавить(_обр, "ВызовМетодаСЖурналом", "1");
	_о.Удалить(_обр, "ВызовМетодаСЖурналом");

	_обр = 0;
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, Деструктор");
	
КонецПроцедуры	// тестСозданияУдаленияОбработчика

Процедура тестСозданияУдаленияОбработчика2() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();
	
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	_обр.Инит(Журнал);

	_о.ОпределитьТип(0, 0);
	_о.Добавить(_обр, "ВызовМетодаСЖурналом");

	_о.Вызвать();
	_обр = 0;
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, ВызовМетодаСЖурналом");

	_о = 0;
	
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, ВызовМетодаСЖурналом, Деструктор");
	
КонецПроцедуры	// тестСозданияУдаленияОбработчика

Процедура тестСозданияУдаленияОбработчикаПоКлючу2() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();
	
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	_обр.Инит(Журнал);

	_о.ОпределитьТип(0, 0);
	_о.Добавить(_обр, "ВызовМетодаСЖурналом", "1");

	_о.ВызватьПоКлючу("1");
	_обр = 0;
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, ВызовМетодаСЖурналом");
    
	_о.УдалитьПоКлючу("1");
	//_о = 0;
	
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, ВызовМетодаСЖурналом, Деструктор");
	
КонецПроцедуры	// тестСозданияУдаленияОбработчика

Процедура тестСозданияУдаленияОбработчикаПоКлючу3() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();
	
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	_обр.Инит(Журнал);

	_о.ОпределитьТип(0, 0);
	_о.Добавить(_обр, "ВызовМетодаСЖурналом", "1");

	_о.ВызватьПоКлючу("1");
	_обр = 0;
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, ВызовМетодаСЖурналом");
    
	_о = 0;
	
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит, ВызовМетодаСЖурналом, Деструктор");
	
КонецПроцедуры	// тестСозданияУдаленияОбработчика

Процедура тестСозданияУдаленияМножестваОбработчиков() Экспорт
	Сам =Сам();
	
	_о =_Объект();
	_обр =_Обработчик();
	_обр.Атрибут = 1;
	_обр2 =_Обработчик();
	_обр2.Атрибут = 2;
	
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	_обр.Инит(Журнал);
	_обр2.Инит(Журнал);

	_о.ОпределитьТип(0, 0);
	_о.Добавить(_обр, "ВызовМетодаСЖурналом");
	_о.Добавить(_обр2, "ВызовМетодаСЖурналом");

	_о.Вызвать();
	_обр = 0;
	_обр2 = 0;
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит1, Инит2, ВызовМетодаСЖурналом1, ВызовМетодаСЖурналом2");

	_о = 0;
	
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Инит1, Инит2, ВызовМетодаСЖурналом1, ВызовМетодаСЖурналом2, Деструктор2, Деструктор1");
	
КонецПроцедуры	// тестСозданияУдаленияОбработчиков
