Новые и заимствованные объекты в расширении конфигурации: порядок работы в Конфигураторе

· 10 мин

Содержание

Чтобы добавить объект в расширение 1С, откройте Конфигуратор, затем Конфигурация → Расширения конфигурации, выберите расширение и откройте его дерево. Существующий объект типовой конфигурации добавляют через контекстное меню в дереве основной конфигурации: Добавить в расширение. Новый собственный объект создают прямо в дереве расширения кнопкой добавления, как в обычной конфигурации.

Частое заблуждение: «добавить объект в расширение» значит скопировать его целиком. Это не так. Заимствованный объект в расширении — лишь ссылка на оригинал плюс ваши доработки поверх. Типовой код и структура остаются в основной конфигурации, поэтому её можно обновлять, не снимая с поддержки. Механизм расширений появился в платформе 8.3.6 и с тех пор сильно вырос: сейчас в расширении можно держать собственные справочники, документы, регистры, отчёты и обработки, а в заимствованные объекты добавлять реквизиты и табличные части.

Что проверить перед началом работы с расширением

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

Перед стартом пройдитесь по короткому списку:

  • 🔑 Права. Учётная запись с ролью полных прав или администратора.
  • 🧩 Версия платформы. Чем новее платформа, тем больше типов объектов можно заимствовать и создавать. Посмотреть номер можно в Конфигураторе через Справка → О программе.
  • 📂 Открытая основная конфигурация. Команда Добавить в расширение работает из дерева основной конфигурации. Если оно закрыто, откройте его: Конфигурация → Открыть конфигурацию.
  • 🧪 Копия базы для экспериментов. Расширение, меняющее структуру данных, при применении создаёт в базе новые таблицы и поля. Отрабатывайте его на копии.

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

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

Как добавить новый объект метаданных в расширение

Работа идёт в два этапа: создать (или открыть) расширение, затем наполнить его объектами.

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

  1. Откройте Конфигурация → Расширения конфигурации.
  2. Нажмите кнопку добавления. Платформа создаст расширение с именем вида Расширение1.
  3. Откройте свойства расширения и задайте понятное Имя, Синоним и Префикс, например ок_.
  4. Двойным щелчком по строке откройте дерево расширения. Оно выглядит как обычное дерево конфигурации, но объекты в нём пока отсутствуют.

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

Шаг 2. Создать собственный объект

Собственный объект — это то, чего в типовой конфигурации нет совсем: новый справочник, документ, отчёт, обработка, регистр.

  1. В дереве расширения выделите нужную ветку, например Справочники.
  2. Нажмите Добавить (кнопка с плюсом или клавиша Ins).
  3. Задайте имя. Префикс расширения подставится автоматически.
  4. Заполните реквизиты, табличные части, формы так же, как в основной конфигурации.

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

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

Права на собственные объекты выдают через роли:

  1. В дереве основной конфигурации найдите роль, которую получают пользователи (например, ту, что даёт базовые или полные права).
  2. Через контекстное меню выполните Добавить в расширение.
  3. Откройте заимствованную роль в расширении и отметьте права на свой объект: чтение, добавление, изменение, просмотр.

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

Заимствование существующих объектов: формы, модули, реквизиты

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

Как заимствовать объект

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

Объект появится в дереве расширения с особой пометкой: это заимствование. Внутри он пустой. Реквизиты, формы и модули оригинала не переносятся, пока вы сами их не заберёте.

Как добавить форму или модуль к заимствованному объекту

Форму заимствуют тем же способом: раскройте объект в основной конфигурации, найдите нужную форму и выполните Добавить в расширение. После этого форму можно открыть в редакторе расширения: добавить поля, кнопки, команды, группы.

Обработчики событий формы в расширении задают с типом вызова. В палитре свойств элемента или формы у события выбирается, когда выполнять ваш код: перед типовым обработчиком, после него или вместо. Конфигуратор создаст процедуру с префиксом в имени.

Для модуля объекта и общих модулей используют аннотации. Пример: дописать проверку перед записью документа, не трогая типовой код.

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

    Если Не ЗначениеЗаполнено(Комментарий) Тогда
        ОбщегоНазначения.СообщитьПользователю("Заполните комментарий к документу.", , "Комментарий", "Объект", Отказ);
    КонецЕсли;

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

Чтобы такой обработчик работал, сначала заимствуйте сам документ, затем откройте его модуль объекта в расширении и напишите процедуру. ОбщегоНазначения.СообщитьПользователю есть в конфигурациях на БСП; в самописной конфигурации используйте объект СообщениеПользователю.

Какие аннотации бывают:

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

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

Как добавить реквизит в заимствованный объект

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

Режим совместимости, назначение и другие свойства расширения

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

