Расширение конфигурации 1С: как дорабатывать типовую базу без снятия с поддержки

· 10 мин

Содержание

Расширение в 1С — это отдельный подключаемый слой поверх типовой конфигурации: в нём живут ваши доработки, а сама конфигурация остаётся на поддержке поставщика и обновляется как обычно. Механизм работает на платформе 1С:Предприятие 8.3, начиная с версии 8.3.6, и в каждой следующей версии платформы получал новые возможности.

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

Суть расширения и чем оно отличается от внешней обработки

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

Внешняя обработка (.epf) или внешний отчёт (.erf) устроены иначе. Это самостоятельный объект, который открывается из файла или регистрируется в справочнике дополнительных обработок. Он может читать и записывать данные базы, но не может изменить поведение типового документа, добавить поле в его форму или реквизит в справочник.

ПризнакРасширение (.cfe)Внешняя обработка (.epf/.erf)
Меняет типовые формы и модули✅ да❌ нет
Добавляет реквизиты в типовые объекты✅ да❌ нет
Свои справочники, документы, регистры✅ да❌ нет
Подключениехранится в базе, применяется при запуске сеансаоткрывается из файла или из справочника доп. обработок
Влияние на обновление типовойне мешает, нужна проверка совместимостине мешает
Порог входа для разработчикасреднийнизкий

Ключевое понятие — заимствование. Чтобы изменить типовой объект, его добавляют в расширение («заимствуют»). В расширении появляется ссылка на объект основной конфигурации, и к нему можно дописать реквизит, форму, команду или обработчик события. Всё остальное в объекте остаётся типовым.

Второе понятие — назначение расширения. В свойствах расширения его выбирают из трёх вариантов:

  • 🩹 Исправление — точечная заплатка ошибки, обычно временная до выхода нового релиза;
  • 🔧 Адаптация — подстройка типового решения под конкретную компанию;
  • ➕ Дополнение — новая функциональность, например отраслевой блок поверх типовой.

От назначения зависит порядок применения: если в базе несколько расширений, сначала применяются исправления, затем адаптации, затем дополнения.

Возможности и ограничения расширений конфигурации

Что можно сделать в расширении на актуальной платформе 8.3:

  • 📋 добавить собственные справочники, документы, регистры, отчёты, обработки, общие модули и роли;
  • 🧩 добавить реквизиты и табличные части в заимствованные справочники и документы;
  • 🖼 изменить типовую форму: добавить поле, кнопку, вкладку, скрыть элемент;
  • ⚙️ перехватить процедуру или функцию типового модуля аннотациями &Перед, &После, &Вместо, &ИзменениеИКонтроль;
  • 🖨 переопределить печатную форму или добавить новую;
  • 🔔 добавить подписки на события и регламентные задания.

Аннотации перехвата — главный инструмент программиста. Коротко о каждой:

АннотацияЧто делаетКогда применять
&Перед("Имя")ваш код выполняется до типовогопроверки, заполнение значений по умолчанию
&После("Имя")ваш код выполняется после типовогодополнительные действия, донастройка формы
&Вместо("Имя")ваш код заменяет типовой; вызвать оригинал можно через ПродолжитьВызов()когда нужно условно отключить типовую логику
&ИзменениеИКонтроль("Имя")копия типовой процедуры с вставками #Вставка / #Удалениеправка в середине алгоритма

Пример перехвата: запретить запись счёта покупателю без комментария. Код помещается в модуль объекта заимствованного документа в расширении.

&Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    Если Не ЗначениеЗаполнено(Комментарий) Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Заполните комментарий: укажите, по какой договорённости выставлен счёт.";
        Сообщение.Поле = "Комментарий";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

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

Ограничения, о которых нужно помнить:

  • 🔒 у заимствованного объекта часть свойств контролируется: если в новом релизе поставщик изменит их, расширение перестанет подключаться до исправления;
  • 🔒 &ИзменениеИКонтроль хранит копию типового текста: любое изменение этой процедуры в новом релизе ломает применение расширения;
  • 🔒 расширение, запущенное в безопасном режиме, не может работать с файлами, COM-объектами и внешними компонентами — для этого безопасный режим отключают в карточке расширения;
  • 🔒 если в расширении есть собственные объекты с данными, оно меняет структуру базы. При удалении такого расширения данные его объектов будут потеряны.

Где расширения помогают бизнесу: сценарии использования

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

🖨 Печатные формы. Добавить логотип и подпись в счёт, вывести в акте поле «Основание», сделать свою форму доверенности. Заимствуется модуль менеджера документа или общий модуль печати, макет хранится в расширении.

📝 Дополнительные поля. Номер тендера в заказе покупателя, ответственный менеджер в договоре, признак «VIP» в карточке контрагента. В БСП-конфигурациях для простых случаев хватает механизма дополнительных реквизитов, но если поле участвует в проверках или отчётах, его делают реквизитом через расширение.

🚦 Проверки и запреты. Не давать проводить реализацию при просроченной дебиторке, требовать заполнения статьи затрат, контролировать лимит по кассе. Это перехват ПередЗаписью или ОбработкаПроведения.

🔄 Интеграции. Обмен с сайтом, маркетплейсом, складской программой, банком. Свои общие модули и HTTP-сервисы в расширении, регламентное задание для автоматической выгрузки.

🩹 Срочное исправление ошибки. Поставщик подтвердил ошибку, но исправит её только в следующем релизе. Расширение с назначением «Исправление» закрывает проблему сегодня, а после выхода релиза его удаляют.

📊 Управленческая отчётность. Свои отчёты на системе компоновки данных, свои регистры для управленческих данных. Можно сделать и внешним отчётом, но в расширении отчёт попадает в командный интерфейс и права.

