Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
tormozit opened this issue May 6, 2024 · 1 comment

Comments

@tormozit
Copy link
Collaborator

tormozit commented May 6, 2024

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

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

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

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

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

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

@tormozit
Copy link
Collaborator Author

Родственная тема #15

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant