Расширение из одной базы в другую: выгрузка .cfe, загрузка и проверка

· 10 мин

Содержание

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

Механизм общий для платформы 8.3 (расширения появились в 8.3.6) и не зависит от конфигурации: так переносят доработки в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и любых других решениях. Порядок одинаков для файловых и клиент-серверных баз.

Что проверить до переноса расширения

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

Проверьте пять вещей:

  • 🧩 Та же конфигурация. Расширение для Бухгалтерии не встанет на ЗУП: заимствованных объектов там просто нет.
  • 🔢 Релиз конфигурации. Если в целевой базе релиз старше или новее, часть заимствованных объектов могла быть переименована, удалена или изменена. Сравните номер в окне О программе в обеих базах.
  • ⚙️ Версия платформы. Номер версии платформы в целевой базе должен быть не ниже, чем у той, где расширение разрабатывали, если в нём используется новый функционал.
  • 📐 Режим совместимости расширения. Он задан в свойствах корня расширения и не может требовать большего, чем умеет платформа целевой базы.
  • 👤 Права. Загружать и удалять расширения может пользователь с правом администрирования. В пользовательском режиме для этого нужна роль «Полные права» или аналогичная.

Запишите имя расширения дословно, вместе с регистром. По имени платформа отличает «то же самое расширение» от нового: при загрузке под тем же именем оно обновится, под другим — появится второе, и они начнут конфликтовать.

Расширение с данными или без

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

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

Выгрузка расширения из исходной базы в файл

Есть три способа выгрузить расширение. Выбор зависит от того, куда и как часто вы его переносите.

СпособЧто получаетсяКогда подходит
Сохранение в .cfeОдин файлОбычный перенос в другую базу
Выгрузка в XML-файлыКаталог с файлами объектовХранение в Git, сравнение версий, разработка в EDT
Через хранилище конфигурацииВерсии в хранилищеКоманда разработчиков, несколько баз

Сохранение в файл .cfe в Конфигураторе

  1. Откройте исходную базу в режиме Конфигуратора.
  2. Выберите Конфигурация → Расширения конфигурации. Откроется список всех расширений базы.
  3. Выделите нужное расширение.
  4. В командной панели окна откройте меню Конфигурация и выберите команду сохранения в файл.
  5. Укажите каталог и имя файла. Расширение по умолчанию — .cfe.

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

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

Выгрузка в XML-файлы

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

Этот вариант удобен, если вы ведёте доработки в системе контроля версий. Загружать расширение потом нужно командой загрузки из файлов, а не из .cfe.

Выгрузка из пользовательского режима

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

Загрузка расширения в целевую базу через Конфигуратор

Этот способ даёт больше всего контроля: видно ошибки, можно сразу открыть и проверить расширение.

Новое расширение

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

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

Замена уже существующего расширения

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

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

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

Свойства после загрузки

В списке расширений у каждого есть флажки. Проверьте их после переноса — они хранятся в базе и не всегда совпадают с исходной:

  • ✅ Активно — расширение подключается при запуске сеанса.
  • 🔒 Безопасный режим — ограничивает операции, которые может выполнять код расширения (работа с файлами, внешними компонентами, привилегированный режим).
  • 🛡️ Защита от опасных действий — включает предупреждения при выполнении потенциально опасных операций.

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

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

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

Через стандартную обработку платформы

  1. Откройте Все функции → Стандартные → Управление расширениями конфигурации.
  2. Нажмите Добавить и выберите файл .cfe.
  3. Чтобы обновить расширение , выделите его в списке и выберите команду обновления из файла.
  4. Проверьте флажки «Активно» и «Безопасный режим».
  5. Перезапустите программу. Новые и изменённые расширения подключаются при запуске сеанса.

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

Через раздел администрирования типовой конфигурации

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

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

В облачных сервисах (1С:Фреш и аналогах) загрузка своих расширений может быть ограничена правилами сервиса. Там расширения часто проходят проверку перед подключением к области данных.

Какой путь выбрать

Как переносить расширение в вашем случае?

