Как объединить расширение (.cfe) с основной конфигурацией (.cf) в 1С или сделать его самостоятельным?

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

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

Зачем объединять расширение с конфигурацией?

Проанализируем ситуации, в которых нам может понадобиться слияние или конвертация .cfe в .cf:

  1. Создание самостоятельного продукта: Расширение, разработанное под типовую конфигурацию (например, для обращения к веб-сервисам и отображения информации), может работать и без базы-носителя как простой вьюер. Чтобы не поставлять пользователям гибрид из пустой конфигурации и расширения, логично преобразовать его в единый законченный файл .cf.
  2. Переход на новый этап разработки: Когда функционал, который долгое время тестировался и дорабатывался в расширении, признается полностью стабильным, его внедряют в основной состав конфигурации.
  3. Оптимизация производительности: Большое количество подключенных расширений может существенно замедлять запуск системы и потреблять больше оперативной памяти. Объединение их с основной базой помогает повысить общую стабильность и скорость работы 1С.

Решение 1: Преобразование с помощью утилиты cfe2cf

Разберем по шагам самый популярный полуавтоматический метод решения этой задачи с помощью инструмента cfe2cf, написанного на OneScript. Эта утилита работает за счет изменения заголовка бинарного формата файла и корректировки внутренней структуры метаданных. Платформа начинает воспринимать файл расширения как обычную конфигурацию.

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

oscript -make ./src/cfe2cf.os ./bin/cfe2cf.exe

Если же вы используете уже скомпилированный релиз утилиты, процесс становится еще проще. Рассмотрим пример использования готовой команды для конвертации файла расширения 1.cfe в конфигурацию 1.cf:

cfe2cf f 1.cfe 1 1.cf

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

Решение 2: Использование 1C:Enterprise Development Tools (EDT)

Рассмотрим более современный и безопасный способ интеграции расширения в конфигурацию — использование среды 1C:EDT. Это штатный метод, который минимизирует риски потери связей между объектами.

  1. Импортируйте основную конфигурацию и ваше расширение в один проект (в виде связанных проектов) внутри среды разработки EDT.
  2. Перенесите объекты из ветки расширения в ветку основной конфигурации. Это можно сделать простым перетаскиванием (drag-and-drop) или через контекстное меню.
  3. Сохраните изменения и выгрузите объединенный результат обратно в базу 1С.

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

Решение 3: Метод через выгрузку в XML-файлы

Посмотрим на еще один классический способ, который требует понимания внутренней структуры файлов 1С. Платформа позволяет выгрузить как конфигурацию, так и расширение в набор файлов формата XML.

  1. Выгрузите конфигурацию-приемник и расширение в пустые каталоги.
  2. Вручную (или с помощью собственных скриптов) скопируйте XML-описания новых объектов из папки расширения в папку основной конфигурации.
  3. Самый важный шаг: аккуратно пропишите ссылки на перенесенные объекты в главном файле метаданных ConfigDumpInfo.xml.
  4. Выполните команду Загрузить конфигурацию из файлов в конфигураторе 1С.

Сложности и риски: На что обратить внимание?

Проанализируем возможные проблемы, которые возникают при любом из способов объединения:

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

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

Подводя итоги, объединение конфигурации с расширением — задача, требующая внимательности. Используйте утилиту cfe2cf для быстрого преобразования изолированных наработок или 1C:EDT для безопасного и масштабного слияния кода внутри рабочей команды.

← На главную