Обработка на Инфостарте
Проверка внешних обработок и печатных форм перед обновлением типовой
После обновления типовой внешняя печатная форма открывается без ошибки и падает на строке, где зовёт пропавший метод. Обработка находит такие строки до обновления: по каждой вашей внешней обработке видно, какой вызов не переживёт новый релиз и почему.
Обработка на Инфостарте бесплатно, код открыт. Внешняя обработка на управляемых формах, в базу ничего не пишет. Проверена на платформе 8.3.27 и серверных базах.
Конфигуратор при обновлении смотрит на саму конфигурацию. Файл .epf на диске и строка справочника "Дополнительные отчёты и обработки" для него просто данные, поэтому о внешних обработках при обновлении не предупреждает никто. Компилятор тоже не поможет: вызов несуществующего метода общего модуля и обращение к удалённому документу он пропускает, ошибка приходит только при исполнении строки.
Обработка читает код ваших внешних обработок и печатных форм, выписывает из него вызовы общих модулей и менеджеров типовой и ищет каждый в двух местах: в текущей конфигурации и в выгрузке нового релиза в файлы. Если метода в новом релизе нет, он стал неэкспортным, у него меньше параметров, чем передаёт вызов, или пропал сам документ, строка получает статус СЛОМАЕТСЯ.
Пример масштаба. При переходе УТ для Казахстана с 2.2.16.5 на 3.4.4.87 из 2 839 экспортных методов общих модулей без изменений остался 851. Настоящая обработка обмена с сайтом стороннего разработчика дала 79 вызовов типовой, и 33 из них после перехода упадут.
Что она делает
Два источника обработок
Справочник дополнительных отчётов и обработок или папка с файлами .epf и .erf. Контейнер распаковывается кодом самой обработки, конфигуратор для этого не запускается.
Отличает вызов от совпадения имён
Вызовы в комментариях и строковых литералах не считаются. Локальная переменная, параметр или Перем с именем общего модуля модулем не считаются, методы коллекций вида ПланыОбмена.ВыбратьИзменения() объектом тоже.
Выгружает только нужное
Кнопка "Выгрузить нужные модули текущей конфигурации" запускает пакетный конфигуратор и выгружает только объекты, которые обработки реально вызывают. Если полная выгрузка в файлы уже есть, подойдёт она.
Честные статусы
Объект расширения в выгрузке типового релиза отсутствует законно, поэтому получает НЕ ПРОВЕРЕНО, а не СЛОМАЕТСЯ. Без выгрузки нового релиза методы тоже не проверяются, и отчёт пишет это прямо.
Отчёт с адресом каждой строки
Обработка, модуль, номер строки, вызов и причина. Сломанное в новом релизе стоит сверху. Внутри есть страница "Как это работает" с разбором статусов.
Четыре статуса отчёта
Статус ставится каждому вызову типовой отдельно, одна обработка может получить строки всех четырёх видов.
| Статус | Что значит |
|---|---|
| СЛОМАЕТСЯ | В выгрузке нового релиза нет метода или объекта, метод не экспортный или не сходится число параметров. Чинить до переноса. |
| УЖЕ СЛОМАНО | Вызов не работает и в текущей конфигурации: ветка кода мёртвая или обработка писалась под другую конфигурацию. К обновлению отношения не имеет. |
| НЕ ПРОВЕРЕНО | Нет выгрузки, по которой можно проверить метод, или вызов идёт в объект расширения. |
| ОК | Метод и объект на месте, метод экспортный, число параметров подходит. |
Что показали прогоны
Платформа 8.3.27, серверные базы. Типовые поставки УТ для Казахстана 2.2.16.5 и 3.4.4.87, плюс УТ 11.5.22. Каждый прогон сверялся с независимым разбором тех же файлов отдельным скриптом на Python. Чего не гоняли, так и написано.
| Показатель | Значение | Как надо | Вердикт | Что это значит |
|---|---|---|---|---|
| Обработка обмена с сайтом под УТ 2.2, переход 2.2.16.5 -> 3.4.4.87 | 33 из 79 вызовов | 0 | чинить | 26 раз нет объекта метаданных, 4 раза нет общего модуля, 3 раза модуль есть, метода нет; по экспорту и числу параметров ни одной |
| Та же обработка, вызовы, сломанные ещё на 2.2.16.5 | 9 | - | инфо | 4 раза Перечисления.СтавкиНДС (обработка писалась и под российскую УТ), 5 объектов её собственного комплекта |
| 42 наши обработки под БСП против 2.2.16.5 | 13 из 14 вызовов | - | инфо | 7 из них модули ДополнительныеОтчетыИОбработки*: функции регистрации дополнительной обработки в 2.2 нет |
| Подложка с четырьмя внесёнными поломками | 8 СЛОМАЕТСЯ из 8 | все внесённые | норма | переименованный метод, снятый Экспорт, добавленный обязательный параметр, удалённый документ пойманы у каждого вызова; вызовы в комментариях и строках не посчитаны |
| Сверка с независимым разбором | 0 расхождений по существу | 0 | норма | все разницы на трёх наборах объяснены построчно; две ошибки первой версии (локальные имена, методы коллекций) исправлены в 1.0.1 |
| Время сверки | 1,7 с | - | инфо | 4 файла комплекта обработки обмена; весь прогон с подключением к базе около 11 с |
| Модуль на 11 тыс. строк | разобран | разбор без ошибки | норма | 4 файла вместе за 6,4 с |
| Только живые метаданные, без выгрузок | 31 из 41 НЕ ПРОВЕРЕНО | - | внимание | без текста модулей проверить методы нечем, обработка так и пишет; для работы нужна выгрузка нового релиза |
| Запуск в базе с режимом совместимости 8.2 | не компилируется | - | внимание | "Переменная не определена (НаправлениеПоиска)"; обход проверен прогоном: запуск в современной базе с двумя выгрузками |
| Запуск конфигуратора кнопкой из формы | не проверялся прогоном | - | внимание | та же командная строка пакетного конфигуратора проверена запуском на тестовой базе, из самой формы нет |
| Конфигурации без БСП, файловые базы, веб-клиент, Linux-сервер | не проверялись | - | внимание | без справочника дополнительных обработок источником остаётся папка, это видно только по коду |
Разбор результата
Главное, что показала настоящая обработка: при смене редакции ломаются не сигнатуры. Проверка числа параметров на ней не сработала ни разу, 26 поломок из 33 дали объекты, которых в новой редакции под старым именем больше нет. Переход с 2.2 на 3.4 это смена редакции с переносом данных, мы брали его как худший случай. Между соседними релизами одной редакции на чистых типовых поставках мы не мерили.
Как проверить обработки до обновления
- 01
Открыть обработку
Файл - Открыть в любой современной базе. Если текущая база в режиме совместимости 8.2, запускайте в другой, хоть в копии нового релиза, и давайте обе выгрузки файлами.
- 02
Выгрузить текущую конфигурацию
Кнопкой "Выгрузить нужные модули текущей конфигурации" или указать готовую полную выгрузку в файлы.
- 03
Указать выгрузку нового релиза
Делать её из копии своей базы после сравнения-объединения. В чистом шаблоне поставки нет ваших доработок, и вызов доработанного объекта по нему выглядит сломанным.
- 04
Проверить и разобрать красное
Кнопка "Проверить". Начинать со строк СЛОМАЕТСЯ: у каждой видно обработку, номер строки и что с вызовом в новом релизе. Чем заменить вызов, решаете вы: автозамены нет, потому что новое имя часто ведёт себя иначе.
Өзіңіз шеше алмай жатырсыз ба? Жазыңыз, бірге қараймыз
Ведём казахстанские типовые: Бухгалтерию, Зарплату и управление персоналом, Розницу. Обновляем базы с доработками так, чтобы фискальная часть шла в ногу с законом, а ваши доработки не отваливались.
- Құны
- от 25 900 ₸цена лицензии от вендора (1С), без наших работ; сопровождение и доработки - по разбору базы
Тақырып бойынша талдаулар
Рядом по теме
Внешняя обработка не работает после обновления 1С
Разбор по тексту ошибки: почему пропавший метод компилируется, где теряется сигнал при обновлении и чем замена по имени отличается от замены по смыслу.
Анализатор кода 1С
Те же внешние обработки с другой стороны: запросы в цикле, запись без проверок, обращения наружу.
Подготовка к переходу на 1С 8.5
Если вместе с конфигурацией обновляется платформа: что поменялось в самой 8.5 и что это задевает в коде.
Жиі қойылатын сұрақтар
Расширения она тоже проверяет?
Нет. Вызовы в объекты расширений получают НЕ ПРОВЕРЕНО: в выгрузке типового релиза их нет и быть не должно, и выдавать это за поломку было бы неправдой. Применимость самих расширений после обновления это отдельная задача, её обработка не решает.
Откуда брать выгрузку нового релиза?
Из копии своей базы после сравнения-объединения с новым релизом. Выгрузка из чистого шаблона поставки тоже сработает, но доработок в ней нет, и каждый вызов доработанного объекта получит СЛОМАЕТСЯ, хотя при нормальном обновлении доработка переедет.
У нас старая УТ 2.2 в режиме совместимости 8.2. Что делать?
В такой базе обработка не компилируется: режим совместимости прячет всё, что появилось в 8.3. Запустите её в любой современной базе и укажите обе выгрузки файлами. Если выгрузка текущей конфигурации другой версии, чем база, где идёт проверка, обработка сверяет текущую целиком по файлам, и в строке итога это написано.
Можно обойтись без выгрузки?
Частично. По живым метаданным видно, есть ли общий модуль и документ, но не видно, какие методы внутри модуля и сколько у них параметров. На прогоне без выгрузок 31 вызов из 41 получил НЕ ПРОВЕРЕНО. Для проверки перед обновлением нужна выгрузка нового релиза.
Чем она отличается от анализатора кода внешних обработок?
Задачей. Анализатор ищет дефекты кода: запросы в цикле, запись без проверок, обращения наружу. Эта обработка ничего не говорит о качестве кода, она сверяет вызовы типовой с новым релизом. Разбор кода у них общий, так что вызов в комментарии или строке обе не посчитают.
Что она не увидит?
Вызовы, собранные строкой: Выполнить и имена модулей, сложенные текстом. Методы объекта, полученного в переменную. Другое поведение метода с новым именем: такой случай она покажет как "нет метода", а смысл замены проверяется глазами. Реквизит формы с именем общего модуля пока от модуля не отличается.
1С жүйеңізге тегін экспресс-аудит
1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.
Тапсырманы талқылайық
Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.