Расширение конфигурации: выгрузка из одной базы и загрузка в другую
Содержание
Расширение переносят одним из трёх способов: сохраняют в файл .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. Через Конфигуратор
- Запустите Конфигуратор целевой базы (под пользователем с полными правами).
- Откройте
Конфигурация → Расширения конфигурации. - Нажмите «Добавить» — создастся пустое расширение. Если нужен именно перенос из файла, воспользуйтесь командой загрузки конфигурации из файла на уже созданном расширении и выберите ваш
.cfe. - Проверьте свойства расширения:
Назначение,Безопасный режим,Защита от опасных действий,Активно. - Нажмите «Обновить конфигурацию
базы данных» (F7 или
Конфигурация → Обновить конфигурацию базы данных). Пока вы этого не сделаете, изменения в базе не вступят в силу. - Запустите 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 и спрашивает, снимать ли защиту от опасных действий.
Плюс способа: Конфигуратор не нужен, подойдёт администратору без доступа к конфигурации. Минус: все спорные вопросы (совместимость, наложение на модули) вы узнаете только после установки, и при ошибке расширение придётся отключить вручную. Если конфигурация не на БСП или раздела в вашей конфигурации нет, пользуйтесь первым способом.
После подключения перезапустите сеансы пользователей: клиентские приложения подхватывают расширение при новом входе.
.dt или скопируйте файловую базу. Пользователей из базы выведите.Права доступа и роли после переноса расширения
Это часть, которую забывают чаще всего. Загрузка расширения не переносит настройки прав, которые вы сделали в исходной базе: списки пользователей, группы доступа и профили живут в данных, а не в конфигурации.
Что происходит на практике. Если расширение добавило новые роли, они появляются в списке ролей целевой базы. Но ни один пользователь пока не имеет доступа к новым объектам. Нужно:
- 🔸 найти роли расширения в профилях групп доступа (
Администрирование → Настройки пользователей и прав → Профили групп доступа) и добавить их туда, где они нужны; - 🔸 проверить, что у расширения для свойства «Использовать основные роли для всех пользователей» выбрано нужное значение. Если оно включено, объекты расширения доступны всем, у кого есть право на основной объект. Часто это то, что требуется для небольших доработок;
- 🔸 проверить интерфейс: новые команды и формы могут появиться в разделе, который скрыт для роли.
Для баз без БСП роли назначают через Администрирование → Пользователи в Конфигураторе: у каждого пользователя на вкладке «Прочие» отмечаются нужные роли.
Если расширение добавляет объекты метаданных (справочник, документ, регистр), права на них придётся выдавать отдельно. На существующие объекты основной конфигурации достаточно прав, которые у пользователя уже есть.
Если пользователи жалуются, что «пропала кнопка», сначала проверьте роль, а потом уже код расширения. В этом случае половина обращений заканчивается добавлением роли в профиль.
Дополнительные отчёты и обработки, которые шли вместе с расширением
Есть путаница, из-за которой переносят не то. Расширение конфигурации и внешние отчёты и обработки (.erf, .epf) — разные сущности.
| Что | Где хранится | Как переносить |
|---|---|---|
| Отчёт или обработка внутри расширения | В .cfe вместе с остальными объектами | Автоматически, вместе с расширением |
| Внешний отчёт или обработка | Отдельный файл .erf / .epf | Копируется как файл или через справочник дополнительных отчётов и обработок |
| Дополнительная обработка в справочнике БСП | В данных базы (хранилище значения) | Выгрузить в файл из карточки и загрузить в целевой базе |
Если внешний отчёт использует объекты, которые добавило расширение (например, ваш реквизит документа), в базе без расширения он не заработает. Поэтому порядок такой: сначала загрузите расширение, потом подключайте внешние отчёты и обработки.
Для БСП это делают в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Там же настраивают, где команда появится в интерфейсе и кому доступна.
Что стоит проверить после подключения:
- Открывается ли форма без сообщений об отсутствующем реквизите.
- Формируется ли отчёт на небольшом периоде.
- Видят ли команду нужные пользователи — быстрее всего проверить под тестовым пользователем с минимальной ролью.
Ошибки при загрузке расширения и как их устранить
.cfe заново. Либо обновите платформу на сервере.Отдельный случай — загрузка расширения в базу, где уже есть расширение с таким же именем. Платформа заменит его содержимое, и все ваши предыдущие правки пропадут. Перед этим посмотрите версии и по возможности сохраните старую .cfe рядом, чтобы можно было откатиться.
Если ничего не помогло, запустите проверку конфигурации в Конфигураторе и сохраните журнал: по тексту ошибки обычно видно, какой объект или процедура не находятся. Дальше уже вопрос к разработчику расширения.
Частые вопросы
Можно ли перенести расширение из файловой базы в клиент-серверную?
.cfe не зависит от варианта работы. Грузите файл в целевую базу любым из способов выше.Сохраняются ли данные, введённые в реквизиты расширения?
.cfe содержит конфигурацию, а не данные. Если расширение добавляло реквизиты или справочники, значения в них придётся переносить отдельно: выгрузкой данных, обменом или обработкой.Нужны ли пользователи в целевой базе заново настраивать после загрузки?
Можно ли держать одно расширение сразу в нескольких базах и обновлять централизованно?
.cfe в репозитории, версию меняйте при каждой правке и раскатывайте пакетным скриптом. Расхождения версий в базах так видны сразу.