При сопровождении крупных корпоративных систем на базе 1С, таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация или 1С:ЗУП, специалисты часто сталкиваются с необходимостью оперативного исправления критических ошибок. Выпуск полноценного релиза конфигурации — процесс небыстрый, требующий времени на тестирование и развертывание. Для решения этой проблемы фирма 1С разработала технологию оперативного выпуска исправлений, известную как патчи. Рассмотрим подробнее, как устроен этот механизм, как он функционирует "под капотом" и как правильно с ним работать разработчикам и администраторам баз данных.
Патчи (или исправления) — это специальные мини-расширения конфигурации, которые выпускаются фирмой 1С для оперативного устранения зарегистрированных ошибок в текущих релизах. Главная цель этой технологии — позволить пользователям продолжать стабильную работу в программе без необходимости ожидания полноценного исправительного релиза конфигурации.
Проанализируем ключевые особенности патчей:
Все официальные патчи публикуются на портале технической поддержки 1С в разделе обновлений для конкретной версии конфигурации. Разберем правила их идентификации. Имена файлов исправлений и соответствующих им расширений всегда начинаются с префикса EF_ (сокращение от Error Fix), после которого следует уникальный восьмизначный цифровой код (например, EF_00123456). Этот код в точности соответствует номеру зарегистрированной ошибки на портале 1С. Благодаря этому вы всегда можете оперативно найти описание исправляемой проблемы по ее уникальному идентификатору.
В современных конфигурациях, использующих Библиотеку стандартных подсистем (БСП), за автоматическое получение хот-фиксов отвечает регламентное задание ЗагрузкаИУстановкаИсправленийПатчей. Выясним, как работает этот процесс по шагам:
Если автоматическая загрузка вам не подходит (например, на критически важных базах, где все изменения должны проходить ручной аудит разработчиков), эту опцию можно отключить в разделе Администрирование — Интернет-поддержка и услуги — Мониторинг классификаторов и исправлений.
Один из самых частых вопросов программистов: нужно ли вручную отслеживать актуальность установленных исправлений? Ответ — нет, за вас это делает БСП. Рассмотрим, как происходит автоматическая очистка системы при обновлении:
В метаданных каждого патча EF_ жестко зашит диапазон версий конфигурации, для которых он предназначен. Во время обновления основной конфигурации на более свежий релиз механизмы БСП выполняют проверку всех установленных патчей. Если текущая версия конфигурации превышает верхнюю границу применимости патча (то есть ошибка исправлена в коде самого релиза), система автоматически помечает данное расширение-исправление на удаление. Окончательное удаление устаревших патчей происходит без участия администратора в процессе завершения обновления ИБ.
На практике программисты часто сталкиваются с ситуацией, когда установленный патч начинает конфликтовать со своими собственными доработками конфигурации. Разберем, почему это происходит и как реагировать на такие инциденты.
Патчи по умолчанию устанавливаются в безопасном режиме с профилями безопасности. Если ваше собственное расширение переопределяет тот же метод (функцию или процедуру), используя аннотацию &Вместо (&Instead), может возникнуть конфликт приоритетов применения расширений. Система при запуске может выдать критическую ошибку или начать вести себя непредсказуемо.
Для диагностики и ручного управления выполните следующие шаги:
При написании собственных доработок иногда требуется программно определить, установлен ли конкретный патч в системе, чтобы избежать дублирования логики или предупредить о возможных конфликтах. Посмотрим на пример программного кода, который позволяет получить список всех установленных исправлений конфигурации:
// Пример получения списка активных патчей средствами встроенного языка
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Активно", Истина);
УстановленныеРасширения = РасширенияКонфигурации.Получить(ПараметрыОтбора);
Для Каждого Расширение Из УстановленныеРасширения Цикл
// Проверяем имя расширения по характерному префиксу патчей БСП
Если Лев(Расширение.Имя, 3) = "EF_" Тогда
ЗаписьЖурналаРегистрации("Патчи.Контроль",
УровеньЖурналаРегистрации.Информация,
,
,
"В системе обнаружено и активно исправление: " + Расширение.Имя);
КонецЕсли;
КонецЦикла;
Необходимо учитывать, что большое количество одновременно установленных расширений-патчей (иногда в сложных релизах 1С:ERP их количество может достигать 20–30 штук) способно оказывать влияние на производительность. Основная нагрузка ложится на этап компиляции модулей при запуске нового сеанса пользователя. Если вы замечаете замедление времени старта системы, проанализируйте список патчей. Возможно, часть из них уже неактуальна или их пора заменить комплексным обновлением конфигурации до актуального релиза.
Также важно знать, что технология патчей полноценно поддерживается и для мобильных клиентов 1С. Если на сервере установлен патч, исправляющий код форм, мобильное приложение автоматически подтянет эти изменения при очередном сеансе синхронизации без необходимости пересборки самого мобильного клиента.
Таким образом, использование патчей — это эффективный и безопасный инструмент поддержки информационных систем 1С в актуальном состоянии, позволяющий минимизировать простои из-за программных ошибок программных продуктов фирмы 1С.