СвойствоНа что влияетЧто выставить
Режим совместимостиКакие возможности платформы доступны расширениюКак у основной конфигурации; выше версии платформы рабочей базы не ставить
НазначениеПорядок применения: сначала «Исправление», затем «Адаптация», затем «Дополнение»«Исправление» — для правки ошибок типовой, «Дополнение» — для новых функций
Безопасный режимОграничивает код расширения: нет доступа к файлам, внешним компонентам и т. п.Включён для расширений из чужих рук; отключать, только если коду нужен такой доступ и вы ему доверяете
Защита от опасных действийПредупреждения пользователю при потенциально опасных операцияхОставить включённой
Использовать в распределённой ИБПередаётся ли расширение по узлам РИБВключить, если база работает в РИБ и доработка нужна на всех узлах
ПрефиксПодставляется в имена новых объектов и методовКороткий и уникальный, например ок_

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

Почему объект не добавляется или расширение не применяется

Ниже — симптомы, которые встречаются на практике, и что с ними делать.

Диагностика: выберите симптом

Отдельный случай — имя объекта совпало с объектом, который появился в типовой после обновления. Поэтому префикс и нужен с первого дня: переименовывать объект с данными потом сложнее.

Как проверить и отладить объект в расширении

После любых правок расширение надо применить к базе. В Конфигураторе, когда активно окно дерева расширения, выполните Конфигурация → Обновить конфигурацию базы данных (F7). Если расширение меняет структуру данных, платформа покажет список изменений — прочитайте его, прежде чем принять.

Порядок проверки:

  1. Запустите отладку клавишей F5 прямо из Конфигуратора. Расширение подключится автоматически.
  2. Поставьте точку останова (F9) в процедуре расширения. Отладчик останавливается в модулях расширения так же, как в модулях основной конфигурации.
  3. Откройте форму, документ или отчёт, который дорабатывали, и выполните сценарий целиком: создание, запись, проведение, печать.
  4. Если обработчик не срабатывает, проверьте имя в аннотации. В &После("ПередЗаписью") должно стоять точное имя типового метода.
  5. Проверьте работу под обычным пользователем, а не под администратором. Так видно, хватает ли прав.

В режиме 1С:Предприятие список расширений в типовых конфигурациях на БСП находится в разделе Администрирование → Печатные формы, отчеты и обработки → Расширения. Там видно, какие расширения подключены и активны, и там же их можно временно отключить, сняв флажок активности. Если раздела нет, откройте Все функции → Стандартные → Управление расширениями конфигурации; меню «Все функции» включается в параметрах программы.

💡 Если после включения расширения что-то сломалось в типовом поведении, первым делом отключите его в этом списке и проверьте снова. Так вы сразу поймёте, виновато расширение или основная конфигурация.

Сохранение и перенос расширения в рабочую базу

Готовое расширение хранят и переносят файлом с расширением .cfe.

Выгрузка из Конфигуратора:

  1. Откройте дерево расширения.
  2. В меню Конфигурация выберите команду сохранения расширения в файл.
  3. Укажите путь, например D:\Расширения\ок_ПроверкаКомментария.cfe.

Загрузка в рабочую базу. Есть два пути:

  • 🖥 Через Конфигуратор. В списке расширений создайте новое расширение (или выберите существующее с тем же именем), загрузите в него файл .cfe и отдельно выполните Обновить конфигурацию базы данных. Загрузка файла и обновление базы — два разных шага: без второго расширение не заработает.
  • 👤 Через пользовательский режим. В списке расширений нажмите добавление из файла и выберите .cfe. Пользователю нужны административные права. В клиент-серверной базе применение с изменением структуры данных пройдёт при следующем входе пользователей.

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

Храните .cfe под версиями: ок_ПроверкаКомментария_1.2.cfe. Пропишите номер версии и в свойствах расширения. Когда через год вы откроете список расширений в базе клиента, будет понятно, какая сборка там стоит.

Перед загрузкой расширения в рабочую базу
Выполнено: 0 / 6

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

Можно ли добавить объект в расширение без снятия конфигурации с поддержки?
Да, в этом и смысл расширений. Основная конфигурация остаётся на поддержке и обновляется штатно, а доработки живут отдельно.
Удалится ли информация, если отключить расширение с новыми реквизитами?
Если просто снять флажок активности, данные остаются в базе, но становятся недоступны до повторного включения. Если удалить расширение, данные его собственных объектов и реквизитов будут удалены.
Сколько расширений можно подключить к одной базе?
Жёсткого лимита на практике не встречается. Но каждое расширение увеличивает время запуска сеанса, поэтому мелкие доработки одного назначения разумно держать в одном расширении.
Можно ли заимствовать объект из одного расширения в другое?
Нет, заимствуют только объекты основной конфигурации. Если два расширения правят один объект, каждое заимствует его у основной конфигурации само.
Что делать с расширением после обновления типовой конфигурации?
Откройте его в Конфигураторе и проверьте применимость. Если платформа сообщает о расхождениях, сверьте заимствованные объекты и методы с аннотацией &ИзменениеИКонтроль с новой версией.