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

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

Как добавить в расширение 1С весь объект целиком

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

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

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

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

Что значит «добавить весь объект» в расширение

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

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

Какие объекты можно заимствовать, а какие нет

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

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

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

Заимствование типового объекта целиком: пошагово

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

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

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

Порядок действий
  1. 1
    Откройте конфигуратор и создайте или откройте расширение через меню «Конфигурация» → «Расширения конфигурации»
  2. 2
    В дереве основной конфигурации найдите нужный объект
  3. 3
    Щёлкните правой кнопкой мыши и выберите «Добавить в расширение» или перетащите объект в дерево расширения
  4. 4
    Убедитесь, что объект появился в дереве расширения вместе с формами, макетами и модулями
  5. 5
    Внесите нужные изменения и обновите конфигурацию базы данных (F7)
  6. 6
    Проверьте работу объекта в режиме предприятия

Создание нового объекта в расширении

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

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

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

Два подхода к добавлению объекта

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

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

Создание нового объекта

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

Что заимствуется автоматически, а что нужно добавлять вручную

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

Формы и модули заимствуются отдельно. Чтобы доработать форму, её нужно добавить в расширение явно — через контекстное меню формы в дереве объекта. То же касается модулей: обработчики модулей объекта и менеджера расширяются через аннотации «Вместо», «Перед», «После», а не прямым редактированием.

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

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

Ограничения и риски при работе с заимствованными объектами

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

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

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

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

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

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

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

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

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

Объект отображается со всеми реквизитами, формами и модулями

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

Объект добавлен частично, формы или модули отсутствуют

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

Изменения видны, форма открывается без ошибок

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

Ошибки при открытии объекта или форма открывается типовая

Проверка расширения после обновления релиза
Норма

Проверка проходит без ошибок

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

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

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

Можно ли добавить в расширение объект, если конфигурация на полной поддержке?

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

Почему пункт «Добавить в расширение» неактивен для нужного объекта?

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

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

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

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

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

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

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

Нужно ли заново добавлять объект после обновления конфигурации?

Нет, заимствование сохраняется. Но после обновления обязательно запустите проверку расширения: если типовой объект изменился (переименованы реквизиты, удалены методы), расширение потребует доработки.

Итог

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

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