Расширение конфигурации в 1С:Предприятии 8.3 — доработка без снятия с поддержки
Содержание
Расширение конфигурации
в 1С 8.3 — это отдельный слой доработок (файл .cfe), который платформа накладывает поверх типовой конфигурации при запуске. Основная конфигурация остаётся на полной поддержке, поэтому обновляется штатно, а ваши изменения живут отдельно и подключаются заново после каждого обновления.
Для доработки 1С:Предприятия 8.3 есть три пути: внешняя обработка, расширение и снятие конфигурации с поддержки. Внешняя обработка годится для отдельной печатной формы или разового отчёта. Расширение — для изменения форм, модулей и добавления новых объектов. Снятие с поддержки — крайний случай, когда без правки самой конфигурации не обойтись. Механизм расширений появился в платформе 8.3.6 и с каждой версией платформы получал новые возможности.
Что такое расширение и зачем его придумали
До расширений любая правка типовой конфигурации означала включить возможность изменения в Конфигураторе. После этого каждое обновление превращалось в сравнение и объединение: программист вручную сводил свои изменения с новым релизом. На доработанной базе это часы, а иногда дни работы.
Расширение решает эту проблему иначе. Вы не трогаете исходную конфигурацию, а описываете отдельно, что поменять:
- 🧩 добавить — новый реквизит, справочник, документ, отчёт, команду, роль;
- ✏️ изменить — форму (кнопка, поле, обработчик), процедуру модуля, макет печатной формы;
- 🔧 исправить — ошибку в типовом коде, не дожидаясь релиза от разработчика.
При старте сеанса платформа «собирает» итоговую конфигурацию: основа плюс все активные расширения. Пользователь видит единую программу и не замечает, где типовой код, а где дописанный.
Назначение расширения
У каждого расширения в свойствах указывается назначение. От него зависит порядок применения, если расширений несколько:
| Назначение | Для чего | Применяется |
|---|---|---|
| Исправление | Срочный патч ошибки типовой конфигурации | Первым |
| Адаптация | Подстройка типового решения под процессы компании | Вторым |
| Дополнение | Новая функциональность, отраслевые блоки, интеграции | Последним |
Внутри одной группы расширения применяются в порядке подключения. Если два расширения меняют одну процедуру, результат зависит от этого порядка — это частый источник «непонятного» поведения после установки нового расширения.
Расширение, внешняя обработка и снятие с поддержки: в чём разница
Выбор механизма определяет, сколько будет стоить сопровождение базы через год. Сводная таблица:
| Критерий | Внешняя обработка (.epf/.erf) | Расширение (.cfe) | Снятие с поддержки |
|---|---|---|---|
| Где хранится | Отдельный файл или справочник дополнительных обработок | В информационной базе, отдельно от основы | Прямо в основной конфигурации |
| Может менять типовые формы и модули | Нет | Да | Да |
| Может добавлять реквизиты и объекты | Нет | Да | Да |
| Влияет на обновление | Нет | Обновление штатное, нужна проверка расширения | Каждый релиз — сравнение и объединение |
| Нужен Конфигуратор для установки | Нет | Нет, можно загрузить в пользовательском режиме | Да |
| Риск для базы | Минимальный | Средний: ошибка ломает только доработку | Высокий |
Чем расширение лучше внешней обработки
Внешняя обработка — самостоятельная программа. Она читает и пишет данные базы, но не может вмешаться в работу типовых объектов. Поставить проверку при проведении документа, добавить колонку в табличную часть или кнопку на форму обработкой не получится.
Через подсистему дополнительных обработок можно зарегистрировать печатную форму или команду заполнения, но это узкий набор точек подключения, заданный разработчиком конфигурации. Расширение таких рамок не имеет: доработать можно почти любой объект.
Чем расширение лучше снятия с поддержки
Снятая с поддержки конфигурация перестаёт обновляться в один клик. Каждый релиз требует сравнения в Конфигураторе, и чем больше правок, тем выше шанс потерять изменение или получить конфликт.
С расширением основа остаётся на поддержке. Обновление ставится как на «чистую» типовую базу, а расширение после него просто перепроверяется. Если доработку можно сделать расширением, снимать конфигурацию с поддержки не нужно.
Возможности и ограничения расширений в 1С 8.3
Расширение работает с объектами основной конфигурации через заимствование. Чтобы изменить типовой объект, его сначала добавляют в расширение: в дереве основной конфигурации щёлкните объект правой кнопкой и выберите Добавить в расширение. Объект появится в дереве расширения с пометкой заимствования.
Что можно сделать
- ✅ добавить в заимствованную форму новые поля, кнопки, группы и обработчики событий;
- ✅ переопределить процедуры модулей через аннотации
&Перед,&После,&Вместои&ИзменениеИКонтроль; - ✅ добавить реквизиты и табличные части в заимствованные объекты (в актуальных версиях платформы);
- ✅ создать собственные справочники, документы, регистры, отчёты, обработки, общие модули;
- ✅ заменить макет печатной формы;
- ✅ добавить роли и права на новые объекты.
Чего сделать нельзя
- ❌ удалить реквизит, табличную часть или объект основной конфигурации;
- ❌ изменить тип существующего реквизита основы;
- ❌ переименовать типовые объекты;
- ❌ сохранить данные новых объектов после удаления расширения — они пропадут вместе с ним.
Если в расширении есть собственные справочники, документы или добавленные реквизиты, то при отключении или удалении расширения эти данные теряются. Перед удалением такого расширения выгрузите базу в .dt.
Безопасный режим
По умолчанию расширение работает в безопасном режиме: ему недоступны операции с файлами, внешние компоненты, COM-объекты и привилегированный режим. Для большинства доработок форм и проверок этого хватает.
Если доработке нужен, например, обмен файлами с внешней системой, флаг Безопасный режим в свойствах расширения снимают. Делайте это только для расширений из известного источника: код без ограничений получает те же возможности, что и сама конфигурация.
Как расширение меняет код типовой процедуры
Аннотация задаёт, когда сработает ваш код относительно исходного:
| Аннотация | Что происходит |
|---|---|
&Перед("Имя") | Ваша процедура выполняется до типовой |
&После("Имя") | Ваша процедура выполняется после типовой |
&Вместо("Имя") | Типовая процедура не выполняется; вызвать её можно через ПродолжитьВызов() |
&ИзменениеИКонтроль("Имя") | Копия типовой процедуры с вашими вставками и удалениями |
Пример: в форме документа нужно подсветить незаполненный комментарий. В модуле заимствованной формы пишем:
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Элементы.Комментарий.АвтоОтметкаНезаполненного = Истина;
КонецПроцедуры
Аннотация &ИзменениеИКонтроль полезна, когда нужно вмешаться в середину типовой процедуры. В расширение копируется весь текст исходной процедуры, а изменения размечаются инструкциями #Вставка … #КонецВставки и #Удаление … #КонецУдаления:
// Основная конфигурация, общий модуль
Функция ТекстПредупреждения(Сумма) Экспорт
Текст = "Сумма превышает лимит";
Возврат Текст;
КонецФункции
// Расширение, тот же заимствованный модуль
&ИзменениеИКонтроль("ТекстПредупреждения")
Функция Расш1_ТекстПредупреждения(Сумма)
Текст = "Сумма превышает лимит";
#Вставка
Текст = Текст + ": " + Формат(Сумма, "ЧДЦ=2");
#КонецВставки
Возврат Текст;
КонецФункции
Главный плюс этой аннотации — контроль. Если в новом релизе разработчик поменяет исходную функцию, платформа увидит, что копия в расширении больше не совпадает с оригиналом, и не применит расширение. Вы узнаете о проблеме сразу, а не по жалобам пользователей.
💡 Префикс Расш1_ платформа подставляет по умолчанию. Задайте свой, осмысленный (например, мояКомп_), в свойствах расширения сразу при создании — так имена не пересекутся с объектами других расширений и будущих релизов.
Как создать и подключить расширение конфигурации
Расширение можно разработать в Конфигураторе или загрузить готовый файл .cfe прямо в пользовательском режиме.
Создание в Конфигураторе
- Откройте базу в Конфигураторе и, если нужно, основную конфигурацию:
Конфигурация → Открыть конфигурацию. - Выберите
Конфигурация → Расширения конфигурациии нажмитеДобавить. - Задайте имя, синоним, префикс и назначение (Исправление, Адаптация или Дополнение).
- Откройте дерево расширения и добавьте нужные объекты основы через
Добавить в расширение. - Внесите изменения в формы и модули.
- Обновите конфигурацию базы данных для расширения (F7 при открытом расширении).
- Запустите 1С в режиме предприятия и проверьте доработку.
Готовое расширение сохраняют в файл из окна расширения: Конфигурация → Сохранить в файл. Получится .cfe, который можно передать в другую базу.
Загрузка готового файла в Конфигураторе
- Откройте
Конфигурация → Расширения конфигурации. - Создайте пустое расширение или выберите существующее.
- В его окне выполните
Конфигурация → Загрузить из файлаи укажите.cfe. - Отдельным шагом обновите конфигурацию базы данных для расширения.
Загрузка файла и обновление конфигурации БД — разные операции. Если пропустить второй шаг, расширение не применится.
Подключение в пользовательском режиме
Конфигуратор не обязателен. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть штатный список расширений:
| Конфигурация | Где найти список расширений |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки → Расширения |
| ЗУП 3.1, УТ 11 | Раздел Администрирование, группа печатных форм, отчётов и обработок, ссылка Расширения |
| Любая конфигурация | Все функции → Стандартные → Управление расширениями конфигурации |
В списке нажмите Добавить из файла, выберите .cfe и подтвердите. Расширение начнёт работать после перезапуска сеанса — закройте программу и войдите снова.
Для загрузки расширения нужны административные права. Если расширение работает не в безопасном режиме, программа выведет предупреждение — подтверждайте его только для файлов от проверенного разработчика.
Где расширения применяют на практике
Типичные задачи, которые закрывают расширением, а не правкой конфигурации:
- 📄 печатные формы — изменённый макет счёта, накладной, акта с логотипом и реквизитами компании;
- 🧾 новые реквизиты — например, поле «Ответственный менеджер» в документе реализации с выводом в отчёты;
- 🚫 контроль ввода — запрет провести документ без договора или с датой закрытого периода;
- 🔌 интеграции — обмен с сайтом, CRM, складской системой, банком;
- 🛠 срочные исправления — патч ошибки, которую разработчик закроет только в следующем релизе;
- 📊 отраслевые отчёты — собственные отчёты на новых регистрах расширения.
Так устроены и многие тиражные доработки: модули интеграции с маркетплейсами, отраслевые блоки, коннекторы к сервисам. Их поставляют как .cfe именно для того, чтобы клиент не терял поддержку типовой конфигурации.
Ещё один полезный сценарий — проверка гипотезы. Нужно понять, будет ли пользователям удобна новая кнопка или поле? Сделайте расширение, включите его на неделю, а если не прижилось — снимите флаг Активно. Если в расширении нет собственных данных, база останется в исходном состоянии.
Обновление типовой конфигурации и сопровождение расширений
Расширение не обновляется вместе с конфигурацией: обновляется только основа. После этого платформа проверяет, можно ли применить расширение к новой версии.
Что происходит после обновления
- ✅ Если заимствованные объекты и процедуры не изменились — расширение применяется, всё работает как раньше.
- ⚠️ Если в новом релизе изменилась процедура, перехваченная через
&ИзменениеИКонтроль, или исчез заимствованный реквизит, элемент формы, процедура — расширение не применится. Пользователь увидит сообщение об ошибке применения при запуске. - ⚠️ Режим совместимости расширения должен соответствовать основной конфигурации. Если после обновления платформы и конфигурации режим основы поменялся, режим расширения тоже нужно поднять.
Порядок действий при обновлении
- Сделайте резервную копию базы перед обновлением.
- Обновите типовую конфигурацию штатно.
- Запустите базу и проверьте, применилось ли каждое расширение: в списке расширений и по сообщениям при входе.
- Если расширение не применяется — откройте его в Конфигураторе, найдите объекты с ошибкой и перенесите изменения в новую версию типового кода.
- Протестируйте доработку в копии базы, а потом в рабочей.
Сколько расширений можно подключить
Жёсткого лимита на количество расширений в документации платформы нет, но каждое расширение увеличивает время запуска сеанса и усложняет диагностику. Если расширений больше пяти-шести, ведите их реестр: кто писал, зачем, какие объекты заимствует. Когда два расширения меняют одну форму или процедуру, конфликты почти неизбежны.
💡 Объединяйте мелкие доработки одного разработчика в одно расширение с назначением «Адаптация». Отдельные расширения оставляйте для тиражных модулей от сторонних поставщиков — их обновляет поставщик, и смешивать их с вашим кодом не стоит.