Расширение в файле .cfe: как его открыть, хранить в хранилище и вести в Git

· 9 мин

Содержание

Файл CFE в 1С — это сохранённое в один файл расширение конфигурации . Открыть его можно только платформой 1С:Предприятие 8.3: в конфигураторе через окно Конфигурация → Расширения конфигурации или в пользовательском режиме через Администрирование → Печатные формы, отчеты и обработки → Расширения. Блокнотом его не прочитать: внутри сжатый бинарный контейнер.

Частое заблуждение — что бывают «текстовые CFE» и «бинарные CFE». Формат .cfe всегда один, бинарный. Текстовым бывает другое представление того же расширения: выгрузка в каталог XML-файлов и модулей .bsl. Именно её кладут в Git и сравнивают построчно, а из неё при необходимости снова собирают .cfe.

Что хранит файл CFE и чем он отличается от CF

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

Внутри файла:

  • 📦 собственные объекты расширения — справочники, документы, общие модули, отчёты;
  • 🔗 заимствованные объекты основной конфигурации с изменёнными формами и модулями;
  • ⚙️ свойства самого расширения: имя, синоним, префикс, назначение, режим совместимости;
  • 🧩 модули с перехватчиками &Перед, &После, &Вместо, &ИзменениеИКонтроль.

Данных базы (документов, остатков, пользователей) в .cfe нет. Это только «код и метаданные».

ФорматЧто внутриГде применяется
.cfВся конфигурация целикомПеренос или замена основной конфигурации
.cfeОдно расширение конфигурацииПодключение доработки к базе
.cfuФайл поставки обновленияОбновление конфигурации на поддержке
.dtВыгрузка информационной базы с даннымиРезервная копия, перенос базы

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

«Текстовый» и бинарный вид расширения: в чём разница

Одно и то же расширение может существовать в двух видах. Отличаются они не содержанием, а удобством работы.

Файл .cfeВыгрузка в XML-файлы
ВидОдин бинарный файлКаталог с сотнями файлов
Читается человекомНетДа, XML и .bsl
Построчное сравнение версийТолько средствами конфигуратораЛюбым diff, в Git
Перенос в другую базуОдной загрузкойНужна загрузка из файлов
РазмерОбычно сотни килобайтБольше, но хорошо сжимается

Структура XML-выгрузки расширения похожа на выгрузку обычной конфигурации:

Extension/
  Configuration.xml          — свойства расширения
  ConfigDumpInfo.xml         — служебный файл для инкрементальной выгрузки
  CommonModules/
    МойМодуль.xml
    МойМодуль/Ext/Module.bsl
  Documents/
    РеализацияТоваровУслуг.xml
    РеализацияТоваровУслуг/Forms/...
  Languages/
    Русский.xml

Модули лежат в файлах .bsl — это обычный текст на встроенном языке. Их удобно читать в любом редакторе и в веб-интерфейсе Git-сервера.

Не правьте XML-файлы вручную ради «быстрой правки» в рабочей базе. Ошибка в разметке метаданных всплывёт только при загрузке, и расширение не соберётся.

Как открыть файл CFE в 1С

Открыть .cfe «посмотреть» без базы нельзя. Нужна информационная база с подходящей основной конфигурацией: расширение заимствует её объекты и без них не загрузится. Для изучения чужого файла заведите копию рабочей базы или пустую базу на той же конфигурации.

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

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

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

Сохранить расширение обратно в файл можно там же: меню «Конфигурация» окна расширений → «Сохранить конфигурацию в файл…».

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

В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) расширения подключают без конфигуратора:

  1. Администрирование → Печатные формы, отчеты и обработки.
  2. Ссылка «Расширения».
  3. Кнопка «Добавить из файла» → выберите .cfe.
  4. Подтвердите предупреждение о безопасности и перезапустите программу.

Расширение выполняет код в вашей базе. Подключайте .cfe только от известного разработчика. Галочку «Безопасный режим» снимайте лишь тогда, когда понимаете, зачем расширению полный доступ.

Выгрузка CFE в XML и сборка обратно

Перевести расширение из .cfe в файлы и обратно можно вручную из конфигуратора или пакетно из командной строки. Второй способ нужен для автоматизации и Git.

Через меню конфигуратора

Откройте дерево нужного расширения и в главном меню выберите Конфигурация → Выгрузить конфигурацию в файлы…. Укажите пустой каталог. Обратная операция — Конфигурация → Загрузить конфигурацию из файлов… в том же дереве расширения.

Через командную строку

Пакетный запуск конфигуратора принимает параметр -Extension с именем расширения. Пример для файловой базы:

rem Выгрузить расширение из базы в XML
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Bases\Test" /N "Администратор" /P "" ^
  /DumpConfigToFiles "D:\Repo\Extension" -Extension МоиДоработки /Out "D:\log_dump.txt"

rem Загрузить XML обратно в расширение базы
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Bases\Test" /N "Администратор" /P "" ^
  /LoadConfigFromFiles "D:\Repo\Extension" -Extension МоиДоработки /Out "D:\log_load.txt"

rem Собрать из базы файл .cfe
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Bases\Test" /N "Администратор" /P "" ^
  /DumpCfg "D:\Out\МоиДоработки.cfe" -Extension МоиДоработки