Перенос расширения командной строкой

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

Выгрузка в файл

"C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe" DESIGNER /F "D:\Bases\Source" /N "Администратор" /P "пароль" /DumpCfg "D:\Ext\MyExt.cfe" -Extension MyExt /Out "D:\Ext\dump.log" /DisableStartupDialogs

Загрузка и обновление в целевой базе

"C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe" DESIGNER /S "srv1c\buh_prod" /N "Администратор" /P "пароль" /LoadCfg "D:\Ext\MyExt.cfe" -Extension MyExt /UpdateDBCfg /Out "D:\Ext\load.log" /DisableStartupDialogs

Что здесь важно:

  • /F — путь к файловой базе, /S — сервер и имя базы в кластере.
  • /N и /P — пользователь базы с административными правами.
  • -Extension MyExt — имя расширения. Без него команда относится к основной конфигурации, поэтому проверяйте его наличие в каждой строке скрипта.
  • /UpdateDBCfg — обновление конфигурации базы данных сразу после загрузки.
  • /Out — журнал. Без него при ошибке вы не узнаете, что пошло не так: пакетный режим ничего не показывает на экране.
  • Путь к 1cv8.exe подставьте свой, с вашим номером версии платформы.

Для XML-выгрузки используются /DumpConfigToFiles и /LoadConfigFromFiles с тем же параметром -Extension.

Скрипт для нескольких баз

Простейший вариант — bat-файл, который проходит по списку баз и пишет отдельный журнал на каждую:

@echo off
set EXE="C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe"
set CFE=D:\Ext\MyExt.cfe

for %%B in (buh_prod zup_prod ut_prod) do (
  %EXE% DESIGNER /S "srv1c\%%B" /N "Администратор" /P "пароль" /LoadCfg "%CFE%" -Extension MyExt /UpdateDBCfg /Out "D:\Ext\%%B.log" /DisableStartupDialogs
  echo %%B: код возврата %ERRORLEVEL%
)

Не храните пароль администратора в скрипте на общем диске. Положите bat-файл в каталог с доступом только для служебной учётной записи или передавайте пароль через переменную окружения.

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

Если используется хранилище или EDT

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

В 1С:EDT расширение — отдельный проект. Его выгружают в .cfe или в XML-файлы и загружают в базу любым из способов выше.

Почему перенесённое расширение не работает

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

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

Конфликт имён после обновления конфигурации

Отдельная ловушка — совпадение имён. Допустим, в расширении вы создали свой реквизит Комментарий2 у документа, а через полгода разработчики типовой добавили в этот документ реквизит с тем же именем. Расширение перестанет применяться.

Защита — префикс. В свойствах корня расширения есть поле «Префикс имён». Все собственные объекты и реквизиты называйте через него, например мк_Комментарий. Тогда совпадение с типовыми именами практически исключено.

Расширение пропало после загрузки .dt или .cf

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

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

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

Можно ли перенести расширение между разными конфигурациями, например из Бухгалтерии в УТ?
Только если все заимствованные объекты есть в обеих конфигурациях с теми же именами. На практике это редкость: расширения пишут под конкретное решение, и в другом оно не применится.
Переносятся ли вместе с расширением его данные?
Нет. Файл .cfe содержит только описание объектов и код. Данные собственных справочников и реквизитов расширения переносятся вместе с базой через .dt или отдельной обработкой выгрузки.
Чем расширение отличается от внешней обработки при переносе?
Внешняя обработка — это файл .epf, который можно открыть без установки. Расширение хранится в базе, и его нужно загрузить в каждую базу, где оно должно работать.
Нужно ли снимать конфигурацию с поддержки, чтобы установить расширение?
Нет. Расширения и придуманы для того, чтобы дорабатывать типовую конфигурацию, не снимая её с поддержки и не мешая обновлениям.
Как узнать, какая версия расширения установлена в базе?
Версия указывается в свойствах корня расширения. В типовых конфигурациях её видно в списке Администрирование → Печатные формы, отчеты и обработки → Расширения, в Конфигураторе — в свойствах открытого расширения.