Исправление для типовой конфигурации: загрузка .cfe, проверка и откат

· 9 мин

Содержание

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

Типичная ситуация: после очередного обновления БП 3.0 перестал проводиться авансовый отчёт или «поехала» печатная форма. Фирма 1С выпускает исправление раньше следующего релиза, партнёр присылает архив с патчем, а интернет-поддержка в базе не подключена. Тогда патч ставят вручную — через конфигуратор. Порядок одинаков для БП, ЗУП, УТ и других типовых решений на платформе 8.3.

Что такое патч в 1С и когда без него не обойтись

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

Не путайте исправление с обновлением:

ЧтоФайлЧто меняетКак ставится
Исправление (патч).cfe, приходит в .zipОтдельные процедуры через расширениеЧерез список расширений
Обновление релиза.cfuВсю конфигурациюКонфигурация → Поддержка → Обновить конфигурацию
Полный дистрибутив.cfВсю конфигурациюЗагрузка или сравнение/объединение

Когда патч ставить:

  • 🐞 ошибка мешает работать прямо сейчас, а новый релиз ещё не вышел;
  • 📄 в описании исправления указан ваш точный номер релиза;
  • 🛠️ партнёр или линия консультаций 1С рекомендовали конкретный патч по вашему обращению.

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

В архиве с патчем обычно лежит файл .cfe и описание. Распакуйте архив: конфигуратор загружает именно .cfe, а не .zip. Архив .zip целиком принимает только форма установки исправлений в пользовательском режиме.

Подготовка базы к установке исправления

На подготовку уходит 5–10 минут. Пропускать её не стоит: патч ставится в рабочую базу, и проверить его заранее можно только на копии.

Сверьте релиз

В конфигураторе откройте Справка → О программе. В строке конфигурации указан номер релиза, например 3.0.xxx.yy. Тот же номер должен стоять в описании патча. Не совпадает — патч не ставьте.

Сделайте резервную копию

Администрирование → Выгрузить информационную базу сохраняет файл .dt. Для файловой базы можно просто скопировать каталог с файлом 1Cv8.1CD при закрытой базе. Без свежей копии патч в рабочую базу не ставьте.

Проверьте права и пользователей

  • 🔑 у вашей учётной записи должна быть роль полных прав (в типовых — «Администратор системы»);
  • 👥 узнайте, кто сейчас в базе: в конфигураторе Администрирование → Активные пользователи;
  • 🕐 выберите время, когда пользователи могут перезайти: исправление начинает работать у сеанса только после его перезапуска.

Посмотрите, какие расширения уже есть

Откройте Конфигурация → Расширения конфигурации и запишите список. Если там уже есть патч с тем же именем — это повторная установка или более новая версия того же исправления. Если есть самописные расширения, которые дорабатывают тот же объект, возможен конфликт (подробнее — в разделе про ошибки).

Перед установкой патча
Выполнено: 0 / 6

Установка патча через конфигуратор по шагам

Действия одинаковы для файловой и серверной базы.

Шаг 1. Откройте список расширений

Запустите базу в режиме «Конфигуратор» и выберите Конфигурация → Расширения конфигурации. Откроется окно со списком расширений и колонками свойств.

Шаг 2. Создайте строку под исправление

Нажмите Добавить. В списке появится новое пустое расширение с именем вида Расширение1. Имя можно не трогать: при загрузке файла оно заменится на имя из патча.

Шаг 3. Загрузите файл .cfe

Выделите новую строку и вызовите для неё команду Загрузить конфигурацию из файла… — она есть в меню действий окна расширений и в контекстном меню строки. Укажите распакованный .cfe. Конфигуратор спросит, обновить ли конфигурацию базы данных, — можно согласиться сразу.

Шаг 4. Проверьте свойства расширения

В строке патча проверьте флажки:

СвойствоЗначение для патчаПочему
Активновключеноиначе исправление не применяется
Безопасный режимвыключеноисправлению нужен доступ к коду, который безопасный режим запрещает
Защита от опасных действийкак в описании патчаобычно оставляют по умолчанию

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

Шаг 5. Обновите конфигурацию базы данных расширения

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

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

Шаг 6. Перезапустите сеансы

Попросите пользователей выйти и зайти заново. Сеанс, открытый до установки, работает со старым кодом и ошибку не «увидит» исправленной.

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

Почему патч не встаёт: ошибки и что с ними делать

Диагностика: выберите симптом

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

Как убедиться, что исправление работает

