Файл .cfe: как доработать типовую 1С 8.3 и не снимать её с поддержки

· 9 мин

Содержание

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

Механизм появился в платформе 8.3.6 и с тех пор сильно вырос: в первых версиях расширение умело менять только формы, сейчас в нём можно заводить свои справочники и документы, добавлять реквизиты в типовые объекты и перехватывать методы модулей. Поэтому то, что работает на платформе 8.3.24, может не загрузиться в базу на 8.3.10.

Что лежит в файле .cfe и чем он отличается от .cf и внешней обработки

Файл .cfe (configuration extension) содержит только ваши изменения и ссылки на объекты основной конфигурации, которые вы «позаимствовали». Типовой код в нём не копируется целиком.

Сравнение трёх способов доработки:

СпособЧто хранитВлияние на поддержкуКогда выбирать
Правка основной конфигурации (.cf)Всю конфигурацию целикомНужно включать возможность изменения, обновления дольше и с объединениемГлубокая переделка, когда расширения не хватает
Внешняя обработка или отчёт (.epf, .erf)Один отдельный объектНе влияетРазовая обработка, печатная форма через подсистему дополнительных отчётов
Расширение (.cfe)Изменения и заимствованные объектыНе влияет, конфигурация остаётся на поддержкеПостоянные доработки: формы, реквизиты, исправления кода

🔹 Что можно сделать расширением:

  • 📄 изменить форму типового документа или справочника, добавить на неё поля и кнопки;
  • 🖨️ добавить или переделать печатную форму;
  • ➕ добавить реквизит или табличную часть в типовой объект (платформа 8.3.12 и выше);
  • 📚 создать свои справочники, документы, регистры, отчёты, роли;
  • 🛠️ перехватить процедуру типового модуля и выполнить свой код до, после или вместо неё.

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

Как создать расширение конфигурации в Конфигураторе

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

Шаг 1. Новое расширение

  1. Откройте базу в Конфигураторе и откройте конфигурацию (Конфигурация → Открыть конфигурацию).
  2. Выберите Конфигурация → Расширения конфигурации.
  3. В открывшемся списке нажмите Добавить.
  4. Заполните свойства:
    • Имя — латиницей или кириллицей без пробелов, например ДоработкиПечати;
    • Префикс — короткая приставка для новых объектов, например дп_. Платформа подставит её в имена всего, что вы создадите;
    • Назначение — Исправление, Адаптация или Дополнение.
  5. Нажмите ОК — в списке появится строка, двойной щелчок откроет дерево расширения.

Назначение влияет на порядок применения: сначала платформа применяет исправления, затем адаптации, затем дополнения. Для своих доработок типовой базы обычно выбирают Адаптация, для срочного исправления ошибки типового кода — Исправление.

Шаг 2. Заимствование объектов

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

  1. В дереве основной конфигурации найдите нужный объект, например документ «Реализация (акт, накладная, УПД)» или его форму.
  2. Щелчком правой кнопки выберите Добавить в расширение и укажите расширение.
  3. В дереве расширения объект появится с отметкой заимствования.

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

Шаг 3. Изменение кода через аннотации

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

&После("ПередЗаписью")
Процедура дп_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Если Не ЗначениеЗаполнено(Комментарий) Тогда
		Комментарий = "Создан " + Формат(ТекущаяДатаСеанса(), "ДФ=dd.MM.yyyy");
	КонецЕсли;
КонецПроцедуры

Какие аннотации бывают:

АннотацияЧто делаетРиск
&ПередВаш код выполняется до типовогоНизкий
&ПослеВаш код выполняется после типовогоНизкий
&ВместоТиповой код не выполняется, если вы не вызовете ПродолжитьВызов()Высокий: исправления фирмы 1С в этой процедуре до вас не дойдут
&ИзменениеИКонтрольКопия типовой процедуры с вашими вставками и удалениямиСредний: при изменении оригинала расширение перестанет применяться и потребует сверки

&ИзменениеИКонтроль доступна с платформы 8.3.16. Вставки помечают директивами #Вставка … #КонецВставки, удаления — #Удаление … #КонецУдаления.

Перехват через &Вместо без ПродолжитьВызов() — самый частый источник тихих проблем: типовой код после обновления изменился, а у вас по-прежнему работает старая логика.

Шаг 4. Свои объекты и реквизиты

Новый справочник или документ добавляют в дерево расширения как в обычной конфигурации. В заимствованный типовой объект можно добавить реквизит: откройте его в расширении и создайте реквизит на закладке данных. Имя получит префикс расширения.

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

Шаг 5. Права на новые объекты

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

  • 🔑 заимствовать типовую роль (например, ту, что дана бухгалтерам) и выставить в ней права на объекты расширения;
  • 🧩 создать в расширении свою роль и назначить её пользователям или включить в профиль групп доступа.

Как подключить расширение к рабочей базе

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

Через Конфигуратор

  1. Конфигурация → Расширения конфигурации.
  2. Выделите строку расширения (или добавьте новое пустое с тем же именем).
  3. В командной панели окна выберите загрузку конфигурации из файла и укажите .cfe.
  4. Откройте дерево расширения и выполните Конфигурация → Обновить конфигурацию базы данных (F7) для этого расширения.

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

