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