Обновление расширения конфигурации без потери данных и настроек

· 10 мин

Содержание

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

Частая ошибка — сначала удалить старое расширение, потом добавить новое. Если расширение хранит свои данные (справочники, регистры, реквизиты), при удалении они пропадают вместе с ним. Обновление поверх сохраняет данные, если структура осталась совместимой.

Подготовка к замене расширения: что проверить до загрузки

Расширения конфигурации появились в платформе 8.3.6. Всё ниже относится к 8.3 с интерфейсом «Такси» и типовым конфигурациям на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.

Перед заменой ответьте себе на пять вопросов:

  • 🔤 Как называется расширение в базе. Имя видно в списке расширений. Файл с другим именем ляжет рядом вторым расширением, а не заменит первое.
  • 🗄️ Есть ли у расширения свои данные. Откройте его в Конфигураторе и посмотрите, есть ли собственные (не заимствованные) справочники, документы, регистры или добавленные реквизиты.
  • 🧩 Какой режим совместимости у нового файла. Он должен подходить к режиму совместимости основной конфигурации. Расширение, собранное под более новый режим, на старую базу не встанет.
  • 🔢 Под какой релиз конфигурации собран .cfe. Заимствованные объекты проверяются на совпадение с основной конфигурацией. Расширение под релиз «из будущего» может не примениться.
  • 👥 Кто сейчас работает в базе. Новая версия расширения подхватывается только новыми сеансами.

Резервную копию делайте, если у расширения есть свои данные или вы меняете их структуру. Для ИБ на сервере подойдёт бэкап СУБД, для файловой — выгрузка .dt или копия каталога с 1Cv8.1CD.

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

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

Как заменить расширение без удаления: обновление из файла

Обновление из файла сохраняет имя, настройки и данные. Это основной способ замены.

В пользовательском режиме (без Конфигуратора)

Подходит, когда у вас права полного администратора, а Конфигуратора под рукой нет.

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

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

В Конфигураторе

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

Загрузка файла и обновление конфигурации БД — два отдельных шага. Пока второй не выполнен, пользователи работают со старой версией.

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

Когда старое расширение снимают полностью и как убрать хвосты

Удалять и ставить заново оправдано в трёх случаях:

  1. Новое расширение — по сути другая разработка с другим именем.
  2. У старого нет своих данных, и оно повреждено (не открывается, не применяется).
  3. Разработчик прямо пишет, что новая версия не совместима со старой и требует чистой установки.

Порядок такой:

  1. Сохраните старое расширение в файл.
  2. Если у него есть данные, которые нужны, выгрузите их: отчётом в Excel или обработкой выгрузки.
  3. Удалите расширение из списка расширений или в Конфигураторе (Действия → Удалить).
  4. В Конфигураторе выполните обновление конфигурации БД, чтобы удалились таблицы расширения.

После удаления остаются хвосты, которые мешают новой версии:

  • 📝 Сохранённые настройки форм. Пользователь настраивал колонки и отборы в форме из расширения — настройки остались в базе. Новая форма с другими элементами может открываться криво. Очистите настройки пользователей через управление настройками в разделе «Администрирование» (найдите команду по слову «настройки пользователей»).
  • 💾 Клиентский кэш. У пользователей на компьютерах кэшируются метаданные. Если после замены видна старая форма, запустите 1С с ключом /ClearCache.
  • 🔗 Ссылки в отчётах и рассылках. Варианты отчётов из расширения, команды печати, регламентные задания — проверьте, что новая версия их пересоздала.

Загрузка нового расширения и его свойства

Новое расширение добавляют командой «Добавить из файла» в списке расширений или в Конфигураторе: Действия → Добавить, затем Загрузить из файла… в созданное пустое расширение. После этого обязательно обновите конфигурацию БД.

Дальше проверьте свойства. Их видно в списке расширений и в Конфигураторе.

СвойствоЧто делаетКак ставить
АктивноПрименяется ли расширение при запускеВключено. Снимите, чтобы временно отключить без удаления
Безопасный режимОграничивает работу с файлами, COM, внешними компонентамиОставьте включённым, если разработчик не требует обратного
Защита от опасных действийПредупреждает пользователя перед потенциально опасными операциямиОбычно включена
Используется в распределённой ИБПередаётся ли расширение в узлы РИБВключите, если базы связаны обменом РИБ
Область действияВся информационная база или одна область данныхДля обычной базы — «Информационная база»

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

Флажок «Активно» удобен как кнопка отката. Новая версия ведёт себя странно — снимите флажок, перезапустите программу, и база работает без расширения. Данные расширения при этом не удаляются.

