Внешняя обработка, которая до обновления типовой показывает, какие ваши внешние обработки и печатные формы после него упадут. Она находит в их коде вызовы общих модулей и менеджеров типовой и сверяет каждый с текущей конфигурацией и с выгрузкой нового релиза: есть ли метод, экспортный ли он, сходится ли число параметров, на месте ли документ или справочник.
Зачем это нужно: конфигуратор при обновлении проверяет саму конфигурацию, а внешняя обработка в неё не входит. Вызов пропавшего метода общего модуля компилируется без замечаний, обработка открывается без ошибки и падает только на строке с вызовом, то есть у пользователя, уже после обновления. На переходе УТ для Казахстана с 2.2.16.5 на 3.4.4.87 из 2 839 экспортных методов общих модулей без изменений остался 851, а у настоящей обработки обмена с сайтом из 79 вызовов типовой не пережили переход 33.
Что делает
- Берёт обработки откуда удобно. Из справочника дополнительных отчётов и обработок или из папки с файлами
.epfи.erf. Файлы распаковываются самой обработкой, конфигуратор для этого не нужен. - Находит вызовы типовой. Общие модули и менеджеры объектов (
Документы.Имя.Метод(),Справочники.Имя,Перечисления.Имя). Вызовы в комментариях и строках не считаются, локальные переменные и параметры с именем общего модуля от модуля отличаются. - Выгружает нужное сама. Кнопка "Выгрузить нужные модули текущей конфигурации" запускает конфигуратор в пакетном режиме и выгружает только те объекты, которые реально вызываются. Полная выгрузка конфигурации в файлы тоже подходит.
- Даёт статус каждому вызову: СЛОМАЕТСЯ (в новом релизе метода или объекта нет, метод не экспортный, не сходится число параметров), УЖЕ СЛОМАНО (не работает и в текущей конфигурации), НЕ ПРОВЕРЕНО (нет выгрузки или объект расширения), ОК. У каждой строки обработка, модуль, номер строки и причина, красные сверху.
Как проверять
- Выгрузить текущую конфигурацию кнопкой обработки или взять готовую выгрузку в файлы.
- Выгрузку нового релиза делать из копии своей базы после сравнения-объединения, а не из чистого шаблона поставки. В шаблоне нет ваших доработок, и каждый вызов доработанного объекта по нему получит СЛОМАЕТСЯ.
- Нажать "Проверить" и начать с красных строк.
Если текущая база в режиме совместимости 8.2 (УТ 2.2 и ровесники), обработка в ней не скомпилируется. Запускайте её в любой современной базе и давайте обе выгрузки файлами.
Где проверка заканчивается
Проверка статическая: код читается, но не исполняется. Вызовы через Выполнить и имена, собранные строкой, не видны. Методы объекта, полученного в переменную, не сверяются. Замену метода с другим поведением инструмент покажет как "нет метода", смысл замены проверяется глазами. Реквизит формы с именем общего модуля пока не отличается от модуля.
На чём проверялась
Платформа 8.3.27, серверные базы. Поставки УТ для Казахстана 2.2.16.5 и 3.4.4.87, УТ 11.5.22. Прогоны: подложка с заведомо правильными и неправильными вызовами типовой ловится построчно; настоящая обработка обмена с сайтом (79 вызовов типовой) и 42 обработки под БСП сверены с независимым разбором на Python. Четыре файла комплекта обработки обмена сверялись 1,7 секунды, с подключением к базе около 11 секунд. Конфигурации без БСП, файловые базы, веб-клиент и Linux-сервер не гонялись.
Что в файле
Внешняя обработка на управляемых формах, открывается через "Файл - Открыть". В базу ничего не пишет. Внутри страница "Как это работает" с разбором статусов. Код открыт.
Откуда взялись числа выше, почему конфигуратор об этом не предупреждает и почему замена по имени не равна замене по смыслу, в статье-паровозе к этой обработке: "Внешняя обработка после обновления типовой: почему конфигуратор не предупредит и как проверить заранее".
Если вместе с конфигурацией обновляете платформу, пригодится "Помощник перехода на 1С 8.5", а если внешние обработки надо проверить ещё и на качество кода - "Анализ кода внешних обработок".
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.67
Вступайте в нашу телеграмм-группу Инфостарт