Проверка в три приёма:

  1. В конфигураторе. В окне Расширения конфигурации патч есть в списке, флажок «Активно» включён, предупреждений рядом со строкой нет.
  2. В пользовательском режиме. В типовых конфигурациях на БСП есть форма установленных исправлений. Её открывают из раздела Администрирование, через настройки обновления программы. Патч должен быть в списке со статусом установленного.
  3. По сценарию. Повторите ровно то действие, которое давало ошибку: проведите тот же документ, сформируйте тот же отчёт. Это главная проверка.

Если что-то пошло не так, загляните в журнал регистрации: Администрирование → Журнал регистрации в конфигураторе. Отфильтруйте события по времени установки — там будут записи об изменении расширений и ошибки применения.

Запишите имя патча и дату установки в любой общий файл или заметку. Через полгода, когда кто-то спросит «а почему тут расширение», ответ найдётся за минуту.

Установка патча в клиент-серверной базе

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

Отличия серверного варианта:

  • 🖥️ Резервная копия. Кроме .dt можно сделать бэкап средствами СУБД. Для больших баз это быстрее и надёжнее.
  • 🔒 Блокировка сеансов. Если нужно, чтобы никто не зашёл во время установки, включите блокировку начала сеансов в консоли кластера (свойства информационной базы) и задайте код разрешения для себя.
  • 🔄 Завершение сеансов. Перед тем как принудительно завершать сеансы в консоли кластера, предупредите пользователей: незаписанные документы пропадут. Делайте это в обед или после рабочего дня.
  • 🧩 Кэш. После установки у отдельных пользователей иногда остаётся старое поведение. Обычно помогает перезапуск клиента; запуск с ключом /ClearCache — следующий шаг.

Для распределённой базы (РИБ) патч ставят в центральном узле, если в описании не сказано иное. Расширения передаются в подчинённые узлы при обмене, когда это разрешено в их свойствах. Проверьте после ближайшей синхронизации, что патч появился в узлах.

Как удалить патч и вернуть прежнее поведение

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

Временно отключить

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

Удалить совсем

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

Откатить базу целиком

Если после установки повреждены данные или вы не уверены, что именно изменилось, загрузите .dt через Администрирование → Загрузить информационную базу. Загрузка .dt полностью заменяет базу: всё, что пользователи ввели после выгрузки, пропадёт.

СпособКогдаРиски
Снять «Активно»Проверить, виноват ли патчНет
Удалить расширениеПатч больше не нуженНет, если патч без своих данных
Загрузить .dtПовреждены данныеПотеря всего, что ввели после копии

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

Автоматическая и пакетная установка исправлений

Ручная установка удобна для одной базы. Когда баз десять, лучше автоматизировать.

Через интернет-поддержку

В типовых конфигурациях с подключённой интернет-поддержкой программа сама проверяет наличие исправлений для вашего релиза и может загружать и устанавливать их без конфигуратора. Настройка находится в разделе Администрирование → Интернет-поддержка и сервисы, в блоке обновления программы. В той же форме исправление можно добавить из файла — подойдёт архив .zip целиком.

Через пакетный режим конфигуратора

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

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER ^
  /F "D:\Bases\Buh" /N "Администратор" /P "пароль" ^
  /LoadCfg "D:\Patches\patch.cfe" -Extension "ИмяПатча" ^
  /UpdateDBCfg -Extension "ИмяПатча" ^
  /Out "D:\Patches\log.txt" /DisableStartupDialogs

Для серверной базы вместо /F укажите /S "сервер\имя_базы". Имя расширения в -Extension должно совпадать с именем патча — его видно в списке расширений после первой ручной установки или в описании исправления. Результат смотрите в файле, указанном в /Out.

Пароль в bat-файле открытым текстом — риск. Храните такие скрипты в каталоге с ограниченным доступом и удаляйте пароль после прогона.

Частые вопросы

Слетит ли поддержка типовой конфигурации после установки патча?
Нет. Исправление ставится расширением, основная конфигурация не меняется и остаётся на полной поддержке.
Можно ли ставить патч, пока пользователи работают?
Можно, если патч меняет только модули: обновление пройдёт динамически. Но исправленный код пользователи получат только после перезапуска сеанса.
Нужно ли устанавливать патч в каждую базу отдельно?
Да. Расширение живёт внутри конкретной информационной базы. Пять баз одной конфигурации — пять установок, поэтому для серии баз удобен пакетный режим.
Что будет с патчем при обновлении на следующий релиз?
Механизм обновления типовой конфигурации удаляет неактуальные исправления. При ручном обновлении через конфигуратор проверьте список расширений и удалите старые патчи сами.
Чем патч отличается от собственного расширения программиста?
Механизм тот же, разница в назначении. У патча назначение «Исправление», его выпускает фирма 1С под конкретный релиз, и система обновления знает, когда его удалить. Собственное расширение никто, кроме вас, не сопровождает.