Файл .cfe: как доработать типовую 1С 8.3 и не снимать её с поддержки
Содержание
Расширение 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. Новое расширение
- Откройте базу в Конфигураторе и откройте конфигурацию (
Конфигурация → Открыть конфигурацию). - Выберите
Конфигурация → Расширения конфигурации. - В открывшемся списке нажмите
Добавить. - Заполните свойства:
- Имя — латиницей или кириллицей без пробелов, например
ДоработкиПечати; - Префикс — короткая приставка для новых объектов, например
дп_. Платформа подставит её в имена всего, что вы создадите; - Назначение —
Исправление,АдаптацияилиДополнение.
- Имя — латиницей или кириллицей без пробелов, например
- Нажмите
ОК— в списке появится строка, двойной щелчок откроет дерево расширения.
Назначение влияет на порядок применения: сначала платформа применяет исправления, затем адаптации, затем дополнения. Для своих доработок типовой базы обычно выбирают Адаптация, для срочного исправления ошибки типового кода — Исправление.
Шаг 2. Заимствование объектов
Расширение не может менять объект, которого в нём нет. Поэтому сначала объект основной конфигурации заимствуют:
- В дереве основной конфигурации найдите нужный объект, например документ «Реализация (акт, накладная, УПД)» или его форму.
- Щелчком правой кнопки выберите
Добавить в расширениеи укажите расширение. - В дереве расширения объект появится с отметкой заимствования.
Заимствовать нужно и сам объект, и конкретную форму или модуль, которые будете менять. Остальное подтягивать не надо: чем меньше заимствований, тем реже расширение ломается при обновлениях.
Шаг 3. Изменение кода через аннотации
В модуле заимствованного объекта или формы процедуру перехватывают аннотацией. Платформа предложит заготовку, если выбрать процедуру в модуле основной конфигурации и вызвать команду добавления в расширение.
&После("ПередЗаписью")
Процедура дп_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Не ЗначениеЗаполнено(Комментарий) Тогда
Комментарий = "Создан " + Формат(ТекущаяДатаСеанса(), "ДФ=dd.MM.yyyy");
КонецЕсли;
КонецПроцедуры
Какие аннотации бывают:
| Аннотация | Что делает | Риск |
|---|---|---|
&Перед | Ваш код выполняется до типового | Низкий |
&После | Ваш код выполняется после типового | Низкий |
&Вместо | Типовой код не выполняется, если вы не вызовете ПродолжитьВызов() | Высокий: исправления фирмы 1С в этой процедуре до вас не дойдут |
&ИзменениеИКонтроль | Копия типовой процедуры с вашими вставками и удалениями | Средний: при изменении оригинала расширение перестанет применяться и потребует сверки |
&ИзменениеИКонтроль доступна с платформы 8.3.16. Вставки помечают директивами #Вставка … #КонецВставки, удаления — #Удаление … #КонецУдаления.
Перехват через &Вместо без ПродолжитьВызов() — самый частый источник тихих проблем: типовой код после обновления изменился, а у вас по-прежнему работает старая логика.
Шаг 4. Свои объекты и реквизиты
Новый справочник или документ добавляют в дерево расширения как в обычной конфигурации. В заимствованный типовой объект можно добавить реквизит: откройте его в расширении и создайте реквизит на закладке данных. Имя получит префикс расширения.
Если расширение хранит данные, после его применения платформа выполнит реструктуризацию таблиц. Для этого нужен монопольный доступ к базе.
Шаг 5. Права на новые объекты
Пользователи не увидят новый справочник или реквизит, пока у них нет прав. Есть два пути:
- 🔑 заимствовать типовую роль (например, ту, что дана бухгалтерам) и выставить в ней права на объекты расширения;
- 🧩 создать в расширении свою роль и назначить её пользователям или включить в профиль групп доступа.
Как подключить расширение к рабочей базе
Подключить готовый .cfe можно тремя способами. Выбор зависит от того, есть ли у вас доступ в Конфигуратор и сколько баз нужно обновить.
Через Конфигуратор
Конфигурация → Расширения конфигурации.- Выделите строку расширения (или добавьте новое пустое с тем же именем).
- В командной панели окна выберите загрузку конфигурации из файла и укажите
.cfe. - Откройте дерево расширения и выполните
Конфигурация → Обновить конфигурацию базы данных(F7) для этого расширения.
Загрузка файла и обновление конфигурации базы данных — два отдельных шага. Пока не выполнено обновление, пользователи работают со старой версией расширения.
Из пользовательского режима (типовые на БСП)
В БП 3.0, ЗУП 3.1, УТ 11 расширения подключаются без Конфигуратора:
Администрирование → Печатные формы, отчеты и обработки.- Включите флажок
Расширенияи перейдите по ссылкеРасширения. - Нажмите
Добавить из файлаи выберите.cfe. - Подтвердите предупреждение о безопасности и перезапустите программу.
Для этого нужны права полного администратора. В списке расширений есть флажки Активно и Безопасный режим. Расширение, загруженное из пользовательского режима, по умолчанию работает в безопасном режиме: ему запрещены, например, запуск внешних программ и работа с файловой системой сервера.
Если расширение от разработчика не запускается из-за безопасного режима, не снимайте флажок вслепую. Сначала узнайте у автора, какие привилегированные действия ему нужны и зачем.
Командной строкой (для нескольких баз)
Пакетный режим Конфигуратора принимает параметр -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С переименовала или удалила заимствованный объект, реквизит или процедуру — расширение не применится, и база при запуске сообщит об ошибке;
- ⚠️ если изменился текст процедуры с
&ИзменениеИКонтроль— расширение тоже не применится, пока вы не сверите изменения.
Порядок работы после каждого обновления:
- Обновите копию базы , а не рабочую.
- Откройте расширение в Конфигураторе и запустите
Конфигурация → Проверка конфигурациидля него. - Для процедур с
&ИзменениеИКонтрольсравните новый текст оригинала со своей копией и перенесите вставки. - Проверьте сценарии, ради которых делали расширение: печать, заполнение, проведение.
- Выгрузите исправленное расширение в
.cfeи загрузите в рабочую базу.
Держите расширения в системе контроля версий или хотя бы в папке с датой в имени файла: ДоработкиПечати_2026-10-07.cfe. Откатиться на прошлую версию тогда можно за минуту.
Ограничения расширений, о которых узнают слишком поздно
Расширение — не полная замена правке конфигурации. Перед началом проекта проверьте, укладывается ли задача в его рамки.
- 🧱 Режим совместимости. Режим совместимости расширения не может быть выше режима совместимости основной конфигурации. Расширение, сделанное в свежей базе, может не загрузиться в старую.
- 🔢 Версия платформы. Возможности зависят от номера платформы: реквизиты в заимствованных объектах — не ниже 8.3.12,
&ИзменениеИКонтроль— не ниже 8.3.16. - 🗑️ Удаление расширения с данными. Если отключить или удалить расширение со своими справочниками и реквизитами, данные в них станут недоступны, а при удалении будут потеряны.
- 🔐 Безопасный режим. Расширение в безопасном режиме не может выполнять привилегированные действия, даже если код написан правильно.
- 🔄 Распределённые базы. Чтобы расширение попало в подчинённые узлы, у него должен быть включён признак передачи в узлы распределённой базы, а сами расширения в узлах должны совпадать.
- 🧩 Несколько расширений. Если два расширения перехватывают одну процедуру, результат зависит от порядка применения. Такие пересечения лучше избегать.
| Задача | Расширение подходит? |
|---|---|
| Новая печатная форма УПД со своим логотипом | Да |
| Дополнительный реквизит «Ответственный» в документе | Да, на платформе 8.3.12 и выше |
| Изменение логики проведения типового документа | Да, через перехват, но с аккуратным сопровождением |
| Удаление типового реквизита или смена его типа | Нет, это делают только в основной конфигурации |
Ошибки при применении расширения и как их исправить
Ошибки появляются при загрузке .cfe, при обновлении конфигурации базы данных или при старте программы. Текст сообщения почти всегда подсказывает, какой объект мешает.
Для обновления конфигурации базы данных с реструктуризацией нужен монопольный доступ. Все сеансы будут завершены, несохранённые документы пользователей пропадут. Планируйте это на вечер или выходной и предупредите людей заранее.
Перед любым применением нового .cfe в рабочей базе сделайте резервную копию: выгрузку .dt для файловой базы или бэкап СУБД для серверной.