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

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

Как удалить стандартный реквизит в 1С

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

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

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

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

Как определить, какой реквизит вы хотите удалить

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

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

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

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

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

Способ 1. Скрыть реквизит из формы без изменения конфигурации

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

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

Порядок действий
  1. 1
    Откройте форму объекта в режиме 1С:Предприятие
  2. 2
    В меню «Ещё» выберите «Изменить форму»
  3. 3
    Снимите флажок с реквизита, который нужно скрыть
  4. 4
    Сохраните настройку и проверьте форму
  5. 5
    При необходимости попросите администратора распространить настройку на других пользователей

Способ 2. Убрать реквизит через расширение конфигурации

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

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

Способ 3. Удалить реквизит типовой конфигурации после снятия с поддержки

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

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

Перед удалением обязательно выполните поиск всех ссылок на реквизит: в конфигураторе выделите реквизит и вызовите «Поиск ссылок в объектах метаданных» (или воспользуйтесь глобальным поиском по имени реквизита). Проверьте модули объектов, формы, общие модули, запросы и печатные макеты. Только если ссылок нет или все они устранены, удаление относительно безопасно.

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

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

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

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

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

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

Открытие формы объекта
Норма

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

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

Ошибка при открытии или поле по-прежнему видно

Проведение документа
Норма

Документ проводится без сообщений об ошибках

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

Ошибка «Поле объекта не обнаружено»

Обмен данными
Норма

Синхронизация завершается успешно

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

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

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

Обновление проходит штатно

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

Удалённый реквизит конфликтует при объединении

Сравнение подходов: что выбрать в вашей ситуации

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

Сравнение вариантов

Настройка формы пользователем

Подходит для разового скрытия поля; не требует прав разработчика, но действует локально и не влияет на отчёты

Расширение конфигурации

Централизованное скрытие для всех пользователей; сохраняет автоматическое обновление, но требует проверки после каждого релиза

Снятие с поддержки и удаление

Полное удаление реквизита и данных; усложняет обновления и требует проверки всех ссылок в коде

Изменение свойств стандартного реквизита

Для полей платформы (Код, Наименование): можно уменьшить длину или отключить использование, но не удалить

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

Можно ли удалить реквизит «Код» у справочника?

Нет, «Код» — стандартный реквизит платформы, и удалить его нельзя. Можно установить длину кода равной нулю в свойствах справочника, тогда поле перестанет использоваться и отображаться, но в структуре таблицы оно останется. Учтите, что для некоторых механизмов (например, обменов) наличие кода может быть обязательным.

Почему кнопка «Удалить» неактивна для реквизита в конфигураторе?

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

Что будет, если удалить реквизит, в котором есть данные?

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

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

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

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

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

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

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

Итог

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

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