Как обновить конфигурацию 1С и не потерять работающие расширения

· 10 мин

Содержание

Обновлять 1С с расширениями нужно в таком порядке: резервная копия базы и выгрузка каждого расширения в файл .cfe, затем платформа (если релиз требует), затем основная конфигурация и «Обновить конфигурацию базы данных», затем проверка применимости расширений и только после этого — запуск пользователей. Сам файл обновления .cfu расширения не трогает: они хранятся в базе отдельно и после обновления остаются на месте. Ломаются они по другой причине — основная конфигурация меняется у них «под ногами».

Почему с расширениями обновление 1С требует отдельного алгоритма

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

Пока основная конфигурация не меняется, всё работает. Новый релиз от фирмы-разработчика может:

  • 🔧 переименовать или удалить процедуру, которую расширение перехватывает аннотацией &Перед, &После или &Вместо;
  • 🧩 изменить текст метода, заимствованного через &ИзменениеИКонтроль, — тогда контрольная копия в расширении перестаёт совпадать с оригиналом;
  • 📋 поменять контролируемые свойства заимствованного объекта: тип реквизита, состав табличной части, структуру формы;
  • 🗑️ удалить объект целиком, например старую печатную форму или отчёт.

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

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

Каких расширений это касается сильнее всего

Что делает расширениеРиск при обновленииЧто проверять
Добавляет свои объекты (отчёт, обработку, справочник)НизкийЗапуск, формирование отчёта
Добавляет реквизит или команду к типовому объектуСреднийФорму объекта, запись, проведение
Перехватывает методы через &Перед / &ПослеСреднийЧто метод с таким именем ещё существует
Подменяет методы через &ВместоВысокийСравнить новый типовой текст метода со своим
Меняет код через &ИзменениеИКонтрольВысокийПрименимость: при расхождении расширение не применится

Подготовка: резервная копия и инвентаризация расширений

Сделайте полную копию базы

Для файловой базы — выгрузка в .dt из Конфигуратора: Администрирование → Выгрузить информационную базу. Для клиент-серверной — дополнительно штатная копия средствами СУБД (MS SQL или PostgreSQL). Выгрузка .dt содержит и основную конфигурацию, и расширения, и данные, поэтому из неё можно вернуть всё целиком.

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

Выгрузите каждое расширение в файл

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

  1. В Конфигураторе откройте Конфигурация → Расширения конфигурации.
  2. Выделите расширение и откройте его конфигурацию.
  3. В окне расширения выполните сохранение в файл: команда находится в меню Конфигурация (сохранение конфигурации расширения в файл), формат — .cfe.
  4. Повторите для всех расширений из списка.

Составьте таблицу расширений

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

  • 📌 имя и версию;
  • 📌 назначение (исправление, адаптация, дополнение);
  • 📌 флаги «Активно» и «Безопасный режим» — после восстановления их придётся выставить так же;
  • 📌 кто автор и кто будет исправлять, если расширение перестанет применяться;
  • 📌 какие типовые объекты оно заимствует и через какие аннотации.

Последний пункт удобно посмотреть в дереве объектов расширения: заимствованные объекты помечены отдельным значком, а в модулях видны аннотации. Если расширение пришло от стороннего разработчика, уточните у него, есть ли версия под новый релиз конфигурации. Часто поставщик выпускает обновлённый .cfe вслед за фирмой 1С.

Расширения с назначением «Исправление» часто закрывают ошибку, которую в новом релизе уже исправили. Прочитайте описание изменений релиза: если ошибка исправлена, такое расширение после обновления лучше отключить и удалить.

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

Шаг 1. Платформа — только если нужна

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

Для клиент-серверной базы платформу обновляют на сервере и на всех клиентах до одного и того же номера. После установки новой версии сервера служба «Агент сервера 1С:Предприятия 8.3» должна работать уже от нового каталога bin.

Остановка или перезапуск службы агента обрывает все сеансы во всех базах кластера. Делайте это в согласованное окно, когда пользователи вышли.

Перезапуск сервера 1С нужен в двух случаях: при смене версии платформы и если после обновления конфигурации клиенты получают странные ошибки от устаревшего серверного кэша. Во втором случае сначала попробуйте запуск клиента с параметром /ClearCache — он чистит клиентский кэш и ничего не останавливает.

Шаг 2. Обновление основной конфигурации

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

Шаг 3. Расширения — до запуска пользователей

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

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

Шаг 4. Обработчики обновления

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

Как исправить расширение, которое перестало применяться

Исправление делается в Конфигураторе, в окне конфигурации расширения. Порядок зависит от причины.

Изменились контролируемые свойства заимствованного объекта

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

