Доработка типовой 1С без снятия с поддержки: всё о расширениях

· 9 мин

Содержание

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

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

Что такое расширение и чем оно отличается от правки конфигурации

Классическая доработка выглядит так: в Конфигураторе включают возможность изменения (Конфигурация → Поддержка → Настройка поддержки), правят модули и формы прямо в основной конфигурации. После этого каждое обновление типовой превращается в сравнение и объединение: программист вручную решает, чьи изменения оставить.

Расширение устроено иначе. В нём есть два вида объектов:

  • 🧩 Заимствованные — объекты основной конфигурации, которые вы «берёте» в расширение, чтобы изменить. Например, документ «Реализация (акт, накладная)» или его форму.
  • ➕ Собственные — новые объекты, которых в типовой нет: справочники, отчёты, обработки, регистры, роли.

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

ПризнакПравка конфигурацииРасширение
Поддержка поставщикаСнимается или ослабляетсяОстаётся полной
Обновление типовойЧерез сравнение и объединениеОбычное, расширение проверяется отдельно
Где хранитсяВнутри основной конфигурацииОтдельно, в той же информационной базе
Можно ли отключитьТолько откатом кодаОдним флажком
ВозможностиЛюбыеОграничены тем, что разрешает платформа

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

Когда расширение нужно, а когда лучше обойтись без него

Расширение — стандартный путь для большинства доработок типовых БП 3.0, ЗУП 3.1, УТ 11 и ERP. Но не для всех.

Берите расширение, если:

  • ✅ нужно добавить реквизит в документ или справочник и вывести его на форму;
  • ✅ требуется своя печатная форма, отчёт или обработка, тесно связанная с данными типовой;
  • ✅ надо поменять поведение при записи или проведении: дополнительная проверка, автозаполнение поля;
  • ✅ важно обновлять типовую быстро и без программиста на каждое обновление;
  • ✅ доработку нужно уметь быстро выключить, если с ней что-то пошло не так.

Расширение не подойдёт или будет неудобным, если:

  • ❌ доработка переписывает половину конфигурации, по сути создавая другой продукт;
  • ❌ задача решается настройкой: дополнительные реквизиты и сведения, пользовательские поля в отчётах, настройки печати — кода тут не нужно;
  • ❌ нужна разовая операция — например, однажды загрузить данные из таблицы. Проще внешняя обработка;
  • ❌ требуется изменить то, что расширение не умеет менять в вашей версии платформы. Список возможностей растёт от версии к версии, поэтому перед стартом проверьте, что нужный объект можно заимствовать и менять.

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

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

Ниже — путь для платформы 8.3 в актуальных версиях. Монопольный доступ к базе для создания расширения не нужен, но работать лучше на копии.

Шаг 1. Создайте пустое расширение

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

Префикс автоматически подставляется в имена новых объектов и процедур. Задайте осмысленный: Ком_ для коммерческого отдела, ПФ_ для печатных форм. Так через год никто не перепутает, откуда взялся реквизит.

Шаг 2. Позаимствуйте нужные объекты

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

Заимствуйте только то, что действительно меняете. Каждый лишний объект — это лишняя точка, которая может не совпасть с типовой после обновления.

Шаг 3. Внесите изменения

Что можно делать с заимствованным объектом:

  • добавлять новые реквизиты и табличные части (в актуальных версиях платформы);
  • добавлять элементы и команды на заимствованную форму;
  • перехватывать процедуры модулей.

Для перехвата в модуле расширения пишут процедуру с аннотацией. Проще всего вызвать контекстное меню на процедуре в модуле типовой и выбрать «Добавить в расширение» — Конфигуратор сам создаст заготовку.

&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	// Делаем комментарий обязательным для заполнения
	Элементы.Комментарий.АвтоОтметкаНезаполненного = Истина;
КонецПроцедуры

Варианты аннотаций:

АннотацияЧто делаетКогда применять
&ПередВыполняет ваш код до типовогоПодготовка данных, дополнительная проверка
&ПослеВыполняет ваш код после типовогоДонастройка формы, дозаполнение
&ВместоЗаменяет типовой код целикомРедко; внутри можно вызвать типовой через ПродолжитьВызов()
&ИзменениеИКонтрольКопия типовой процедуры с правкамиТочечная вставка в середину алгоритма

&ИзменениеИКонтроль появилась в 8.3.16. Правки внутри помечают инструкциями #Вставка … #КонецВставки и #Удаление … #КонецУдаления. Её главный плюс: если в новом релизе типовая процедура изменится, платформа не применит расширение и сообщит о расхождении. Вы не получите тихо сломанную логику.

Не злоупотребляйте &Вместо: такой перехват полностью отключает типовой код, и исправления фирмы 1С в этой процедуре до вас уже не дойдут.

Шаг 4. Выдайте права на новые объекты

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

Шаг 5. Проверьте и обновите базу

  1. В списке расширений выполните проверку применимости — Конфигуратор покажет конфликты с основной конфигурацией.
  2. Обновите конфигурацию базы данных — командой из меню окна расширения, отдельно от основной конфигурации.
  3. Запустите 1С:Предприятие и проверьте доработку на тестовых документах.

