Обновление расширения конфигурации без потери данных и настроек
Содержание
Чтобы заменить расширение в 1С, его не удаляют, а обновляют из нового файла .cfe поверх старого. В типовых конфигурациях это делается в Администрирование → Печатные формы, отчеты и обработки → Расширения, в Конфигураторе — в окне Конфигурация → Расширения конфигурации. Имя расширения в файле должно совпадать с именем установленного.
Частая ошибка — сначала удалить старое расширение, потом добавить новое. Если расширение хранит свои данные (справочники, регистры, реквизиты), при удалении они пропадают вместе с ним. Обновление поверх сохраняет данные, если структура осталась совместимой.
Подготовка к замене расширения: что проверить до загрузки
Расширения конфигурации появились в платформе 8.3.6. Всё ниже относится к 8.3 с интерфейсом «Такси» и типовым конфигурациям на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.
Перед заменой ответьте себе на пять вопросов:
- 🔤 Как называется расширение в базе. Имя видно в списке расширений. Файл с другим именем ляжет рядом вторым расширением, а не заменит первое.
- 🗄️ Есть ли у расширения свои данные. Откройте его в Конфигураторе и посмотрите, есть ли собственные (не заимствованные) справочники, документы, регистры или добавленные реквизиты.
- 🧩 Какой режим совместимости у нового файла. Он должен подходить к режиму совместимости основной конфигурации. Расширение, собранное под более новый режим, на старую базу не встанет.
- 🔢 Под какой релиз конфигурации собран .cfe. Заимствованные объекты проверяются на совпадение с основной конфигурацией. Расширение под релиз «из будущего» может не примениться.
- 👥 Кто сейчас работает в базе. Новая версия расширения подхватывается только новыми сеансами.
Резервную копию делайте, если у расширения есть свои данные или вы меняете их структуру. Для ИБ на сервере подойдёт бэкап СУБД, для файловой — выгрузка .dt или копия каталога с 1Cv8.1CD.
Если новая версия расширения убирает объект или реквизит со своими данными, эти данные будут удалены при применении. Платформа предупредит, но после подтверждения вернуть их можно только из копии.
Сохраните и текущую версию расширения. В списке расширений есть команда сохранения в файл, в Конфигураторе — Действия → Сохранить в файл… в окне расширений. Старый .cfe нужен для отката, если новая версия не заработает.
Как заменить расширение без удаления: обновление из файла
Обновление из файла сохраняет имя, настройки и данные. Это основной способ замены.
В пользовательском режиме (без Конфигуратора)
Подходит, когда у вас права полного администратора, а Конфигуратора под рукой нет.
- Откройте
Администрирование → Печатные формы, отчеты и обработки. - Если флажок «Расширения» снят — включите его.
- Перейдите по ссылке «Расширения». Откроется список установленных расширений.
- Выделите расширение, которое меняете.
- В меню
Ещёвыберите команду обновления из файла и укажите новый.cfe. - Подтвердите предупреждение о безопасности, если файл получен не из доверенного источника.
- Закройте программу и запустите заново — новая версия начнёт работать.
Если в вашей конфигурации нет такого раздела, используйте платформенную обработку. Включите Сервис и настройки → Параметры → Отображать команду «Все функции», затем откройте Все функции → Стандартные → Управление расширениями конфигурации. Там есть команды добавления, удаления, обновления и сохранения в файл.
В Конфигураторе
- Запустите базу в режиме Конфигуратор.
- Откройте
Конфигурация → Расширения конфигурации. - Выделите нужное расширение и выполните
Действия → Загрузить из файла…. - Выберите новый
.cfeи подтвердите замену. - Обновите конфигурацию базы данных для расширения: в окне расширения
Конфигурация → Обновить конфигурацию базы данныхили клавишаF7. - Прочитайте окно с изменениями структуры. Если в нём есть удаление объектов с данными — остановитесь и проверьте, ожидали ли вы этого.
Загрузка файла и обновление конфигурации БД — два отдельных шага. Пока второй не выполнен, пользователи работают со старой версией.
Если расширение без своих данных, обновление структуры проходит быстро и обычно без монопольного режима. Когда расширение добавляет реквизиты к большим документам или регистрам, обновление переносит таблицы и может занять заметное время.
Когда старое расширение снимают полностью и как убрать хвосты
Удалять и ставить заново оправдано в трёх случаях:
- Новое расширение — по сути другая разработка с другим именем.
- У старого нет своих данных, и оно повреждено (не открывается, не применяется).
- Разработчик прямо пишет, что новая версия не совместима со старой и требует чистой установки.
Порядок такой:
- Сохраните старое расширение в файл.
- Если у него есть данные, которые нужны, выгрузите их: отчётом в Excel или обработкой выгрузки.
- Удалите расширение из списка расширений или в Конфигураторе (
Действия → Удалить). - В Конфигураторе выполните обновление конфигурации БД, чтобы удалились таблицы расширения.
После удаления остаются хвосты, которые мешают новой версии:
- 📝 Сохранённые настройки форм. Пользователь настраивал колонки и отборы в форме из расширения — настройки остались в базе. Новая форма с другими элементами может открываться криво. Очистите настройки пользователей через управление настройками в разделе «Администрирование» (найдите команду по слову «настройки пользователей»).
- 💾 Клиентский кэш. У пользователей на компьютерах кэшируются метаданные. Если после замены видна старая форма, запустите 1С с ключом
/ClearCache. - 🔗 Ссылки в отчётах и рассылках. Варианты отчётов из расширения, команды печати, регламентные задания — проверьте, что новая версия их пересоздала.
Загрузка нового расширения и его свойства
Новое расширение добавляют командой «Добавить из файла» в списке расширений или в Конфигураторе: Действия → Добавить, затем Загрузить из файла… в созданное пустое расширение. После этого обязательно обновите конфигурацию БД.
Дальше проверьте свойства. Их видно в списке расширений и в Конфигураторе.
| Свойство | Что делает | Как ставить |
|---|---|---|
| Активно | Применяется ли расширение при запуске | Включено. Снимите, чтобы временно отключить без удаления |
| Безопасный режим | Ограничивает работу с файлами, COM, внешними компонентами | Оставьте включённым, если разработчик не требует обратного |
| Защита от опасных действий | Предупреждает пользователя перед потенциально опасными операциями | Обычно включена |
| Используется в распределённой ИБ | Передаётся ли расширение в узлы РИБ | Включите, если базы связаны обменом РИБ |
| Область действия | Вся информационная база или одна область данных | Для обычной базы — «Информационная база» |
Безопасный режим — частая причина «расширение загружено, но не работает ». Если оно пишет в файлы, обращается к сайту или использует внешнюю компоненту, в безопасном режиме такие вызовы падают. Снимайте флажок только для расширений из проверенного источника.
Флажок «Активно» удобен как кнопка отката. Новая версия ведёт себя странно — снимите флажок, перезапустите программу, и база работает без расширения. Данные расширения при этом не удаляются.
Замена расширения с управляемыми формами: что ломается
Больше всего проблем дают расширения, которые меняют формы типовой конфигурации. Форма в расширении — заимствованная копия формы основной конфигурации плюс изменения.
Что происходит при замене:
- 🧱 Новые элементы формы. Если расширение добавляет поле или кнопку, их место задаётся относительно элементов типовой формы. Фирма 1С переименовала группу в новом релизе — элемент расширения может встать не туда или не примениться.
- 🔁 Обработчики событий. Для событий формы в расширении указывают тип вызова: перед типовым, после него или вместо. Если в новой версии «перед» поменяли на «вместо», типовой код этого события перестанет выполняться. Проверьте это при чтении описания изменений.
- 🛡️ Контроль заимствованных свойств. У заимствованного объекта можно включить контроль свойств. Если основная конфигурация обновилась и контролируемое свойство изменилось, расширение не применится. Это защита, а не поломка: разработчик должен пересобрать расширение под новый релиз.
Практический порядок для расширений с формами:
- Сначала обновите основную конфигурацию, потом расширение — не наоборот.
- Берите версию расширения, собранную под ваш релиз конфигурации.
- После замены откройте каждую изменённую форму: документ, справочник, список. Проверьте, что поля на месте и кнопки работают.
- Если форма открывается со старым видом, очистите сохранённые настройки этой формы у пользователя.
В Конфигураторе у заимствованной формы видно, какие элементы добавлены расширением, а какие пришли из основной конфигурации. Так проще понять, чей элемент «уехал».
Ошибки при замене расширения и журнал регистрации
Если расширение не применилось, платформа сообщает об этом при запуске или при обновлении конфигурации БД. Подробности ищите в журнале регистрации.
Где открыть журнал:
- в программе:
Администрирование → Обслуживание → Журнал регистрации; - в Конфигураторе:
Администрирование → Журнал регистрации.
Поставьте отбор по периоду, когда загружали расширение, и по уровню «Ошибка». В отборе по событиям найдите события, в названии которых есть слово «расширение». В тексте ошибки обычно указан объект, на котором споткнулась проверка: имя формы, реквизита или модуля.
Если ошибка возникает только у части пользователей — почти всегда это кэш или настройки форм. Запуск с /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С, а не на компьютере пользователя.
После записи пользователи получат новую версию при следующем входе. Принудительно завершать их сеансы ради этого не нужно, но предупредите, что программу стоит перезапустить.