Разработка и Конфигурация · 10 мин
Как добавить объект со всеми реквизитами в расширение 1С
Как добавить в расширение 1С объект конфигурации со всеми реквизитами: заимствование справочников и документов, контроль реквизитов, типовые ошибки и проверка результата.
Расширение конфигурации в 1С позволяет дорабатывать типовую конфигурацию без снятия её с поддержки. Одна из самых частых задач — добавить в расширение существующий объект (справочник, документ, регистр) вместе со всеми его реквизитами, чтобы затем изменять формы, модули или добавлять собственные реквизиты. Проблема в том, что при заимствовании объекта платформа по умолчанию переносит только минимальный набор свойств, а реквизиты приходится добавлять отдельно.
Ниже разобрано, как работает заимствование объектов, как перенести все реквизиты штатными средствами конфигуратора, в каких случаях реквизиты нужны, а в каких — только мешают, и как проверить, что расширение собрано корректно. Материал ориентирован на платформу 8.3 с расширениями в режиме совместимости современных версий.
Зачем заимствовать объект со всеми реквизитами
Когда вы добавляете объект в расширение, платформа создаёт его «заготовку» — объект существует в расширении, но содержит только те свойства, которые вы явно заимствовали. Если реквизит не заимствован, он недоступен в расширении: его нельзя вывести на изменённую форму, нельзя использовать в запросах и коде модулей расширения, нельзя контролировать его изменение.
Типовые сценарии, когда нужен полный состав реквизитов: доработка формы документа с выводом существующих полей в другом порядке; добавление проверок заполнения в модуле объекта; построение собственных отчётов внутри расширения; добавление нового реквизита, который логически связан с типовыми. Если же вы добавляете только один новый реквизит и не трогаете формы — заимствовать все реквизиты не обязательно, достаточно самого объекта.
Как добавить объект в расширение: базовая процедура
Откройте конфигуратор, загрузите или создайте расширение через меню «Конфигурация → Расширения конфигурации». Убедитесь, что расширение активно (стоит флаг в списке) и основная конфигурация открыта на чтение. Дальше есть два рабочих способа добавить объект.
Первый способ — через дерево конфигурации. Найдите нужный объект (например, справочник «Номенклатура» или документ «РеализацияТоваровУслуг»), щёлкните по нему правой кнопкой мыши и выберите пункт «Добавить в расширение». Объект появится в дереве расширения, но пока без реквизитов — только с заимствованными стандартными свойствами.
Второй способ — через диалог заимствования с выбором состава. В некоторых версиях платформы при добавлении объекта открывается окно, где можно сразу отметить реквизиты, табличные части, формы и макеты, которые нужно перенести. Если такой диалог появился — отметьте все реквизиты сразу, это самый быстрый путь.
- 1Откройте расширение и убедитесь, что оно активно
- 2Найдите объект в дереве основной конфигурации
- 3Щёлкните правой кнопкой — «Добавить в расширение»
- 4Раскройте объект в основной конфигурации до списка реквизитов
- 5Выделите нужные реквизиты (Ctrl+A для всех) и снова выберите «Добавить в расширение»
- 6Аналогично добавьте табличные части и их реквизиты, если они нужны
- 7Обновите конфигурацию базы данных и проверьте работу
Как заимствовать все реквизиты объекта
После добавления самого объекта раскройте его в дереве основной конфигурации и перейдите к ветке «Реквизиты». Выделите все реквизиты — можно кликнуть по первому, затем по последнему с зажатым Shift, или выделить весь список через Ctrl+A. Затем правой кнопкой — «Добавить в расширение». Все выделенные реквизиты появятся в расширении внутри заимствованного объекта.
Табличные части заимствуются отдельно: сначала добавьте саму табличную часть, затем раскройте её и добавьте её реквизиты тем же способом. То же касается стандартных табличных частей документов и дополнительных реквизитов, если они реализованы как объекты метаданных.
Обратите внимание на свойство заимствованных реквизитов — «Изменение». По умолчанию реквизиты добавляются в режиме контроля: расширение «следит», чтобы типовой реквизит не изменился при обновлении конфигурации. Если вы хотите изменить свойства реквизита (например, длину строки), переключите свойство в режим изменения — но делайте это осознанно, потому что такие изменения влияют на всю базу, а не только на расширение.
Что ещё стоит заимствовать вместе с объектом
Кроме реквизитов, для полноценной доработки часто требуются другие элементы объекта. Формы заимствуются только если вы собираетесь их изменять — каждая заимствованная форма увеличивает риск конфликтов при обновлении типовой конфигурации, поэтому берите только нужные. Модули объекта и менеджера заимствуются автоматически вместе с объектом, но добавлять свои процедуры в них нужно через механизм аннотаций «&Вместо», «&Перед», «&После» либо «&ИзменениеИКонтроль».
Если в коде расширения вы обращаетесь к измерениям и ресурсам регистров, к движениям документа — заимствуйте и эти объекты с их реквизитами. Типовой подход: заимствовать ровно то, к чему обращается ваш код и формы, плюс всё, что нужно для контроля целостности при обновлениях.
Как выбрать состав заимствования
Типичные ошибки и ограничения
Самая частая ошибка — обращение в коде расширения к реквизиту, который не заимствован. На этапе проверки модулей конфигуратор выдаст ошибку «Переменная не определена» или «Поле не найдено». Лечится добавлением реквизита в расширение описанным выше способом.
Вторая группа проблем связана с обновлением типовой конфигурации. Если вендор изменил или удалил заимствованный реквизит, расширение перестанет применяться — платформа сообщит о нарушении контроля. Поэтому не заимствуйте «про запас» сотни реквизитов, которые вам не нужны: каждый из них — точка возможного конфликта при обновлении.
Ограничения, о которых стоит помнить: в расширении нельзя изменять тип заимствованного реквизита произвольным образом (только расширять состав типа в допустимых пределах), нельзя удалять типовые реквизиты, нельзя менять некоторые критичные свойства объектов. Также не все объекты и свойства поддерживаются расширениями — состав возможностей зависит от версии платформы и режима совместимости расширения.
Проверка результата и обновление базы
После добавления объекта и реквизитов выполните проверку: в конфигураторе откройте «Конфигурация → Проверка конфигурации», отметьте проверку модулей и расширения. Ошибок быть не должно. Затем обновите конфигурацию базы данных (F7) — платформа применит расширение к базе.
Финальная проверка — в режиме предприятия: откройте изменённую форму объекта, убедитесь, что типовые поля отображаются и заполняются, а ваши доработки работают. Если форма не открывается или поля «пропали», чаще всего причина в том, что нужный реквизит не заимствован либо заимствованная форма конфликтует с обновлённой типовой.
Как проверить результат
Ошибок и предупреждений по расширению нет
Сообщения о неопределённых переменных или отсутствующих реквизитах
Все нужные реквизиты и табличные части видны внутри объекта
Объект есть, но ветка реквизитов пуста
Форма открывается, поля доступны, записывается без ошибок
Ошибка открытия формы или недоступные поля
Расширение применяется без сообщений о нарушении контроля
Платформа отключает расширение из-за изменённых типовых объектов
FAQ
Можно ли добавить в расширение сразу все реквизиты одним действием?
Да. Выделите все реквизиты в ветке объекта основной конфигурации (Ctrl+A) и выберите «Добавить в расширение» — платформа перенесёт весь выделенный состав за одну операцию. Аналогично поступают с реквизитами табличных частей.
Зачем заимствовать реквизит, если я его не меняю?
Заимствование даёт доступ к реквизиту из кода и форм расширения и включает контроль его неизменности. Если реквизит не заимствован, обратиться к нему из расширения нельзя — платформа его «не видит» в контексте расширения.
Что произойдёт с расширением при обновлении типовой конфигурации?
Платформа проверит все заимствованные в режиме контроля элементы. Если вендор изменил или удалил такой реквизит, расширение будет признано неприменимым и отключится до исправления. Поэтому заимствуйте только то, что действительно используете.
Можно ли добавить в расширение собственный новый реквизит объекта?
Да. Заимствуйте объект, затем в дереве расширения добавьте к нему новый реквизит обычным способом. Такой реквизит будет храниться в базе вместе с типовыми данными объекта и доступен везде, где доступен сам объект.
Почему форма объекта в расширении перестаёт работать после обновления?
Заимствованная форма — это копия типовой на момент заимствования. Если вендор сильно изменил форму, ваша версия устаревает. Решение — заново заимствовать форму и перенести свои доработки, либо минимизировать изменения форм, вынося логику в модули.
Что важно запомнить
Объект и его реквизиты заимствуются в расширение отдельно: сначала объект, затем выделенные реквизиты и табличные части через «Добавить в расширение». Берите только то, что используете в коде и формах, не меняйте свойства типовых реквизитов без необходимости и всегда проверяйте расширение после обновления типовой конфигурации.