Новые и заимствованные объекты в расширении конфигурации: порядок работы в Конфигураторе
Содержание
Чтобы добавить объект в расширение 1С, откройте Конфигуратор, затем Конфигурация → Расширения конфигурации, выберите расширение и откройте его дерево. Существующий объект типовой конфигурации добавляют через контекстное меню в дереве основной конфигурации: Добавить в расширение. Новый собственный объект создают прямо в дереве расширения кнопкой добавления, как в обычной конфигурации.
Частое заблуждение: «добавить объект в расширение» значит скопировать его целиком. Это не так. Заимствованный объект в расширении — лишь ссылка на оригинал плюс ваши доработки поверх. Типовой код и структура остаются в основной конфигурации, поэтому её можно обновлять, не снимая с поддержки. Механизм расширений появился в платформе 8.3.6 и с тех пор сильно вырос: сейчас в расширении можно держать собственные справочники, документы, регистры, отчёты и обработки, а в заимствованные объекты добавлять реквизиты и табличные части.
Что проверить перед началом работы с расширением
Расширения правят в Конфигураторе. Пользователь, под которым вы входите, должен иметь административные права в информационной базе. Без них список расширений будет недоступен.
Перед стартом пройдитесь по короткому списку:
- 🔑 Права. Учётная запись с ролью полных прав или администратора.
- 🧩 Версия платформы. Чем новее платформа, тем больше типов объектов можно заимствовать и создавать. Посмотреть номер можно в Конфигураторе через
Справка → О программе. - 📂 Открытая основная конфигурация. Команда
Добавить в расширениеработает из дерева основной конфигурации. Если оно закрыто, откройте его:Конфигурация → Открыть конфигурацию. - 🧪 Копия базы для экспериментов. Расширение, меняющее структуру данных, при применении создаёт в базе новые таблицы и поля. Отрабатывайте его на копии.
Если доработка добавляет реквизиты, справочники или регистры, сделайте резервную копию рабочей базы до первого применения расширения. Откат после того, как пользователи начали заполнять новые поля, означает потерю этих данных.
Монопольный режим для работы с расширением в целом не нужен: при применении изменений, затрагивающих структуру данных, платформа сама сообщит, если ей мешают активные сеансы.
Как добавить новый объект метаданных в расширение
Работа идёт в два этапа: создать (или открыть) расширение, затем наполнить его объектами.
Шаг 1. Создать расширение
- Откройте
Конфигурация → Расширения конфигурации. - Нажмите кнопку добавления. Платформа создаст расширение с именем вида
Расширение1. - Откройте свойства расширения и задайте понятное Имя, Синоним и Префикс, например
ок_. - Двойным щелчком по строке откройте дерево расширения. Оно выглядит как обычное дерево конфигурации, но объекты в нём пока отсутствуют.
💡 Префикс задавайте сразу. Платформа подставляет его в имена новых объектов и обработчиков. Так ваши доработки не столкнутся по имени с объектами, которые появятся в типовой конфигурации после очередного обновления.
Шаг 2. Создать собственный объект
Собственный объект — это то, чего в типовой конфигурации нет совсем: новый справочник, документ, отчёт, обработка, регистр.
- В дереве расширения выделите нужную ветку, например
Справочники. - Нажмите
Добавить(кнопка с плюсом или клавишаIns). - Задайте имя. Префикс расширения подставится автоматически.
- Заполните реквизиты, табличные части, формы так же, как в основной конфигурации.
Шаг 3. Выдать права на новый объект
Этот шаг пропускают чаще всего. Объект создан, расширение применено, а пользователи его не видят: у них нет прав.
Права на собственные объекты выдают через роли:
- В дереве основной конфигурации найдите роль, которую получают пользователи (например, ту, что даёт базовые или полные права).
- Через контекстное меню выполните
Добавить в расширение. - Откройте заимствованную роль в расширении и отметьте права на свой объект: чтение, добавление, изменение, просмотр.
Другой путь — создать в расширении собственную роль и назначить её пользователям или включить в профиль групп доступа. Для типовых конфигураций на БСП заимствование существующей роли обычно проще: новых профилей настраивать не придётся.
Заимствование существующих объектов: формы, модули, реквизиты
Когда нужно поменять поведение типового документа или справочника, объект не создают заново, а заимствуют.
Как заимствовать объект
- В дереве основной конфигурации найдите объект, например документ
РеализацияТоваровУслуг. - Щёлкните по нему правой кнопкой и выберите
Добавить в расширение. - В открывшемся окне выберите расширение, если их несколько.
Объект появится в дереве расширения с особой пометкой: это заимствование. Внутри он пустой. Реквизиты, формы и модули оригинала не переносятся, пока вы сами их не заберёте.
Как добавить форму или модуль к заимствованному объекту
Форму заимствуют тем же способом: раскройте объект в основной конфигурации, найдите нужную форму и выполните Добавить в расширение. После этого форму можно открыть в редакторе расширения: добавить поля, кнопки, команды, группы.
Обработчики событий формы в расширении задают с типом вызова. В палитре свойств элемента или формы у события выбирается, когда выполнять ваш код: перед типовым обработчиком, после него или вместо. Конфигуратор создаст процедуру с префиксом в имени.
Для модуля объекта и общих модулей используют аннотации. Пример: дописать проверку перед записью документа, не трогая типовой код.
&После("ПередЗаписью")
Процедура ок_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Не ЗначениеЗаполнено(Комментарий) Тогда
ОбщегоНазначения.СообщитьПользователю("Заполните комментарий к документу.", , "Комментарий", "Объект", Отказ);
КонецЕсли;
КонецПроцедуры
Чтобы такой обработчик работал, сначала заимствуйте сам документ, затем откройте его модуль объекта в расширении и напишите процедуру. ОбщегоНазначения.СообщитьПользователю есть в конфигурациях на БСП; в самописной конфигурации используйте объект СообщениеПользователю.
Какие аннотации бывают:
| Аннотация | Что делает | Когда брать |
|---|---|---|
&Перед("Имя") | Ваш код выполняется до типового | Подготовка данных, дополнительные проверки |
&После("Имя") | Ваш код выполняется после типового | Дозаполнение, дополнительные движения |
&Вместо("Имя") | Типовой код не выполняется, пока вы не вызовете ПродолжитьВызов() | Полная замена логики; рискованно при обновлениях |
&ИзменениеИКонтроль("Имя") | Копия типовой процедуры с вашими вставками | Точечная правка внутри метода; при изменении оригинала расширение сообщит о расхождении |
&ИзменениеИКонтроль удобнее &Вместо: если разработчики конфигурации поменяют исходный метод, платформа не применит расширение молча, а укажет на расхождение. С &Вместо вы можете годами работать со старой логикой, не заметив, что типовую исправили.
Как добавить реквизит в заимствованный объект
Заимствуйте объект, раскройте его в дереве расширения и добавьте реквизит или табличную часть как обычно. При применении расширения платформа создаст в базе дополнительные поля. Типовая структура при этом не меняется, и обновление конфигурации проходит штатно.
Режим совместимости, назначение и другие свойства расширения
Свойства открываются из списка Конфигурация → Расширения конфигурации или из корня дерева расширения. От них зависит, загрузится ли расширение в другую базу и в каком порядке применится.
| Свойство | На что влияет | Что выставить |
|---|---|---|
| Режим совместимости | Какие возможности платформы доступны расширению | Как у основной конфигурации; выше версии платформы рабочей базы не ставить |
| Назначение | Порядок применения: сначала «Исправление», затем «Адаптация», затем «Дополнение» | «Исправление» — для правки ошибок типовой, «Дополнение» — для новых функций |
| Безопасный режим | Ограничивает код расширения: нет доступа к файлам, внешним компонентам и т. п. | Включён для расширений из чужих рук; отключать, только если коду нужен такой доступ и вы ему доверяете |
| Защита от опасных действий | Предупреждения пользователю при потенциально опасных операциях | Оставить включённой |
| Использовать в распределённой ИБ | Передаётся ли расширение по узлам РИБ | Включить, если база работает в РИБ и доработка нужна на всех узлах |
| Префикс | Подставляется в имена новых объектов и методов | Короткий и уникальный, например ок_ |
Режим совместимости — частая причина проблем при переносе. Расширение, собранное с режимом совместимости новее, чем умеет платформа рабочей базы, туда просто не загрузится. Перед выгрузкой сверьте номер платформы на сервере: он должен быть не ниже номера, указанного в режиме совместимости расширения.
Почему объект не добавляется или расширение не применяется
Ниже — симптомы, которые встречаются на практике, и что с ними делать.
Отдельный случай — имя объекта совпало с объектом, который появился в типовой после обновления. Поэтому префикс и нужен с первого дня: переименовывать объект с данными потом сложнее.
Как проверить и отладить объект в расширении
После любых правок расширение надо применить к базе. В Конфигураторе, когда активно окно дерева расширения, выполните Конфигурация → Обновить конфигурацию базы данных (F7). Если расширение меняет структуру данных, платформа покажет список изменений — прочитайте его, прежде чем принять.
Порядок проверки:
- Запустите отладку клавишей
F5прямо из Конфигуратора. Расширение подключится автоматически. - Поставьте точку останова (
F9) в процедуре расширения. Отладчик останавливается в модулях расширения так же, как в модулях основной конфигурации. - Откройте форму, документ или отчёт, который дорабатывали, и выполните сценарий целиком: создание, запись, проведение, печать.
- Если обработчик не срабатывает, проверьте имя в аннотации. В
&После("ПередЗаписью")должно стоять точное имя типового метода. - Проверьте работу под обычным пользователем, а не под администратором. Так видно, хватает ли прав.
В режиме 1С:Предприятие список расширений в типовых конфигурациях на БСП находится в разделе Администрирование → Печатные формы, отчеты и обработки → Расширения. Там видно, какие расширения подключены и активны, и там же их можно временно отключить, сняв флажок активности. Если раздела нет, откройте Все функции → Стандартные → Управление расширениями конфигурации; меню «Все функции» включается в параметрах программы.
💡 Если после включения расширения что-то сломалось в типовом поведении, первым делом отключите его в этом списке и проверьте снова. Так вы сразу поймёте, виновато расширение или основная конфигурация.
Сохранение и перенос расширения в рабочую базу
Готовое расширение хранят и переносят файлом с расширением .cfe.
Выгрузка из Конфигуратора:
- Откройте дерево расширения.
- В меню
Конфигурациявыберите команду сохранения расширения в файл. - Укажите путь, например
D:\Расширения\ок_ПроверкаКомментария.cfe.
Загрузка в рабочую базу. Есть два пути:
- 🖥 Через Конфигуратор. В списке расширений создайте новое расширение (или выберите существующее с тем же именем), загрузите в него файл
.cfeи отдельно выполнитеОбновить конфигурацию базы данных. Загрузка файла и обновление базы — два разных шага: без второго расширение не заработает. - 👤 Через пользовательский режим. В списке расширений нажмите добавление из файла и выберите
.cfe. Пользователю нужны административные права. В клиент-серверной базе применение с изменением структуры данных пройдёт при следующем входе пользователей.
В рабочую базу загружайте расширение вне рабочего времени, если оно добавляет реквизиты или справочники. Пользователи, открывшие базу до загрузки, увидят изменения только после перезапуска сеанса.
Храните .cfe под версиями: ок_ПроверкаКомментария_1.2.cfe. Пропишите номер версии и в свойствах расширения. Когда через год вы откроете список расширений в базе клиента, будет понятно, какая сборка там стоит.