К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как сделать патч 1С: создание и установка исправлений

Как создать патч в 1С: выбор объектов, поставка исправлений через файл .cfe, применение патча в конфигураторе, проверка результата и типичные ошибки.

Патч в 1С — это файл исправления с расширением .cfe, который позволяет точечно доработать конфигурацию, не снимая её с полной поддержки и не блокируя автоматическое обновление. Механизм патчей появился в платформе 8.3.11 и с тех пор стал стандартным способом доставки быстрых исправлений в типовые конфигурации. В отличие от расширения, патч работает только внутри конфигуратора и предназначен в первую очередь для исправления ошибок, а не для добавления новой функциональности.

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

Ниже разобран полный цикл работы с патчем: от подготовки стенда и выбора объектов до установки исправления в рабочую базу и проверки результата. Инструкция ориентирована на конфигуратор платформы 8.3.11 и новее.

Что такое патч и чем он отличается от расширения

Патч — это особый вид расширения конфигурации, который создаётся только в конфигураторе и только для исправления существующих объектов основной конфигурации. В патч нельзя добавить новый справочник, документ или регистр: можно лишь изменить свойства и модули уже существующих объектов. Это принципиальное ограничение отличает патч от обычного расширения, где добавление собственных объектов разрешено.

Второе отличие — способ распространения. Расширение устанавливается пользователем прямо в режиме «Предприятие» через меню «Все функции» или административный раздел. Патч загружается только через конфигуратор, что делает его инструментом разработчика и внедренца, а не конечного пользователя. Зато патч не требует отключения безопасного режима и не влияет на профили безопасности.

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

Патч или расширение: что выбрать

Патч (.cfe)

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

Расширение (.cfe)

Добавление новых объектов и доработка поведения без изменения конфигурации, устанавливается в режиме Предприятие, подходит для постоянных доработок

Изменение конфигурации

Прямая правка со снятием объектов с поддержки — крайняя мера, усложняет все последующие обновления

Подготовка: стенд, копия базы и версия платформы

Никогда не создавайте и не отлаживайте патч сразу в рабочей базе. Разверните копию информационной базы на тестовом стенде: выгрузите рабочую базу в файл .dt через «Администрирование → Выгрузить информационную базу» и загрузите её в новую пустую базу. Убедитесь, что версия конфигурации на стенде совпадает с рабочей — патч, собранный под другой релиз, может не установиться или дать непредсказуемый результат.

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

Создание патча в конфигураторе

Откройте конфигуратор тестовой базы и перейдите в меню «Конфигурация → Расширения конфигурации». В открывшемся списке нажмите «Создать патч». Платформа создаст новое расширение с назначением «Исправление» — это видно в свойствах расширения в колонке «Назначение». Задайте понятное имя, например «ИсправлениеПроведенияРеализации», и префикс, чтобы контролируемые объекты было легко отличить.

Далее добавьте в патч объекты, которые нужно исправить. Для этого в дереве конфигурации найдите нужный объект (общий модуль, документ, обработку), откройте его и внесите исправление прямо в код или свойства. Платформа автоматически пометит объект как заимствованный в патч. Альтернативный путь — в окне расширения перейти на вкладку конфигурации и вручную добавить объект через контекстное меню «Добавить в расширение».

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

Порядок создания патча
  1. 1
    Разверните копию рабочей базы на тестовом стенде и сверьте версию конфигурации
  2. 2
    Откройте Конфигурация → Расширения конфигурации → Создать патч, задайте имя и префикс
  3. 3
    Внесите исправления в нужные объекты — они автоматически попадут в патч как заимствованные
  4. 4
    Обновите конфигурацию базы данных (F7) и проверьте исправление в режиме Предприятие
  5. 5
    Выгрузите патч в файл .cfe через кнопку выгрузки в окне расширений
  6. 6
    Загрузите файл в рабочую базу через тот же пункт меню и обновите конфигурацию БД

Тестирование и выгрузка патча в файл

Перед выгрузкой обязательно обновите конфигурацию базы данных клавишей F7 и запустите тестовую базу в режиме «Предприятие». Воспроизведите сценарий, в котором проявлялась ошибка, и убедитесь, что исправление работает. Проверьте и смежные сценарии: замещённая процедура может вызываться из других мест, и изменение её поведения способно затронуть неожиданные участки учёта.