Как установить и подключить расширение 1С

Есть два пути: через пользовательский режим (для готового файла .cfe от разработчика) и через Конфигуратор (для разработки).

Подключение в пользовательском режиме

В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11 и др.) управление расширениями вынесено в раздел администрирования:

КонфигурацияГде открыть список расширений
БП 3.0Администрирование → Печатные формы, отчеты и обработки → Расширения
ЗУП 3.1, УТ 11Администрирование → Печатные формы, отчеты и обработки → Расширения
Любая конфигурацияГлавное меню → Все функции → Стандартные → Управление расширениями конфигурации

Если пункта «Все функции» нет в главном меню, включите его: Главное меню → Сервис → Параметры → флажок «Отображать команду „Все функции"».

Порядок действий:

  1. Сделайте резервную копию базы : выгрузку .dt или копию каталога файловой базы.
  2. Откройте список расширений и нажмите кнопку добавления из файла.
  3. Выберите файл .cfe.
  4. В строке расширения проверьте флажки: «Активно», «Безопасный режим», «Защита от опасных действий». Безопасный режим снимайте, только если разработчик прямо указал, что расширению нужен доступ к файлам или внешним компонентам.
  5. Перезапустите 1С: расширение применяется при старте нового сеанса. Остальные пользователи увидят изменения после своего перезапуска.

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

Подключение и разработка в Конфигураторе

  1. Откройте базу в Конфигураторе.
  2. Меню Конфигурация → Расширения конфигурации.
  3. Кнопка «Добавить» создаёт новое пустое расширение. Задайте имя, синоним, префикс (например, Расш1_) и назначение.
  4. Для загрузки готового файла выделите строку расширения и в меню «Конфигурация» этого окна выберите загрузку из файла.
  5. Откройте дерево расширения, внесите изменения. Чтобы заимствовать типовой объект, в дереве основной конфигурации вызовите на нём контекстное меню → «Добавить в расширение».
  6. Сохраните расширение и выполните обновление конфигурации базы данных для этого расширения (F7 в окне расширения). Загрузка .cfe и «Обновить конфигурацию базы данных» — два отдельных шага: без второго изменения в базу не попадут.

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

Отладка и сопровождение расширений после обновлений

Отладка расширения ничем не отличается от отладки основной конфигурации. Точки останова ставятся прямо в модулях расширения, отладчик заходит в них так же, как в типовой код. Запуск — Отладка → Начать отладку в Конфигураторе, подключение к уже открытому клиенту — Отладка → Подключение.

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

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

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

Ещё одно правило сопровождения — документировать расширение. В комментарии к каждой процедуре указывайте, зачем сделан перехват и по какой заявке. Через два года, когда придёт новый программист, это сэкономит ему дни.

Расширение, БСП или правка основной конфигурации: что выбрать

У доработки типовой 1С четыре пути. Они не взаимоисключающие: в одной базе часто живут и расширение, и внешние обработки.

СпособКогда подходитЦена обновленияРиски
Дополнительные реквизиты и сведения (БСП)нужно 1–3 поля без логикинулеваяполе нельзя использовать в сложной логике и проводках
Внешние обработки и отчёты через БСПпечатная форма, заполнение табличной части, отчётнулеваянельзя изменить типовой документ и его форму
Расширение конфигурацииизменение логики, форм, новых объектовнизкая: проверка применимостиполомка при изменении перехваченного кода в релизе
Правка основной конфигурацииглубокая переработка, отраслевое решениевысокая: сравнение и объединение при каждом релизеконфигурация с изменениями, долгие обновления

Как выбрать на практике:

  • 🟢 нужно поле «для информации» — дополнительный реквизит БСП, без программиста;
  • 🟢 нужна печатная форма или обработка заполнения — внешняя обработка, её проще передать и заменить;
  • 🟡 нужно изменить поведение типового документа или формы — расширение;
  • 🔴 нужно переписать половину механизма учёта — правка основной конфигурации, с пониманием стоимости обновлений.

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

Ориентир по стоимости у франчайзи — примерно от 2–5 часов работы программиста на простое расширение (поле в форме, печатная форма) до 20–40 часов и выше на интеграцию или блок проверок. Обновление базы с расширением обычно дешевле, чем обновление конфигурации, снятой с поддержки, потому что не нужно объединять конфигурации.

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

Чем расширение отличается от конфигурации, снятой с поддержки?
При снятии с поддержки вы правите сам код поставщика и при каждом обновлении объединяете конфигурации вручную. Расширение хранит доработки отдельно, и типовая часть обновляется автоматически.
Можно ли подключить расширение в облачной 1С (1С:Фреш, аренда)?
Да, в сервисах на технологии 1cFresh расширения подключают, но обычно после проверки провайдером. Порядок и требования к расширению уточняйте у своего провайдера.
Слетит ли расширение при обновлении типовой конфигурации?
Само расширение из базы не удаляется. Оно может перестать применяться, если поставщик изменил перехваченные объекты. Поэтому перед обновлением рабочей базы проверяйте применимость на копии.
Сколько расширений можно подключить к одной базе?
Можно подключить несколько расширений одновременно. Чем их больше, тем выше риск конфликтов перехватов и тем дольше проверка после каждого обновления.
Как отключить расширение на время, не удаляя его?
Снимите флажок «Активно» в списке расширений и перезапустите сеанс. Данные собственных объектов расширения при этом сохраняются, в отличие от удаления.
Нужно ли отдельно лицензировать расширение?
Платформа отдельной лицензии на расширение не требует. Коммерческое расширение от стороннего разработчика может иметь свою схему лицензирования — это условия автора, а не 1С:Предприятия.