Метод дополнительной проверки применимости расширений

Как известно, 1С не умеет полностью проверять корректность применимости расширений. Обещают сделать это в будущих версиях платформы. Но работать нужно уже сейчас.

В этой ветке я высказал идею, как можно проверить применимость расширения на этапе выполнения (runtime).

Создал тестовое расширение. Добавляем в расширение любой редко используемый модуль, например, БизнесСеть и расширяем его процедуру ПодключитьОповещениеОНовыхДокументахВСервисе, добавив лишний параметр:

&После("ПодключитьОповещениеОНовыхДокументахВСервисе")
Процедура тест_ПодключитьОповещениеОНовыхДокументахВСервисе(Форма, ВидыДокументов, ГруппаФормы, ЛишнийПараметр = Неопределено)
	// Вставить содержимое метода.
КонецПроцедуры

Штатная проверка применимости расширения от 1С, разумеется, эту ошибку с количеством параметров не увидела и выдала: Проблем применения не обнаружено.

При запуске 1С в режиме Предприятия 1С тоже не увидела никаких ошибок, т.к. модуль БизнесСеть не вызывался и, соответственно, не компилировался runtime.

Теперь открываем консоль кода и вызываем несуществующую процедуру для модуля Бизнес.Сеть:

Текст кода:

ИдентификаторФункции = "_" + СтрЗаменить(Новый УникальныйИдентификатор(), "-", ""); 
Выполнить("БизнесСеть." + ИдентификаторФункции + "()");

Будет выдана ошибка, т.к. метод модуля не существует.

Но перед этим 1С попытается скомпилировать модуль и обнаружит runtime ошибку применения расширения, о чем выдаст всплывающее окно, добавит ошибку в окно информации для технической поддержки и в журнал регистрации:

В окне О программе — Информация для технической поддержки
В журнале регистрации скудно — нет деталей ошибки применения.

В журнале регистрации принципиально не содержится информации по ошибке, я выгрузил эту запись в файл, там пусто:

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

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. Денис:

    С идентификатором как-то заморочено. Можно было вызвать Гений1СТест(), например, такой функции в модуле точно не будет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *