Откат патчей и доработок в 1С: что можно убрать безопасно и чем рискуете

· 10 мин

Содержание

Исправления (патчи) в 1С 8.3 — это расширения конфигурации с назначением «Исправление». Удалить их проще всего в Конфигураторе: Конфигурация → Расширения конфигурации, выделить строку с именем вида EF_... и нажать «Удалить». Без Конфигуратора то же делается из пакетного режима командой 1cv8 DESIGNER ... /DeleteCfg -Extension <имя>. Данные базы при этом не трогаются: патч меняет код, а не документы.

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

Что в 1С называют исправлениями и где они хранятся

Под словом «исправление» в 1С 8.3 прячутся четыре разные вещи. Путать их опасно: способ удаления у каждой свой.

Что этоГде живётКак выглядит
🩹 Патч от разработчика типовойРасширение с назначением «Исправление»Имя вида EF_00_00123456, файл .cfe
🧩 Своё расширение (доработка)Расширение с назначением «Адаптация» или «Дополнение»Любое имя, файл .cfe
🛠 Правка основной конфигурацииСама конфигурация базыИзменённые модули и объекты, снятые с поддержки
🔁 Регистрация изменений для обменаСлужебные таблицы планов обменаЗаписи «что отправить на узел»

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

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

  • ⚠️ после установки патча что-то сломалось или изменилось поведение;
  • 🔄 патч «завис» после ручного обновления через Конфигуратор и мешает;
  • 📦 база передаётся в другую организацию или на другой релиз, и лишние расширения не нужны.

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

Перед удалением: проверьте, что именно держится на исправлении

Пять минут разбора экономят откат базы. Пройдите по пунктам.

  1. Составьте список. В Конфигураторе откройте Конфигурация → Расширения конфигурации. В таблице видно имя, синоним, версию, назначение и признак активности каждого расширения.
  2. Отделите патчи от доработок. Патчи — с назначением «Исправление» и именем на EF_. Всё остальное, скорее всего, писали ваши программисты или франчайзи.
  3. Выясните, что закрывает патч. Описание исправления видно в форме установленных исправлений в пользовательском режиме и в свойствах расширения. Если патч закрывает ошибку расчёта или проведения, после удаления она вернётся.
  4. Проверьте, есть ли у расширения данные. Откройте дерево расширения. Если в нём есть собственные (не заимствованные) справочники, документы, регистры или добавленные реквизиты у заимствованных объектов — в них лежат данные.
  5. Проверьте зависимости. Расширение заимствует объекты только основной конфигурации, поэтому другие расширения от него не зависят. Зато внешние обработки, отчёты и обмены могут обращаться к реквизитам из расширения. Поищите имя реквизита в коде внешних обработок и в правилах обмена.
  6. Сохраните копии. Каждое расширение сохраните в файл: выделите строку в списке расширений и выполните команду сохранения в файл из меню формы. Плюс полная выгрузка базы в .dt.

Сохранённый .cfe — это и есть ваша кнопка «отмена». Если после удаления что-то пойдёт не так, расширение загружается обратно за минуту.

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

Удаление патчей и расширений в Конфигураторе

Это основной и самый надёжный способ. Работает для патчей и для любых расширений.

Пошагово

  1. Попросите пользователей выйти из базы. Удаление расширения меняет состав программы для всех, активные сеансы увидят изменения только после перезапуска, а при работе с данными расширения могут получить ошибки.
  2. Запустите Конфигуратор под пользователем с полными правами.
  3. Откройте Конфигурация → Расширения конфигурации.
  4. Выделите строку нужного расширения.
  5. Нажмите кнопку «Удалить» на панели формы (или клавишу Delete) и подтвердите.
  6. Перезапустите пользовательский режим и проверьте операции, которые затрагивал патч.

Если у расширения были собственные данные, платформа предупредит, что они будут удалены. На этом шаге остановитесь, если не уверены, что данные не нужны.

Отключить вместо удалить

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

Отключение обратимо в один клик и не стирает данные расширения. Для диагностики «сломалось после патча» это лучший первый шаг.

Из командной строки

Для пакетной работы или скриптов администрирования есть ключ /DeleteCfg пакетного режима Конфигуратора:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DeleteCfg -Extension EF_00_00123456 /Out "D:\log_delete.txt"

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

Через пользовательский режим

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) расширения видны в Администрирование → Печатные формы, отчеты и обработки → Расширения. Там можно отключить или удалить расширение без Конфигуратора. Патчи в этом списке в части релизов не показываются отдельно — для них используйте форму установленных исправлений в разделе обновления программы (Администрирование → Обслуживание → Обновление версии программы) или Конфигуратор.

Откат через выгрузку и загрузку: .cfe, .cf и .dt

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

ФайлЧто содержитЧто заменяет при загрузкеРиск
.cfeОдно расширениеТолько это расширениеМинимальный
.cfОсновная конфигурацияВесь код и метаданные, данные остаютсяПотеря всех правок основной конфигурации
.dtКонфигурация + все данные + расширенияВсю базу целикомПотеря всех данных, введённых после выгрузки

Вернуть расширение к прошлой версии. В списке расширений выделите его и выполните загрузку из файла .cfe предыдущей версии. Расширение заменится, данные его объектов сохранятся, если структура не поменялась.

Убрать правки основной конфигурации разом. Загрузите .cf типовой того же релиза: Конфигурация → Загрузить конфигурацию из файла, затем Конфигурация → Обновить конфигурацию базы данных (F7). Все доработки в основной конфигурации исчезнут.

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

Откат всей базы. Загрузка .dt (Администрирование → Загрузить информационную базу) заменит базу полностью. Документы, введённые после создания выгрузки, пропадут. Для удаления исправлений этот способ имеет смысл только сразу после неудачной установки, пока пользователи ничего не провели.

Удаление правок, внесённых прямо в конфигурацию

Если программист правил основную конфигурацию, а не расширение, «удалить исправление» означает вернуть объект к типовому виду. Способов три.

Правки ещё не сохранены в базу

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

Вернуть отдельные объекты к поставщику

  1. Откройте Конфигурация → Сравнить конфигурации.
  2. Сравните основную конфигурацию с конфигурацией поставщика.
  3. В дереве отличий найдите изменённые модули и объекты.
  4. Для нужных объектов выберите объединение с приоритетом конфигурации поставщика — код вернётся к типовому.
  5. Выполните Конфигурация → Обновить конфигурацию базы данных.

Так можно точечно убрать одну правку и оставить остальные.

Удалить добавленный объект или подсистему

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

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

Очистка регистрации изменений в планах обмена

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

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

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

// Снять всю регистрацию изменений для одного узла
Узел = ПланыОбмена.ОбменСБухгалтерией.НайтиПоКоду("001");
Если Не Узел.Пустая() Тогда
    ПланыОбмена.УдалитьРегистрациюИзменений(Узел);
КонецЕсли;

// Снять регистрацию только по одному виду объектов
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Метаданные.Справочники.Номенклатура);

Имя плана обмена и код узла подставьте свои: их видно в дереве Конфигуратора и в списке узлов. Второй параметр необязателен: без него снимается регистрация всех объектов для узла.

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

Для визуального просмотра и точечной отмены регистрации есть стандартная обработка «Регистрация изменений для обмена данными» из набора универсальных обработок разработчика. Она показывает по каждому узлу, какие объекты зарегистрированы, и даёт снять отметку с выбранных.

Расширения после обновления релиза

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

  • ✅ Патчи. При обновлении через пользовательский режим программа сама удаляет патчи, исправления из которых вошли в новый релиз. Остальные патчи для старого релиза становятся неприменимы и тоже снимаются.
  • ⚠️ Ручное обновление через Конфигуратор . Здесь автоматики может не быть: патчи старого релиза остаются в базе. Если расширение заимствует объект, который в новом релизе изменился, при запуске появится ошибка применения расширения. Такой патч удалите вручную по шагам выше.
  • 🧩 Свои расширения. Не удаляются никогда. После обновления проверьте каждое: в Конфигураторе откройте расширение и запустите проверку его применимости к основной конфигурации (команда есть в меню расширения). Ошибки покажут, какие заимствованные объекты разошлись с новой версией.

Если после обновления база не стартует из-за расширения, запустите Конфигуратор и отключите это расширение — пользовательский режим снова откроется, а с расширением разберётесь отдельно.

Частые ошибки при удалении исправлений

  • ❌ Удалили «лишнее» расширение и потеряли данные. Добавленный в расширении реквизит у документа выглядел служебным, а в нём хранились, например, номера договоров. Перед удалением всегда сохраняйте .cfe и .dt.
  • ❌ Ключ -AllExtensions в скрипте. Скрипт писали для чистки патчей, а он снёс и собственные доработки. Указывайте расширение по имени.
  • ❌ Сняли типовой объект с поддержки ради мелкой правки. Потом при обновлении пришлось вручную объединять весь модуль. Мелкие исправления проще делать в своём расширении: его удаление ничего не ломает в основной конфигурации.
  • ❌ Очистили регистрацию изменений перед первым обменом. Новый узел остался пустым. Регистрацию чистят только у работающего, уже синхронизированного узла.
Какое исправление вы хотите убрать?

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

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