В каком случае при сохранении расширения конфигурации 1С создается файл CFE, а в каком — CF

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с механизмом расширений в платформе «1С:Предприятие 8.3» разработчики часто сталкиваются с вопросом выбора формата файла для выгрузки. Стандартным расширением для таких файлов является .cfe (Configuration Extension), в то время как основная конфигурация традиционно сохраняется в .cf (Configuration File). В рамках данной статьи мы подробно разберем, существуют ли ситуации, в которых расширение может превратиться в .cf, как платформа обрабатывает эти файлы на низком уровне и какие инструменты доступны программисту для автоматизации процесса сохранения.

Стандартное поведение платформы и формат CFE

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

Проанализируем техническую составляющую. Оба формата — и .cfe, и .cf — базируются на технологии Compound File (структурированное хранилище). Это своего рода «файловая система внутри файла». Несмотря на общую природу контейнера, их внутреннее наполнение различается. Если попытаться принудительно изменить расширение файла с .cfe на .cf простым переименованием, платформа все равно распознает в нем расширение при попытке загрузки в соответствующее окно, либо выдаст ошибку, если вы попытаетесь загрузить его как основную конфигурацию.

Программное сохранение расширения: возможность произвольного выбора

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

Разберем пример кода, который позволяет сохранить расширение в файл:


// Получаем расширение по имени
Расширение = РасширенияКонфигурации.Найти("МоеРасширение");

Если Расширение <> Неопределено Тогда
    // Мы можем указать абсолютно любое имя и расширение файла
    ПутьКФайлу = "C:\Dump\ExtensionData.cf"; 
    Расширение.Записать(ПутьКФайлу);
    Сообщить("Расширение успешно сохранено в файл с расширением .cf");КонецЕсли;

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

Методы превращения CFE в CF и обратно

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

Тем не менее, существуют неофициальные способы:

  1. Правка заголовка (Magic Numbers): Опытные специалисты используют hex-редакторы для изменения идентификатора типа файла в заголовке контейнера. Это позволяет «обмануть» некоторые инструменты, заставляя их думать, что перед ними обычный .cf.
  2. Создание пустой конфигурации: Можно создать новую пустую конфигурацию, перенести в нее объекты из расширения (через сравнение/объединение или XML) и затем сохранить ее как полноценный .cf.
  3. Специализированные утилиты: Существуют скрипты на языке Python или инструменты типа v8unpack, которые позволяют разбирать контейнеры 1С на составляющие и собирать их обратно с нужными параметрами.

Использование командной строки для выгрузки

Для задач автоматизации (CI/CD) часто используется пакетный режим работы Конфигуратора. Рассмотрим параметры командной строки, которые отвечают за сохранение расширений. Команда /DumpExtension требует указания имени расширения и пути к файлу.

Пример команды для командного файла (bat/cmd):

1cv8.exe DESIGNER /F "C:\Base1C" /DumpExtension "MyExt" "C:\Backups\MyExt.cfe" /Out "log.txt"

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

Современная альтернатива: выгрузка в XML

Рассмотрим ситуацию, когда сохранение в один бинарный файл (будь то .cfe или .cf) нецелесообразно. В современной практике разработки расширения чаще всего выгружаются в набор файлов (XML, модули .bsl и т.д.). Это критически важно для работы с системами контроля версий, такими как Git.

Посмотрим на последовательность действий:

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

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

Особенности работы в облачных сервисах (1С:Фреш)

Проанализируем требования безопасности. В сервисах уровня «1С:Фреш» формат файла имеет решающее значение. При загрузке расширения в личный кабинет сервис ожидает именно файл .cfe. Более того, файл должен пройти аудит и часто должен быть подписан цифровой подписью. Попытка загрузить расширение, сохраненное с расширением .cf (даже если внутри валидное расширение), скорее всего, приведет к ошибке валидации на этапе загрузки файла в хранилище сервиса, так как фильтры расширений файлов настроены жестко.

Итоги

Подводя итог нашему разбору, можно выделить следующие ключевые моменты:

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

← На главную