Метод существует

SeiOkami 521 5 12 15

Функция определяет существование метода объекта

// Функция определяет существование метода объекта
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/56
// 
// Параметры:
//  Объект - Произвольный
//  ИмяМетода - Строка
// 
// Возвращаемое значение:
//  Булево - Существует ли метод объекта
Функция МетодСуществует(Знач Объект, Знач ИмяМетода) Экспорт
	
	ШаблонКода = "Объект.%1(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)";
	Алгоритм = СтрШаблон(ШаблонКода, ИмяМетода);
	
	Попытка
		//@skip-check server-execution-safe-mode, module-unused-local-variable
		НеобработанныйРезультат = Вычислить(Алгоритм);
	Исключение
		ИнформацияОбОшибке = ИнформацияОбОшибке();
		Если СтрНачинаетсяС(ИнформацияОбОшибке.Описание, "Значение не является значением объектного типа") Тогда
			Возврат Ложь;
		ИначеЕсли ИнформацияОбОшибке.Описание = "Слишком много фактических параметров" Тогда
			Возврат Истина;
		ИначеЕсли СтрНачинаетсяС(ИнформацияОбОшибке.Описание, "Обращение к процедуре объекта как к функции") Тогда
			Возврат Истина;
		ИначеЕсли СтрНачинаетсяС(ИнформацияОбОшибке.Описание, "Метод объекта не обнаружен") Тогда
			Возврат Ложь;
		Иначе
			НеобработанныйРезультат = ИнформацияОбОшибке.Описание;
		КонецЕсли;
	КонецПопытки;
	
	//На всякий случай
	ТекстИсключения = "Проверяемый метод ""%1"" объекта ""%2"" типа ""%3"" содержит неопределенное число параметров и не может быть проверен!
		|Результат выполнения: %4";
	ТекстИсключения = СтрШаблон(ТекстИсключения, ИмяМетода, Объект, ТипЗнч(Объект), НеобработанныйРезультат);
	ВызватьИсключение ТекстИсключения;
	
КонецФункции
0

См. также

ФайлСуществует (БСП)

FTPКаталогСуществует (БСП)

ПодсистемаСуществует (БСП)

МетодНеПоддерживается (БСП)

Модератору