Расширение конфигурации: выгрузка из одной базы и загрузка в другую

· 9 мин

Содержание

Расширение переносят одним из трёх способов: сохраняют в файл .cfe и загружают в целевую базу через Конфигуратор, делают то же самое командной строкой 1cv8 или ставят .cfe из самой программы через раздел расширений. Для разовой передачи хватит Конфигуратора. Если баз много, выгрузку и загрузку скриптуют. Для рабочих баз на БСП есть путь без Конфигуратора.

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

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

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

Перед выгрузкой проверьте три вещи:

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

Теперь сохранение. В списке расширений выберите нужное, откройте его конфигурацию на редактирование и воспользуйтесь командой сохранения конфигурации в файл: в меню Конфигурация она называется «Сохранить конфигурацию в файл…». Для расширения результат получается с типом .cfe, а не .cf. Это важно: .cf — файл основной конфигурации, и загрузка его в рабочую базу заменит всю конфигурацию целиком.

Не путайте .cf и .cfe. Загрузка .cf через обычное окно загрузки конфигурации перезапишет основную конфигурацию базы. Расширение всегда грузится через раздел расширений.

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

Выгрузка из командной строки

Для скриптов и сборочных конвейеров есть режим пакетного запуска Конфигуратора. Сохранение расширения в файл:

"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER ^
  /S "srv1c\Base_Source" ^
  /N "Администратор" /P "пароль" ^
  /DumpCfg "C:\ext\MyExtension.cfe" -Extension "МоёРасширение" ^
  /Out "C:\ext\dump.log"

Параметр -Extension с именем расширения как раз и отличает выгрузку расширения от выгрузки основной конфигурации. Путь к 1cv8.exe и номер платформы подставьте свои.

Что проверить в целевой базе до загрузки

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

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

Платформы сравнивайте по номеру: расширение, сохранённое на 8.3.25, нельзя гарантированно прочитать на 8.3.22. Обратное обычно работает, но платформа может предложить обновить формат.

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

Если версия типовой конфигурации отличается

Допустим, расширение писали под Бухгалтерию 3.0 одного релиза, а переносите в базу с более поздним. Чаще всего всё работает, пока в расширении нет перехватов (&Вместо, &После, &Перед) на процедуры, которые разработчик типовой изменил.

После загрузки откройте Конфигуратор, выполните синтаксический контроль и посмотрите, нет ли ошибок вида «процедура или функция не найдена». Для расширения проверка называется «Проверка конфигурации» (Конфигурация → Проверка конфигурации). Отметьте галочки проверки модулей и клиентского и серверного вызова.

Загрузка расширения в другую базу пошагово

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

Способ 1. Через Конфигуратор

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

Про свойства из шага 4 стоит сказать отдельно:

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

Способ 2. Командной строкой

Для серии баз сценарий выглядит так:

"C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe" DESIGNER ^
  /S "srv1c\Base_Target" ^
  /N "Администратор" /P "пароль" ^
  /LoadCfg "C:\ext\MyExtension.cfe" -Extension "МоёРасширение" ^
  /UpdateDBCfg -Extension "МоёРасширение" ^
  /Out "C:\ext\load.log"

/LoadCfg загружает файл в расширение с указанным именем (если такого нет в базе, оно будет создано), а /UpdateDBCfg применяет изменения к структуре базы. В журнале load.log смотрите последние строки: успешная загрузка завершается без сообщений об ошибках.

Для нескольких десятков баз удобнее обернуть команды в цикл по списку и складывать журналы в отдельные файлы. Так видно, на какой из баз упало.

Способ 3. Изнутри программы, без Конфигуратора

В конфигурациях на БСП расширения можно подключать из режима 1С:Предприятие. Раздел: Администрирование → Печатные формы, отчёты и обработки → Расширения. Там есть команда добавления: она предлагает выбрать файл .cfe и спрашивает, снимать ли защиту от опасных действий.

Плюс способа: Конфигуратор не нужен, подойдёт администратору без доступа к конфигурации. Минус: все спорные вопросы (совместимость, наложение на модули) вы узнаете только после установки, и при ошибке расширение придётся отключить вручную. Если конфигурация не на БСП или раздела в вашей конфигурации нет, пользуйтесь первым способом.

После подключения перезапустите сеансы пользователей: клиентские приложения подхватывают расширение при новом входе.

Пошаговый помощник
Выберите способ
Одна база, нужен контроль → Конфигуратор. Много баз → командная строка. Пользователь без Конфигуратора → раздел «Расширения» в БСП.

Права доступа и роли после переноса расширения

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

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

  • 🔸 найти роли расширения в профилях групп доступа (Администрирование → Настройки пользователей и прав → Профили групп доступа) и добавить их туда, где они нужны;
  • 🔸 проверить, что у расширения для свойства «Использовать основные роли для всех пользователей» выбрано нужное значение. Если оно включено, объекты расширения доступны всем, у кого есть право на основной объект. Часто это то, что требуется для небольших доработок;
  • 🔸 проверить интерфейс: новые команды и формы могут появиться в разделе, который скрыт для роли.

Для баз без БСП роли назначают через Администрирование → Пользователи в Конфигураторе: у каждого пользователя на вкладке «Прочие» отмечаются нужные роли.

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

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

Дополнительные отчёты и обработки, которые шли вместе с расширением

Есть путаница, из-за которой переносят не то. Расширение конфигурации и внешние отчёты и обработки (.erf, .epf) — разные сущности.

ЧтоГде хранитсяКак переносить
Отчёт или обработка внутри расширенияВ .cfe вместе с остальными объектамиАвтоматически, вместе с расширением
Внешний отчёт или обработкаОтдельный файл .erf / .epfКопируется как файл или через справочник дополнительных отчётов и обработок
Дополнительная обработка в справочнике БСПВ данных базы (хранилище значения)Выгрузить в файл из карточки и загрузить в целевой базе

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

Для БСП это делают в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Там же настраивают, где команда появится в интерфейсе и кому доступна.

Что стоит проверить после подключения:

  1. Открывается ли форма без сообщений об отсутствующем реквизите.
  2. Формируется ли отчёт на небольшом периоде.
  3. Видят ли команду нужные пользователи — быстрее всего проверить под тестовым пользователем с минимальной ролью.

Ошибки при загрузке расширения и как их устранить

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

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

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

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

Можно ли перенести расширение из файловой базы в клиент-серверную?
Да. Формат .cfe не зависит от варианта работы. Грузите файл в целевую базу любым из способов выше.
Сохраняются ли данные, введённые в реквизиты расширения?
Нет. Файл .cfe содержит конфигурацию, а не данные. Если расширение добавляло реквизиты или справочники, значения в них придётся переносить отдельно: выгрузкой данных, обменом или обработкой.
Нужны ли пользователи в целевой базе заново настраивать после загрузки?
Не заново, а точечно: добавьте роли расширения в профили. Остальные настройки пользователей остаются.
Можно ли держать одно расширение сразу в нескольких базах и обновлять централизованно?
Можно. Храните .cfe в репозитории, версию меняйте при каждой правке и раскатывайте пакетным скриптом. Расхождения версий в базах так видны сразу.
Что делать, если расширение испортило работу базы?
Отключите его: снимите галочку «Активно» в списке расширений Конфигуратора либо удалите расширение. Основная конфигурация при этом не пострадает, это одно из преимуществ расширений.