Сохранить расширение в файл можно из окна расширения: Конфигурация → Сохранить конфигурацию в файл. Получится .cfe.

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

Если программист прислал готовый файл .cfe, его можно подключить в пользовательском режиме. Нужны права администратора.

  • 📂 БП 3.0, УТ 11, ЗУП 3.1: Администрирование → Печатные формы, отчеты и обработки → Расширения.
  • 🔧 Универсальный путь в любой конфигурации: Все функции → Стандартные → Управление расширениями конфигурации. Если пункта «Все функции» нет в главном меню, включите его в главном меню: Сервис → Параметры, флажок «Отображать команду Все функции».

Порядок:

  1. Нажмите «Добавить из файла» и выберите .cfe.
  2. Подтвердите предупреждение о безопасности. Подключайте только расширения из надёжного источника: код в нём выполняется с правами пользователя, а без безопасного режима — с полными.
  3. Перезапустите программу. Изменения применяются к новым сеансам; остальным пользователям тоже нужно перезайти.

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

Что делают расширениями на практике

Несколько типичных задач, которые закрываются расширением без снятия типовой с поддержки.

Бухгалтерия (БП 3.0):

  • 🖨 своя печатная форма счёта с логотипом и подписью директора;
  • 🧾 запрет проведения реализации без заполненного договора;
  • 📊 отчёт по дебиторке в разрезе менеджеров, если поле «Менеджер» уже есть в документах.

Торговля (УТ 11):

  • 🏷 дополнительный реквизит «Канал продаж» в заказе клиента с выводом на форму;
  • 📦 автоматическое заполнение склада в документе по подразделению пользователя;
  • 🔗 загрузка заказов от интернет-магазина через собственную обработку внутри расширения.

Кадры и зарплата (ЗУП 3.1):

  • 📄 печатная форма приказа по шаблону компании;
  • ✅ проверка при записи сотрудника, что заполнены поля, нужные вашему кадровику;
  • 📈 отчёт по стажу или по отпускам в нестандартном разрезе.

Многие из этих задач решаются и без кода. В БП и УТ есть «Дополнительные реквизиты и сведения»: новое поле в справочник или документ добавляется в пару кликов. Расширение нужно, когда к полю привязана логика.

Перенос расширения в другую базу и обновление типовой

Как перенести

Есть три рабочих способа:

СпособЧто переноситсяКогда удобно
Файл .cfeТолько расширениеКопия из рабочей базы в тестовую и обратно, передача клиенту
Выгрузка .dtВся база вместе с расширениямиПолный перенос базы на другой сервер
Хранилище конфигурации расширенияРасширение с историей версийГрупповая разработка

Важное условие для .cfe: основная конфигурация в базе-приёмнике должна быть совместима с той, на которой расширение делали. Если в приёмнике другой релиз типовой, сразу выполните проверку применимости.

Как обновлять типовую при подключённых расширениях

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

Перед обновлением типовой с расширениями
Выполнено: 0 / 5

Когда расширение не применилось после обновления, правят само расширение: обновляют заимствование объекта, переносят вставки в новую версию процедуры. Типовую трогать не нужно.

Расширение, внешняя обработка или доработка конфигурации

Три инструмента часто путают. Короткое сравнение:

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

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

Ошибки при работе с расширениями

  • ⚠️ Нет префикса или он невнятный. Собственные объекты без префикса легко спутать с типовыми, а при совпадении имён с объектами будущих релизов возникнет конфликт.
  • ⚠️ Заимствовано «всё на всякий случай». Чем больше заимствований, тем чаще расширение ломается после обновлений. Берите только изменяемые объекты.
  • ⚠️ Правки прямо в рабочей базе. Расширение тестируют на копии. Ошибка в обработчике ПередЗаписью может заблокировать запись документа у всех пользователей сразу.
  • ⚠️ Забытая роль. Собственные объекты без прав видит только полноправный администратор, остальные получают отказ доступа.
  • ⚠️ Несколько расширений перехватывают одну процедуру. Порядок их выполнения зависит от назначения расширений. Если два разработчика независимо меняют одну процедуру, результат трудно предсказать — согласуйте перехваты или объедините их в одно расширение.
  • ⚠️ Безопасный режим выключен без нужды. В нём расширение не может работать с файлами, внешними компонентами и привилегированными операциями. Отключайте его только когда это действительно нужно и вы доверяете коду.

Частые вопросы

Сколько расширений можно подключить к одной базе?
Жёсткого лимита для практических задач нет. Но каждое расширение увеличивает время запуска и усложняет обновления, поэтому родственные доработки лучше держать в одном.
Работают ли расширения в файловой базе?
Да. Расширения работают и в файловом, и в клиент-серверном варианте, а также в веб-клиенте.
Можно ли временно отключить расширение?
Да. В списке расширений снимите флажок активности и перезапустите программу. Данные собственных объектов при этом не удаляются.
Удалятся ли данные, если удалить расширение?
Данные собственных объектов расширения будут потеряны вместе с ним. Перед удалением сделайте резервную копию базы.
Нужно ли снимать типовую конфигурацию с поддержки, чтобы создать расширение?
Нет. В этом и смысл механизма: основная конфигурация остаётся на полной поддержке.