SeiOkami / OneS

Предложения по улучшению платформы
49 stars 3 forks source link

Прошу добавить в платформу функцию для проверки наличия у объекта метода с заданным именем #289

Open tormozit opened 4 months ago

tormozit commented 4 months ago

https://partners.v8.1c.ru/forum/t/2186610/m/2186610 В универсальных механизмах часто приходится вызывать у объекта какой то необязательный метод, т.е. который может отсутствовать. Вот примеры из БСП https://partners.v8.1c.ru/forum/topic/1552838

Сейчас приходится использовать свой метод через вызов метода в попытке

Функция МетодРеализован(Объект, ИмяМетода) Экспорт
    Если Объект = Неопределено Тогда
        Возврат Ложь;
    КонецЕсли;
    Выражение = "Объект." + ИмяМетода + "(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)";
    Попытка
        Выполнить(Выражение);
    Исключение
        Инфо = ИнформацияОбОшибке();
        Описание = Инфо.Описание;
        //СообщитьИис(Описание);
    КонецПопытки;
    Результат = Ложь
        Или Описание = "Слишком много фактических параметров"
        Или Описание = "Too many actual parameters";
    Возврат Результат;
КонецФункции

Его недостатком является выброс внутреннего исключения, которое ловится механизмом отладчика "Остановка по ошибке" без фильтра.

Поэтому прошу добавить в платформу функцию для проверки наличия у объекта метода с заданным именем и опционально числом параметром.

Ну и заодно прошу аналогичную функцию для проверки наличия свойства, т.к. ее прикладная реализация хотя и возможна, но лишь со значительными накладными расходами и потому не подходит для скоростного кода.