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