Метод дополнительной проверки применимости расширений
Как известно, 1С не умеет полностью проверять корректность применимости расширений. Обещают сделать это в будущих версиях платформы. Но работать нужно уже сейчас.
В этой ветке я высказал идею, как можно проверить применимость расширения на этапе выполнения (runtime).
Создал тестовое расширение. Добавляем в расширение любой редко используемый модуль, например, БизнесСеть и расширяем его процедуру ПодключитьОповещениеОНовыхДокументахВСервисе, добавив лишний параметр:
&После("ПодключитьОповещениеОНовыхДокументахВСервисе") Процедура тест_ПодключитьОповещениеОНовыхДокументахВСервисе(Форма, ВидыДокументов, ГруппаФормы, ЛишнийПараметр = Неопределено) // Вставить содержимое метода. КонецПроцедуры
Штатная проверка применимости расширения от 1С, разумеется, эту ошибку с количеством параметров не увидела и выдала: Проблем применения не обнаружено.
При запуске 1С в режиме Предприятия 1С тоже не увидела никаких ошибок, т.к. модуль БизнесСеть не вызывался и, соответственно, не компилировался runtime.
Теперь открываем консоль кода и вызываем несуществующую процедуру для модуля Бизнес.Сеть:
![](https://geniy1s.ru/wp-content/uploads/2022/08/image-24.png)
Текст кода:
ИдентификаторФункции = "_" + СтрЗаменить(Новый УникальныйИдентификатор(), "-", ""); Выполнить("БизнесСеть." + ИдентификаторФункции + "()");
Будет выдана ошибка, т.к. метод модуля не существует.
Но перед этим 1С попытается скомпилировать модуль и обнаружит runtime ошибку применения расширения, о чем выдаст всплывающее окно, добавит ошибку в окно информации для технической поддержки и в журнал регистрации:
![](https://geniy1s.ru/wp-content/uploads/2022/08/image-23.png)
![](https://geniy1s.ru/wp-content/uploads/2022/08/image-25.png)
В журнале регистрации принципиально не содержится информации по ошибке, я выгрузил эту запись в файл, там пусто:
![](https://geniy1s.ru/wp-content/uploads/2022/08/image-26.png)
Таким образом, нужно перебрать все модули и для каждого вызвать нашу несуществующую функцию. Проанализировав затем окно для технической поддержки, можно выявить все runtime-проблемы применения расширения.
![](https://geniy1s.ru/wp-content/uploads/2022/08/pokazatelnyj-eksperimenty-na-biznes-trennige-1024x515-1.png)
С идентификатором как-то заморочено. Можно было вызвать Гений1СТест(), например, такой функции в модуле точно не будет
наверно, но с GUID надежнее