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

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

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

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

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

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

Зачем заимствовать объект со всеми реквизитами

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

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

Как добавить объект в расширение: базовая процедура

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

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

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

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

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

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

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

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

Что ещё стоит заимствовать вместе с объектом

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

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

Маршрут решения

Как выбрать состав заимствования

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

Типичные ошибки и ограничения

Самая частая ошибка — обращение в коде расширения к реквизиту, который не заимствован. На этапе проверки модулей конфигуратор выдаст ошибку «Переменная не определена» или «Поле не найдено». Лечится добавлением реквизита в расширение описанным выше способом.

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

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

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

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

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

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

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

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

Проверка конфигурации в конфигураторе
Норма

Ошибок и предупреждений по расширению нет

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

Сообщения о неопределённых переменных или отсутствующих реквизитах

Дерево объекта в расширении
Норма

Все нужные реквизиты и табличные части видны внутри объекта

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

Объект есть, но ветка реквизитов пуста

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

Форма открывается, поля доступны, записывается без ошибок

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

Ошибка открытия формы или недоступные поля

Применимость расширения после обновления типовой
Норма

Расширение применяется без сообщений о нарушении контроля

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

Платформа отключает расширение из-за изменённых типовых объектов

FAQ

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

Да. Выделите все реквизиты в ветке объекта основной конфигурации (Ctrl+A) и выберите «Добавить в расширение» — платформа перенесёт весь выделенный состав за одну операцию. Аналогично поступают с реквизитами табличных частей.

Зачем заимствовать реквизит, если я его не меняю?

Заимствование даёт доступ к реквизиту из кода и форм расширения и включает контроль его неизменности. Если реквизит не заимствован, обратиться к нему из расширения нельзя — платформа его «не видит» в контексте расширения.

Что произойдёт с расширением при обновлении типовой конфигурации?

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

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

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

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

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

Итог

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

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