После загрузки новой версии
Выполнено: 0 / 6

Замена расширения с управляемыми формами: что ломается

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

Что происходит при замене:

  • 🧱 Новые элементы формы. Если расширение добавляет поле или кнопку, их место задаётся относительно элементов типовой формы. Фирма 1С переименовала группу в новом релизе — элемент расширения может встать не туда или не примениться.
  • 🔁 Обработчики событий. Для событий формы в расширении указывают тип вызова: перед типовым, после него или вместо. Если в новой версии «перед» поменяли на «вместо», типовой код этого события перестанет выполняться. Проверьте это при чтении описания изменений.
  • 🛡️ Контроль заимствованных свойств. У заимствованного объекта можно включить контроль свойств. Если основная конфигурация обновилась и контролируемое свойство изменилось, расширение не применится. Это защита, а не поломка: разработчик должен пересобрать расширение под новый релиз.

Практический порядок для расширений с формами:

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

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

Ошибки при замене расширения и журнал регистрации

Если расширение не применилось, платформа сообщает об этом при запуске или при обновлении конфигурации БД. Подробности ищите в журнале регистрации.

Где открыть журнал:

  • в программе: Администрирование → Обслуживание → Журнал регистрации;
  • в Конфигураторе: Администрирование → Журнал регистрации.

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

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

Если ошибка возникает только у части пользователей — почти всегда это кэш или настройки форм. Запуск с /ClearCache у этого пользователя решает вопрос быстрее, чем поиск в журнале.

Автоматизация обновления расширений

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

Пакетный режим Конфигуратора

Команда загружает расширение из файла и обновляет конфигурацию БД для него:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль" /LoadCfg "D:\upd\МоёРасширение.cfe" -Extension "МоёРасширение" /UpdateDBCfg -Extension "МоёРасширение" /DisableStartupDialogs /Out "D:\upd\log.txt"
  • /S — сервер и имя базы; для файловой ИБ вместо него /F"D:\Bases\Buh".
  • -Extension — имя расширения в базе, именно его заменит файл.
  • /Out — файл лога. Читайте его после каждого запуска: при ошибке Конфигуратор не покажет окно.

Путь к 1cv8.exe подставьте свой — номер версии платформы в нём у каждого разный.

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

Программная загрузка из кода

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

&НаСервере
Процедура ОбновитьРасширениеНаСервере(ПутьКФайлу, ИмяРасширения)

	Отбор = Новый Структура("Имя", ИмяРасширения);
	Найденные = РасширенияКонфигурации.Получить(Отбор);

	Если Найденные.Количество() = 0 Тогда
		Расширение = РасширенияКонфигурации.Создать();
	Иначе
		Расширение = Найденные[0];
	КонецЕсли;

	Данные = Новый ДвоичныеДанные(ПутьКФайлу);

	Проблемы = Расширение.ПроверитьВозможностьПрименения(Данные);
	Если Проблемы.Количество() > 0 Тогда
		Для Каждого Проблема Из Проблемы Цикл
			Сообщить(Проблема.Описание);
		КонецЦикла;
		Возврат;
	КонецЕсли;

	Расширение.Записать(Данные);
	Сообщить("Расширение " + ИмяРасширения + " обновлено. Перезапустите сеансы.");

КонецПроцедуры

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

После записи пользователи получат новую версию при следующем входе. Принудительно завершать их сеансы ради этого не нужно, но предупредите, что программу стоит перезапустить.

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

Сохранятся ли данные расширения при замене?
Да, если обновлять поверх старого расширения с тем же именем и не удалять объекты с данными. При удалении расширения его данные удаляются.
Нужно ли выгонять пользователей из базы для замены расширения?
Для загрузки обычно нет. Работающие сеансы продолжат на старой версии, новую получат после перезапуска. Если расширение меняет структуру больших таблиц, обновление лучше проводить вне рабочего времени.
Как откатиться на старую версию расширения?
Обновите расширение из сохранённого ранее .cfe тем же способом. Если сохранённого файла нет, временно снимите флажок «Активно» и перезапустите программу.
Почему после обновления типовой конфигурации расширение перестало работать?
Изменились объекты, которые расширение заимствует. Нужна версия расширения под новый релиз — обычно её выпускает разработчик расширения.
Чем файл .cfe отличается от .cf и .epf?
.cfe — файл расширения, он ставится поверх основной конфигурации. .cf — сама конфигурация, её загрузка заменяет всю программу. .epf — внешняя обработка, она не встраивается в конфигурацию и открывается из файла или справочника дополнительных обработок.