Как работает технология патчей (исправлений) в 1С:ERP и других типовых конфигурациях?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

При сопровождении крупных корпоративных систем на базе 1С, таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация или 1С:ЗУП, специалисты часто сталкиваются с необходимостью оперативного исправления критических ошибок. Выпуск полноценного релиза конфигурации — процесс небыстрый, требующий времени на тестирование и развертывание. Для решения этой проблемы фирма 1С разработала технологию оперативного выпуска исправлений, известную как патчи. Рассмотрим подробнее, как устроен этот механизм, как он функционирует "под капотом" и как правильно с ним работать разработчикам и администраторам баз данных.

Что такое патчи в 1С и зачем они нужны?

Патчи (или исправления) — это специальные мини-расширения конфигурации, которые выпускаются фирмой 1С для оперативного устранения зарегистрированных ошибок в текущих релизах. Главная цель этой технологии — позволить пользователям продолжать стабильную работу в программе без необходимости ожидания полноценного исправительного релиза конфигурации.

Проанализируем ключевые особенности патчей:

  1. Каждое исправление поставляется в виде небольшого расширения, которое содержит минимально необходимый набор измененных объектов метаданных или модулей.
  2. Патчи имеют строго целевое назначение — они исправляют конкретный баг, зарегистрированный в базе ошибок 1С.
  3. Патчи имеют ограниченный срок жизни. Они актуальны только до момента обновления конфигурации на релиз, в котором данная ошибка уже исправлена в основном коде.

Где искать и как идентифицировать патчи?

Все официальные патчи публикуются на портале технической поддержки 1С в разделе обновлений для конкретной версии конфигурации. Разберем правила их идентификации. Имена файлов исправлений и соответствующих им расширений всегда начинаются с префикса EF_ (сокращение от Error Fix), после которого следует уникальный восьмизначный цифровой код (например, EF_00123456). Этот код в точности соответствует номеру зарегистрированной ошибки на портале 1С. Благодаря этому вы всегда можете оперативно найти описание исправляемой проблемы по ее уникальному идентификатору.

Как настроить автоматическую загрузку исправлений?

В современных конфигурациях, использующих Библиотеку стандартных подсистем (БСП), за автоматическое получение хот-фиксов отвечает регламентное задание ЗагрузкаИУстановкаИсправленийПатчей. Выясним, как работает этот процесс по шагам:

  1. При наличии настроенной интернет-поддержки регламентное задание периодически обращается к серверам обновлений 1С.
  2. Система анализирует текущую версию вашей конфигурации и сопоставляет ее со списком доступных исправлений.
  3. Если обнаруживаются новые подходящие патчи, система скачивает их и автоматически подключает в базу данных в качестве расширений конфигурации.
  4. Изменения вступают в силу для всех активных пользователей сразу после перезапуска их клиентских сеансов.

Если автоматическая загрузка вам не подходит (например, на критически важных базах, где все изменения должны проходить ручной аудит разработчиков), эту опцию можно отключить в разделе Администрирование — Интернет-поддержка и услуги — Мониторинг классификаторов и исправлений.

Жизненный цикл патча и процесс его удаления

Один из самых частых вопросов программистов: нужно ли вручную отслеживать актуальность установленных исправлений? Ответ — нет, за вас это делает БСП. Рассмотрим, как происходит автоматическая очистка системы при обновлении:

В метаданных каждого патча EF_ жестко зашит диапазон версий конфигурации, для которых он предназначен. Во время обновления основной конфигурации на более свежий релиз механизмы БСП выполняют проверку всех установленных патчей. Если текущая версия конфигурации превышает верхнюю границу применимости патча (то есть ошибка исправлена в коде самого релиза), система автоматически помечает данное расширение-исправление на удаление. Окончательное удаление устаревших патчей происходит без участия администратора в процессе завершения обновления ИБ.

Конфликты с пользовательскими расширениями и их решение

На практике программисты часто сталкиваются с ситуацией, когда установленный патч начинает конфликтовать со своими собственными доработками конфигурации. Разберем, почему это происходит и как реагировать на такие инциденты.

Патчи по умолчанию устанавливаются в безопасном режиме с профилями безопасности. Если ваше собственное расширение переопределяет тот же метод (функцию или процедуру), используя аннотацию &Вместо (&Instead), может возникнуть конфликт приоритетов применения расширений. Система при запуске может выдать критическую ошибку или начать вести себя непредсказуемо.

Для диагностики и ручного управления выполните следующие шаги:

  1. Перейдите в меню НСИ и администрирование — Обслуживание — Исправления (патчи). Здесь вы увидите полный список активных и неактивных исправлений.
  2. Если патч вызывает сбой, временно деактивируйте его, сняв флажок Активно напротив соответствующего исправления. Это не повредит структуру базы данных, так как патчи не вносят изменений в физические таблицы СУБД, а лишь временно подменяют исполняемый программный код в оперативной памяти.
  3. Проанализируйте код проблемного патча. Вы можете открыть его в конфигураторе как обычное расширение, посмотреть внесенные изменения и при необходимости перенести эту логику непосредственно в ваше собственное расширение, скорректировав алгоритмы обхода ошибки.

Программный контроль установленных патчей

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


// Пример получения списка активных патчей средствами встроенного языка
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Активно", Истина);

УстановленныеРасширения = РасширенияКонфигурации.Получить(ПараметрыОтбора);

Для Каждого Расширение Из УстановленныеРасширения Цикл
    // Проверяем имя расширения по характерному префиксу патчей БСП
    Если Лев(Расширение.Имя, 3) = "EF_" Тогда
        ЗаписьЖурналаРегистрации("Патчи.Контроль",
            УровеньЖурналаРегистрации.Информация,
            ,
            ,
            "В системе обнаружено и активно исправление: " + Расширение.Имя);
    КонецЕсли;
КонецЦикла;

Влияние патчей на производительность системы

Необходимо учитывать, что большое количество одновременно установленных расширений-патчей (иногда в сложных релизах 1С:ERP их количество может достигать 20–30 штук) способно оказывать влияние на производительность. Основная нагрузка ложится на этап компиляции модулей при запуске нового сеанса пользователя. Если вы замечаете замедление времени старта системы, проанализируйте список патчей. Возможно, часть из них уже неактуальна или их пора заменить комплексным обновлением конфигурации до актуального релиза.

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

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

← На главную