Из пользовательского режима (типовые на БСП)

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

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

Для этого нужны права полного администратора. В списке расширений есть флажки Активно и Безопасный режим. Расширение, загруженное из пользовательского режима, по умолчанию работает в безопасном режиме: ему запрещены, например, запуск внешних программ и работа с файловой системой сервера.

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

Командной строкой (для нескольких баз)

Пакетный режим Конфигуратора принимает параметр -Extension:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" ^
  /LoadCfg "D:\cfe\ДоработкиПечати.cfe" -Extension ДоработкиПечати ^
  /UpdateDBCfg -Extension ДоработкиПечати ^
  /Out "D:\cfe\log.txt"

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

Как сопровождать расширение при обновлениях типовой конфигурации

Главная выгода расширения — обновление типовой проходит без объединения. Но это не значит, что после обновления о нём можно забыть.

Что происходит при обновлении:

  • ✅ если заимствованные объекты и перехваченные процедуры не изменились — расширение применяется как раньше;
  • ⚠️ если фирма 1С переименовала или удалила заимствованный объект, реквизит или процедуру — расширение не применится, и база при запуске сообщит об ошибке;
  • ⚠️ если изменился текст процедуры с &ИзменениеИКонтроль — расширение тоже не применится, пока вы не сверите изменения.

Порядок работы после каждого обновления:

  1. Обновите копию базы , а не рабочую.
  2. Откройте расширение в Конфигураторе и запустите Конфигурация → Проверка конфигурации для него.
  3. Для процедур с &ИзменениеИКонтроль сравните новый текст оригинала со своей копией и перенесите вставки.
  4. Проверьте сценарии, ради которых делали расширение: печать, заполнение, проведение.
  5. Выгрузите исправленное расширение в .cfe и загрузите в рабочую базу.
После обновления типовой
Выполнено: 0 / 6

Держите расширения в системе контроля версий или хотя бы в папке с датой в имени файла: ДоработкиПечати_2026-10-07.cfe. Откатиться на прошлую версию тогда можно за минуту.

Ограничения расширений, о которых узнают слишком поздно

Расширение — не полная замена правке конфигурации. Перед началом проекта проверьте, укладывается ли задача в его рамки.

  • 🧱 Режим совместимости. Режим совместимости расширения не может быть выше режима совместимости основной конфигурации. Расширение, сделанное в свежей базе, может не загрузиться в старую.
  • 🔢 Версия платформы. Возможности зависят от номера платформы: реквизиты в заимствованных объектах — не ниже 8.3.12, &ИзменениеИКонтроль — не ниже 8.3.16.
  • 🗑️ Удаление расширения с данными. Если отключить или удалить расширение со своими справочниками и реквизитами, данные в них станут недоступны, а при удалении будут потеряны.
  • 🔐 Безопасный режим. Расширение в безопасном режиме не может выполнять привилегированные действия, даже если код написан правильно.
  • 🔄 Распределённые базы. Чтобы расширение попало в подчинённые узлы, у него должен быть включён признак передачи в узлы распределённой базы, а сами расширения в узлах должны совпадать.
  • 🧩 Несколько расширений. Если два расширения перехватывают одну процедуру, результат зависит от порядка применения. Такие пересечения лучше избегать.
ЗадачаРасширение подходит?
Новая печатная форма УПД со своим логотипомДа
Дополнительный реквизит «Ответственный» в документеДа, на платформе 8.3.12 и выше
Изменение логики проведения типового документаДа, через перехват, но с аккуратным сопровождением
Удаление типового реквизита или смена его типаНет, это делают только в основной конфигурации

Ошибки при применении расширения и как их исправить

Ошибки появляются при загрузке .cfe, при обновлении конфигурации базы данных или при старте программы. Текст сообщения почти всегда подсказывает, какой объект мешает.

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

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

Перед любым применением нового .cfe в рабочей базе сделайте резервную копию: выгрузку .dt для файловой базы или бэкап СУБД для серверной.

Частые вопросы о расширениях 1С

Снимает ли расширение конфигурацию с поддержки?
Нет. Основная конфигурация остаётся на поддержке и обновляется без объединения. Это главная причина пользоваться расширениями.
Можно ли открыть чужой файл .cfe и посмотреть код?
Да, если автор не защитил модули. Загрузите файл в пустое расширение копии базы и откройте его дерево в Конфигураторе.
Работает ли расширение в 1С:Фреш и других облаках?
В облачных сервисах расширения обычно подключают из пользовательского режима, а работают они в безопасном режиме. Требования к проверке и подключению устанавливает конкретный сервис.
Сколько расширений можно подключить к одной базе?
Жёсткого практического предела нет, но каждое расширение замедляет запуск и усложняет сопровождение. Однотипные доработки лучше собирать в одно расширение.
Можно ли превратить расширение в часть основной конфигурации?
Перенести можно только вручную: заново внести изменения в основную конфигурацию, а данные из объектов расширения переложить обработкой. Автоматического «встраивания» нет.