Расширение конфигурации 1С: как дорабатывать типовую базу без снятия с поддержки
Содержание
Расширение в 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 | Администрирование → Печатные формы, отчеты и обработки → Расширения |
| Любая конфигурация | Главное меню → Все функции → Стандартные → Управление расширениями конфигурации |
Если пункта «Все функции» нет в главном меню, включите его: Главное меню → Сервис → Параметры → флажок «Отображать команду „Все функции"».
Порядок действий:
- Сделайте резервную копию базы
: выгрузку
.dtили копию каталога файловой базы. - Откройте список расширений и нажмите кнопку добавления из файла.
- Выберите файл
.cfe. - В строке расширения проверьте флажки: «Активно», «Безопасный режим», «Защита от опасных действий». Безопасный режим снимайте, только если разработчик прямо указал, что расширению нужен доступ к файлам или внешним компонентам.
- Перезапустите 1С: расширение применяется при старте нового сеанса. Остальные пользователи увидят изменения после своего перезапуска.
Загружайте .cfe только от разработчика, которому доверяете. Расширение без безопасного режима имеет полный доступ к данным базы и к файловой системе сервера.
Подключение и разработка в Конфигураторе
- Откройте базу в Конфигураторе.
- Меню
Конфигурация → Расширения конфигурации. - Кнопка «Добавить» создаёт новое пустое расширение. Задайте имя, синоним, префикс (например,
Расш1_) и назначение. - Для загрузки готового файла выделите строку расширения и в меню «Конфигурация» этого окна выберите загрузку из файла.
- Откройте дерево расширения, внесите изменения. Чтобы заимствовать типовой объект, в дереве основной конфигурации вызовите на нём контекстное меню → «Добавить в расширение».
- Сохраните расширение и выполните обновление конфигурации
базы данных для этого расширения (
F7в окне расширения). Загрузка.cfeи «Обновить конфигурацию базы данных» — два отдельных шага: без второго изменения в базу не попадут.
Префикс обязателен по смыслу, хоть платформа и не требует его жёстко. Он защищает ваши объекты от совпадения имён с объектами, которые поставщик может добавить в будущих релизах.
Отладка и сопровождение расширений после обновлений
Отладка расширения ничем не отличается от отладки основной конфигурации. Точки останова ставятся прямо в модулях расширения, отладчик заходит в них так же, как в типовой код. Запуск — Отладка → Начать отладку в Конфигураторе, подключение к уже открытому клиенту — Отладка → Подключение.
При перехвате &Вместо полезно ставить точку останова и на ПродолжитьВызов(): так видно, вызывается ли типовой алгоритм вообще и с какими параметрами.
Главная зона риска — обновление типовой конфигурации. Порядок, который избавляет от сюрпризов:
- Перед обновлением выгрузите расширения в файлы
.cfe— это отдельная страховка помимо копии базы. - Обновите копию базы и откройте список расширений в Конфигураторе.
- Выполните проверку применимости расширения: платформа покажет, какие заимствованные объекты и процедуры изменились или исчезли.
- Исправьте расширение на копии: обновите текст в
&ИзменениеИКонтроль, удалите заимствование объекта, которого больше нет. - Только после этого обновляйте рабочую базу.
Ещё одно правило сопровождения — документировать расширение. В комментарии к каждой процедуре указывайте, зачем сделан перехват и по какой заявке. Через два года, когда придёт новый программист, это сэкономит ему дни.
Расширение, БСП или правка основной конфигурации: что выбрать
У доработки типовой 1С четыре пути. Они не взаимоисключающие: в одной базе часто живут и расширение, и внешние обработки.
| Способ | Когда подходит | Цена обновления | Риски |
|---|---|---|---|
| Дополнительные реквизиты и сведения (БСП) | нужно 1–3 поля без логики | нулевая | поле нельзя использовать в сложной логике и проводках |
| Внешние обработки и отчёты через БСП | печатная форма, заполнение табличной части, отчёт | нулевая | нельзя изменить типовой документ и его форму |
| Расширение конфигурации | изменение логики, форм, новых объектов | низкая: проверка применимости | поломка при изменении перехваченного кода в релизе |
| Правка основной конфигурации | глубокая переработка, отраслевое решение | высокая: сравнение и объединение при каждом релизе | конфигурация с изменениями, долгие обновления |
Как выбрать на практике:
- 🟢 нужно поле «для информации» — дополнительный реквизит БСП, без программиста;
- 🟢 нужна печатная форма или обработка заполнения — внешняя обработка, её проще передать и заменить;
- 🟡 нужно изменить поведение типового документа или формы — расширение;
- 🔴 нужно переписать половину механизма учёта — правка основной конфигурации, с пониманием стоимости обновлений.
Сравнение с БСП-механизмом дополнительных обработок часто путают. Дополнительные обработки — это способ подключать внешние файлы без Конфигуратора, а расширение — способ менять саму конфигурацию без снятия с поддержки. В одной задаче они дополняют друг друга: печатную форму удобнее выпустить внешней обработкой, а проверку при проведении — расширением.
Ориентир по стоимости у франчайзи — примерно от 2–5 часов работы программиста на простое расширение (поле в форме, печатная форма) до 20–40 часов и выше на интеграцию или блок проверок. Обновление базы с расширением обычно дешевле, чем обновление конфигурации, снятой с поддержки, потому что не нужно объединять конфигурации.