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

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

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

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

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

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

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

Что такое стандартные реквизиты и почему с ними сложности

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

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

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

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

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

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

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

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

Как вывести стандартный реквизит на форму через расширение

Самая частая практическая задача — показать на форме поле, которое типовая конфигурация не выводит. Например, вывести «Код» элемента справочника на форму списка или показать «Дату» документа в дополнительной колонке. Это делается через заимствование формы.

Заимствуйте нужную форму объекта в расширение (правой кнопкой по форме — «Добавить в расширение»). В редакторе формы откройте список доступных реквизитов объекта: стандартные реквизиты отображаются там наряду с обычными. Перетащите нужный реквизит в дерево элементов формы в нужное место.

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

Как изменить поведение стандартного реквизита без его изменения

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

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

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

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

Когда вместо стандартного реквизита нужен собственный

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

Собственный реквизит добавляется так: в заимствованном объекте расширения откройте ветку «Реквизиты», вызовите контекстное меню и выберите «Добавить» → «Реквизит». Задайте имя (рекомендуется с префиксом расширения, например «Расш1_ПолноеНаименование»), тип, длину и при необходимости проверку заполнения.

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

Три подхода к доработке полей

Заимствование и вывод на форму

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

Собственный реквизит в расширении

Подходит, когда нужно новое поле с собственной логикой. Требует обновления конфигурации БД и аккуратного именования с префиксом.

Дополнительные реквизиты (БСП)

Подходит для простых полей без программной логики. Настраивается пользователем, но ограничен в размещении и проверках.

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

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

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

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

Ограничения расширений, о которых стоит помнить

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

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

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

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

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

Форма объекта открывается в режиме предприятия
Норма

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

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

Ошибка при открытии формы или реквизит отсутствует — проверьте заимствование и свойства объекта

Запись и проведение объекта
Норма

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

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

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

Обновление конфигурации БД
Норма

Обновление проходит без предупреждений о конфликтах

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

Конфликты имён или структуры — проверьте префиксы реквизитов и состав заимствования

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

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

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

Почему заимствованный реквизит не виден на форме после добавления?

Заимствование реквизита само по себе не выводит его на форму. Нужно дополнительно заимствовать форму и перетащить реквизит в дерево элементов, либо добавить его программно в обработчике «ПриСозданииНаСервере».

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

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

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

Да, через заимствование модуля объекта документа и переопределение обработчика «ПриУстановкеНовогоНомера». Сам стандартный реквизит «Номер» при этом не изменяется — меняется только алгоритм его заполнения.

Что лучше: собственный реквизит в расширении или дополнительный реквизит БСП?

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

Итог

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

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