rem Применить расширение к базе данных
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F "D:\Bases\Test" /N "Администратор" /P "" ^
  /UpdateDBCfg -Extension МоиДоработки

Путь к 1cv8.exe замените на свою версию платформы. Для клиент-серверной базы вместо /F используется /S "сервер\база".

Цепочка «файл .cfe → XML» выглядит так: загрузить .cfe в базу (/LoadCfg файл.cfe -Extension Имя), затем выгрузить из неё в файлы. Прямого конвертера «файл в файл» в платформе нет — всегда нужна промежуточная база.

Параметр -update у /DumpConfigToFiles выгружает только изменённые объекты по данным ConfigDumpInfo.xml. На крупном расширении это заметно ускоряет каждую выгрузку.

Результат пакетного запуска смотрите в файле из /Out: при ошибке конфигуратор пишет туда причину, а на экран ничего не выводит.

Хранилище конфигурации для расширения

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

Порядок действий:

  1. В конфигураторе откройте дерево расширения.
  2. В меню Конфигурация → Хранилище конфигурации выберите «Создать хранилище…» (первый разработчик) или «Подключиться к хранилищу…» (остальные).
  3. Укажите каталог хранилища или адрес сервера хранилища вида tcp://сервер/путь.
  4. Дальше работа обычная: захват объектов, помещение изменений, получение чужих правок.

Что учесть на практике:

  • 🔒 у расширения и основной конфигурации разные пользователи хранилища — заведите их в обоих;
  • 🗂 не кладите хранилище расширения в каталог хранилища основной конфигурации, держите рядом отдельной папкой;
  • 🏷 перед выпуском .cfe ставьте метку версии в хранилище — потом проще найти, какой файл ушёл заказчику;
  • 🔄 при обновлении типовой конфигурации сначала обновите её, затем проверьте расширение и поместите исправления заимствованных объектов.

Хранилище хранит историю, но в собственном формате. Для просмотра изменений построчно, код-ревью и CI его обычно дублируют в Git.

Как вести расширение CFE в Git

Сам файл .cfe в Git класть можно, но толку мало: diff покажет «бинарный файл изменён». Хранят XML-выгрузку, а .cfe собирают из неё при выпуске.

Рабочая схема

  1. Создайте репозиторий, в нём каталог, например src/МоиДоработки.
  2. Выгрузите расширение командой /DumpConfigToFiles ... -Extension МоиДоработки.
  3. Сделайте первый коммит.
  4. После каждой доработки повторяйте выгрузку и коммит.
  5. Для выпуска собирайте .cfe из базы командой /DumpCfg и прикладывайте к релизу или тегу.

Настройка репозитория

# .gitattributes
*.bsl  text eol=crlf
*.xml  text eol=crlf
*.cf   binary
# .gitignore
*.cfe
*.log
ConfigDumpInfo.xml

ConfigDumpInfo.xml часто исключают из репозитория: он меняется при каждой выгрузке и создаёт шумные конфликты. Если пользуетесь -update, храните его локально у себя.

Если команда уже работает в хранилище

Переносить историю из хранилища в Git вручную долго. Для этого есть открытые инструменты сообщества на OneScript (например, gitsync): они проходят по версиям хранилища и делают коммит на каждую с автором и комментарием. Перед внедрением прогоните их на копии хранилища.

Через 1С:EDT

Среда 1С:Enterprise Development Tools хранит проект расширения в своём формате, а не в формате XML-выгрузки конфигуратора. Смешивать оба формата в одном каталоге нельзя. Выберите один: либо команда работает в конфигураторе и коммитит его выгрузку, либо все переходят на EDT и импортируют расширение в проект один раз.

Что проверить перед тем, как отдать CFE в рабочую базу

Файл .cfe легко собрать и так же легко подключить с сюрпризом. Перед передачей заказчику или коллеге пройдите короткую проверку на копии рабочей базы.

Проверка расширения перед выпуском
Выполнено: 0 / 7

Назначение влияет на порядок применения: сначала применяются расширения с назначением «Исправление», затем «Адаптация», затем «Дополнение». Если два расширения перехватывают один и тот же метод, результат зависит от этого порядка.

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

Ошибки при работе с CFE и что с ними делать

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

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

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

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

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

Можно ли открыть файл CFE без установленной 1С?
Нет. Это бинарный контейнер платформы. Посмотреть код можно только после загрузки в базу или из XML-выгрузки, которую сделал разработчик.
Как превратить CFE в обработку EPF?
Никак напрямую. Это разные механизмы: обработка выполняется отдельно, расширение встраивается в конфигурацию. Нужный код переносят вручную.
Подойдёт ли один CFE к разным конфигурациям?
Только если в них есть все заимствованные объекты с теми же именами. Расширение для Бухгалтерии 3.0 к ЗУП 3.1 не подключится.
Где расширение хранится после загрузки?
В самой информационной базе. Файл .cfe после загрузки можно удалить: база от него не зависит, а выгрузка .dt сохраняет расширения вместе с данными.
Что будет с расширением при обновлении типовой?
Оно останется подключённым. Если обновление изменило заимствованные объекты, расширение может перестать применяться — тогда исправьте заимствование в конфигураторе.