Не совпал текст метода с &ИзменениеИКонтроль

  1. Откройте модуль расширения и найдите метод с этой аннотацией.
  2. Сравните его с новым текстом метода в основной конфигурации — проще всего через встроенное сравнение модулей.
  3. Перенесите ваши вставки (#Вставка … #КонецВставки) и удаления (#Удаление … #КонецУдаления) в новый текст.
  4. Обновите расширение в базе и снова выполните F7.

Метод с &Вместо или &Перед исчез

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

Готовый .cfe от поставщика

Если разработчик расширения прислал новую версию, загрузите её поверх старой: в списке Конфигурация → Расширения конфигурации выделите расширение и загрузите файл. Затем — F7. Данные, которые хранятся в реквизитах расширения, при замене версии с тем же именем сохраняются, если структура реквизитов не удалена.

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

Тестирование обновлённой базы с расширениями

Проверка после обновления — это не «зашёл, открыл, работает». Пройдите по списку, который составили на этапе подготовки:

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

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

Автоматизация обновления 1С с расширениями в пакетном режиме

Когда баз несколько, обновление удобно собрать в командный файл. Пакетный режим Конфигуратора (1cv8.exe DESIGNER) умеет выгружать базу, обновлять конфигурацию, обновлять расширения и проверять их применимость.

@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set IB=/S "srv1c\buh"
set USR=/N "Администратор" /P "пароль"
set LOG=D:\1c_update\log

rem 1. Резервная копия всей базы вместе с расширениями
%V8% DESIGNER %IB% %USR% /DumpIB "D:\1c_update\buh_before.dt" /Out "%LOG%\dump.txt"

rem 2. Отдельная копия расширения
%V8% DESIGNER %IB% %USR% /DumpCfg "D:\1c_update\MyExt.cfe" -Extension "МоёРасширение" /Out "%LOG%\ext.txt"

rem 3. Обновление основной конфигурации и структуры базы
%V8% DESIGNER %IB% %USR% /UpdateCfg "D:\1c_update\1Cv8.cfu" /UpdateDBCfg /Out "%LOG%\update.txt"

rem 4. Проверка применимости расширения
%V8% DESIGNER %IB% %USR% /CheckCanApplyConfigurationExtensions -Extension "МоёРасширение" /Out "%LOG%\check.txt"

Номер версии в пути к 1cv8.exe замените на свой. Для файловой базы вместо /S "сервер\база" указывается /F "D:\Bases\Buh".

Если поставщик прислал новый .cfe, загрузка и применение расширения в пакетном режиме выглядят так:

%V8% DESIGNER %IB% %USR% /LoadCfg "D:\1c_update\MyExt_new.cfe" -Extension "МоёРасширение" /UpdateDBCfg -Extension "МоёРасширение" /Out "%LOG%\ext_load.txt"

Что ещё стоит знать:

  • 🔒 Перед запуском сценария пользователей нужно выпустить из базы. Если вход заблокирован с кодом разрешения, Конфигуратор запускают с параметром /UC <код>.
  • 📄 Каждый шаг пишет свой журнал через /Out. Читайте его после выполнения: код возврата не всегда отражает предупреждения.
  • 🔐 Пароль в командном файле — уязвимость. Храните такой файл на сервере с ограниченным доступом или передавайте пароль через переменную среды.
  • 🛠️ Для десятков баз администраторы обычно используют готовые сценарии на OneScript (например, vanessa-runner): они оборачивают эти же параметры 1cv8.exe и добавляют управление сеансами.

Если обновление 1С с расширениями прошло неудачно

Выбор способа зависит от того, что именно сломалось.

СитуацияЧто делатьЧем рискуете
F7 ещё не выполнено, обновление не понравилосьКонфигурация → Конфигурация базы данных → Вернуться к конфигурации БДНичем: структура базы не менялась
Основная конфигурация в порядке, одно расширение не работаетСнять флаг «Активно» у расширения, работать без него до исправленияПользователи временно без доработки
Расширение испорчено правкамиЗагрузить сохранённый .cfe и выполнить F7Теряются правки расширения после выгрузки
Обработчики обновления упали, данные в непонятном состоянииВосстановить базу из .dt или из копии СУБДТеряются данные, введённые после копии

Восстановление из .dt (Администрирование → Загрузить информационную базу) полностью заменяет базу: и конфигурацию, и расширения, и данные.

Загрузка .dt стирает всё, что ввели после выгрузки. Перед ней убедитесь, что пользователи не работали в базе с момента копии, или сохраните их данные отдельно.

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

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

Нужно ли удалять расширения перед обновлением конфигурации?
Нет. Расширения хранятся в базе отдельно и обновление основной конфигурации их не удаляет. Удаление расширения стирает данные его реквизитов, поэтому его делают только при отказе от доработки.
Можно ли обновить конфигурацию автоматически через интернет-поддержку, если есть расширения?
Можно, механизм обновления в типовых конфигурациях работает и при подключённых расширениях. Но проверку применимости и тестирование всё равно делают вручную после обновления.
Почему у одного пользователя расширение работает, а у другого нет?
Расширение может быть загружено не для всей базы, а только для части разделённой базы или зависеть от прав пользователя. Проверьте права роли из расширения у второго пользователя.
Что делать с расширением, которое закрывало ошибку типовой конфигурации?
Если в описании нового релиза ошибка указана как исправленная, отключите такое расширение и проверьте работу без него. Когда всё в порядке, удалите его.
Сколько времени закладывать на обновление базы с расширениями?
Ориентировочно: само обновление конфигурации и F7 — от 15 минут до нескольких часов в зависимости от размера базы. Плюс час-два на проверку расширений и тестирование. Точное время даст прогон на копии.