Полезно выполнить проверку конфигурации: «Конфигурация → Проверка конфигурации» с включённой проверкой расширений. Это выявит синтаксические ошибки в заимствованных модулях и конфликты имён. Если проверка чистая, возвращайтесь в окно расширений конфигурации, выделите патч и нажмите «Выгрузить в файл». Укажите имя файла — получится файл с расширением .cfe, который можно перенести на другой компьютер или отправить коллегам.

Установка патча в рабочую базу

Перед установкой сделайте резервную копию рабочей базы — выгрузку .dt или средствами СУБД, если база клиент-серверная. Это займёт несколько минут, но даст гарантированную точку отката. Затем откройте конфигуратор рабочей базы, перейдите в «Конфигурация → Расширения конфигурации» и нажмите «Загрузить из файла», указав полученный .cfe.

После загрузки патч появится в списке расширений с назначением «Исправление». Убедитесь, что флажок активности установлен, и обновите конфигурацию базы данных (F7). Обновление потребует монопольного доступа: пользователей нужно попросить выйти или завершить сеансы принудительно через консоль кластера. После обновления запустите базу в режиме «Предприятие» и повторите проверку исправленного сценария уже на реальных данных.

Контрольные точки

Как проверить результат

Патч в списке расширений
Норма

Виден с назначением Исправление, флажок активен, ошибок подключения нет

Тревожный признак

Строка подсвечена, есть сообщение о несовместимости версии конфигурации

Сценарий с ошибкой
Норма

Ошибка не воспроизводится, данные формируются корректно

Тревожный признак

Ошибка осталась или появилась новая в смежном сценарии

Журнал регистрации
Норма

Нет ошибок фона и транзакций после установки

Тревожный признак

Появились ошибки вызова замещённых процедур

Жизненный цикл: обновление конфигурации и удаление патча

Патч не вечен: при выходе нового релиза конфигурации его судьбу нужно решить явно. Если официальное обновление уже содержит аналогичное исправление, патч следует удалить перед обновлением — иначе замещённые процедуры из патча будут конфликтовать с новым кодом вендора. Удаление выполняется в том же окне расширений: выделите патч и нажмите «Удалить», затем обновите конфигурацию базы данных.

Если исправление всё ещё актуально, патч придётся пересобрать под новый релиз: обновите тестовую базу, откройте патч, проверьте, что заимствованные объекты не изменились у поставщика, при необходимости перенесите исправление в новый код и выгрузите файл заново. Именно поэтому минимальный состав патча так важен — каждая лишняя замещённая процедура превращается в ручную работу при каждом обновлении.

Типичные ошибки
01
Замещение всего модуля вместо одной процедуры — при каждом обновлении приходится вручную сличать весь код
02
Создание патча на версии конфигурации, отличной от рабочей — файл не загружается или ломает логику
03
Установка в рабочую базу без резервной копии — при ошибке откат занимает часы вместо минут
04
Забытый патч после обновления — старое исправление перекрывает новый код поставщика и возвращает баг
05
Попытка добавить в патч новый объект — платформа не даст этого сделать, время потрачено впустую

Ограничения механизма и альтернативы

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

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

Маршрут решения

Как выбрать действие

Нужно исправить ошибку в типовом коде до выхода релизаСоздайте патч с замещением только проблемной процедуры
Нужно добавить новый отчёт, реквизит или печатную формуИспользуйте обычное расширение конфигурации — патч новые объекты не поддерживает
Исправление затрагивает десятки объектов и структуру данныхРассмотрите ожидание официального обновления или доработку конфигурации — патч будет нежизнеспособен
После обновления конфигурации патч конфликтует с новым кодомУдалите патч, проверьте наличие исправления в релизе и при необходимости пересоберите его заново
Итог

Что важно запомнить

Патч создаётся через Конфигурация → Расширения конфигурации → Создать патч и содержит только исправления существующих объектов. Работайте на копии базы, замещайте минимум процедур, тестируйте до выгрузки и делайте резервную копию перед установкой. После обновления конфигурации патч удаляется или пересобирается под новый релиз.

Частые вопросы о патчах 1С

Можно ли установить патч в режиме Предприятие, как обычное расширение?

Нет. Патч загружается только через конфигуратор: «Конфигурация → Расширения конфигурации → Загрузить из файла». В пользовательском интерфейсе управления расширениями он отображается, но установка и удаление выполняются администратором в конфигураторе с последующим обновлением конфигурации базы данных.

Снимет ли патч конфигурацию с поддержки?

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

Что произойдёт с патчем при обновлении конфигурации?

Патч останется в списке расширений, но может стать несовместим