К статье
Практический материал

Разработка и Конфигурация · 12 мин

1С: как добавить объект в расширение конфигурации

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

Расширение конфигурации в 1С — это механизм, который позволяет дорабатывать типовую конфигурацию без снятия её с поддержки. Изменения хранятся отдельно от основной базы, поэтому обновления поставщика устанавливаются без снятия замков и ручного сравнения модулей. Чтобы доработка заработала, нужные объекты (справочники, документы, формы, роли, подсистемы) необходимо сначала добавить в расширение.

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

Ниже разобраны оба сценария пошагово, условия выбора между ними, проверка результата и ошибки, которые чаще всего приводят к тому, что расширение не подключается или доработка «молча» не работает.

Что такое заимствование и когда оно нужно

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

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

Подготовка: создаём или открываем расширение

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

Дважды щёлкните по расширению в списке — откроется отдельное окно с деревом конфигурации расширения. Изначально оно почти пустое: в нём появляются только заимствованные и собственные объекты. Именно в это дерево вы будете добавлять объекты.

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

Как заимствовать существующий объект основной конфигурации

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

Порядок заимствования объекта
  1. 1
    Откройте дерево основной конфигурации и найдите нужный объект, например Справочники → Номенклатура.
  2. 2
    Щёлкните по объекту правой кнопкой мыши и выберите «Добавить в расширение». Если расширений несколько, укажите нужное.
  3. 3
    Объект появится в дереве расширения со значком заимствования. Откройте его свойства или форму и внесите изменения.
  4. 4
    Сохраните расширение (Ctrl+S) и обновите конфигурацию базы данных (F7).
  5. 5
    Запустите режим Предприятия и проверьте, что доработка работает.

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

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

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

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

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

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

Заимствование или новый объект

Заимствование типового объекта

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

Новый объект расширения

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

Ограничения и что нельзя добавить

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

Добавлять свои реквизиты в типовые объекты через расширение можно — это один из самых частых сценариев. Однако такие реквизиты не участвуют в типовых индексах и не попадают в типовые запросы автоматически: их нужно явно учитывать в доработанных запросах и отчётах.

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

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Объект в дереве расширения
Норма

Объект отображается со значком заимствования, свойства доступны для изменения

Тревожный признак

Объекта нет в дереве расширения — заимствование не выполнено

Подключение расширения
Норма

В списке расширений флажок «Используется» установлен, ошибок в колонке состояния нет

Тревожный признак

Расширение не подключается, в сообщении указаны несовпадающие объекты

Работа в режиме Предприятия
Норма

Доработки видны и выполняются, журнал регистрации без ошибок расширения

Тревожный признак

Доработка не проявляется, в журнале регистрации ошибки вызова обработчиков

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

Типичные ошибки
01
Использование аннотации &Вместо без необходимости: после обновления типовой конфигурации новые исправления поставщика перестают выполняться, и доработка конфликтует с типовым кодом.
02
Забытое обновление конфигурации базы данных: расширение сохранено, но структурные изменения не применены, и база работает по-старому.
03
Добавление собственного объекта без подсистемы: объект создан, но пользователи не видят его в интерфейсе.
04
Перенос расширения между базами с разными версиями конфигурации: заимствованные объекты не находятся, расширение отключается.
05
Изменение заимствованной роли без проверки прав: пользователи теряют доступ к объектам после подключения расширения.

Отдельная ошибка — хранение в расширении логики, от которой зависят регламентные операции, без контроля подключения. Если расширение отключат (например, из-за ошибки после обновления), процессы, завязанные на его объекты, остановятся. Для критичных доработок предусмотрите мониторинг состояния расширения.

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

Обновление типовой конфигурации с расширением

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

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

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

Итог

Что важно запомнить

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

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

Почему пункт «Добавить в расширение» неактивен в контекстном меню?

Чаще всего расширение не открыто на изменение или не создано вовсе. Откройте список расширений (Конфигурация → Расширения конфигурации), создайте расширение и откройте его двойным щелчком. Также пункт недоступен для видов объектов, которые платформа не разрешает заимствовать, и если дерево основной конфигурации не открыто.

Можно ли добавить в расширение объект из другого расширения?

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

Что произойдёт с данными, если отключить расширение?

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

Как добавить реквизит в типовой документ через расширение?

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

Почему после обновления конфигурации расширение отключилось?

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

Можно ли через расширение изменить движения документа по регистрам?

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