Разработка и Конфигурация · 10 мин
Как удалить реквизит в 1С
Как удалить реквизит в 1С: через конфигуратор, обработкой и в пользовательском режиме. Поиск ссылок, проверка зависимостей и типичные ошибки при удалении.
Реквизит в 1С — это поле объекта конфигурации (справочника, документа, регистра), в котором хранятся данные: наименование контрагента, сумма документа, дата отгрузки. Удалить реквизит можно только в конфигураторе, если он добавлен в типовую или доработанную конфигурацию, либо через механизм дополнительных реквизитов, если он создан пользователем без изменения конфигурации. Способ зависит от того, как именно реквизит появился в базе.
Главная сложность — не само удаление, а зависимости. Реквизит может использоваться в запросах, отчётах, печатных формах, обменах данными, условном оформлении форм и коде модулей. Если удалить поле, не проверив ссылки на него, конфигурация перестанет обновляться, а часть функций выдаст ошибки. Поэтому безопасная процедура всегда начинается с поиска зависимостей и резервной копии.
В этой статье разобраны три сценария: удаление дополнительного реквизита в пользовательском режиме, удаление реквизита объекта в конфигураторе и удаление значения реквизита в данных (когда нужно очистить поле у элементов, а не убрать само поле). Для каждого случая приведены шаги, проверки и ограничения.
Определите, какой реквизит нужно удалить
Перед любыми действиями выясните происхождение реквизита, потому что от этого зависит инструмент удаления. Есть три типовых случая: реквизит встроен в конфигурацию разработчиком (типовой или добавленный доработкой), реквизит создан пользователем через механизм «Дополнительные реквизиты и сведения», либо требуется не удалить поле, а очистить его значения у элементов справочника или документов.
Быстрая проверка: откройте карточку объекта в пользовательском режиме. Если поле отображается в группе «Дополнительные реквизиты» — это пользовательский реквизит, он удаляется без конфигуратора. Если поле находится в основной части формы и недоступно для отключения в настройках — скорее всего, это реквизит конфигурации, и работать придётся в конфигураторе с правами на изменение структуры.
Удаляется в разделе Администрирование без конфигуратора
Нужен конфигуратор и поиск зависимостей
Сначала решите, нужна ли архивация значений
Удаление дополнительного реквизита без конфигуратора
Дополнительные реквизиты — штатный механизм типовых конфигураций (Управление торговлей, ERP, Бухгалтерия предприятия и др.), позволяющий добавлять поля без изменения конфигурации. Удаляются они там же, где создавались. Потребуются права администратора или роль с доступом к настройкам дополнительных реквизитов.
- 1Откройте «Администрирование — Общие настройки» и включите флаг «Дополнительные реквизиты и сведения», если он снят
- 2Перейдите по ссылке «Дополнительные реквизиты» и выберите нужный набор (например, «Контрагенты» или «Номенклатура»)
- 3Найдите реквизит в списке и откройте его карточку
- 4Нажмите «Ещё — Пометить на удаление» (или удалите через команду удаления)
- 5Выполните «Удаление помеченных объектов» в разделе Администрирование, если реквизит помечен, но не удалён физически
- 6Откройте карточку объекта и убедитесь, что поле исчезло из формы
Обратите внимание: значения, которые были заполнены в этом реквизите у элементов справочника, удаляются вместе с реквизитом без возможности восстановления. Если данные могут понадобиться, заранее выгрузите их — например, через универсальный отчёт или групповую обработку с выводом значений в табличный документ и сохранением в Excel.
Удаление реквизита объекта в конфигураторе
Реквизит, добавленный в структуру справочника, документа или регистра, удаляется только в конфигураторе. Обязательное условие — конфигурация не должна находиться на полной поддержке без возможности изменения, иначе сначала потребуется включить возможность изменений, что влияет на дальнейшее обновление типовых релизов.
Порядок работы следующий. Откройте конфигуратор, разблокируйте конфигурацию от поставщика при необходимости (Конфигурация — Поддержка — Настройка поддержки). Найдите объект в дереве конфигурации, раскройте ветку «Реквизиты», выделите нужный и удалите его клавишей Delete или через контекстное меню. Затем обновите конфигурацию базы данных (F7 или Конфигурация — Обновить конфигурацию базы данных).
При обновлении платформа покажет окно реструктуризации со списком изменений. Если реквизит содержал данные, система предупредит об удалении колонки. Подтверждайте только после того, как убедились, что зависимости очищены, — иначе обновление завершится ошибкой проверки или конфигурация окажется в нерабочем состоянии.
Поиск зависимостей перед удалением
Ключевой этап, который нельзя пропускать. В конфигураторе выделите реквизит в дереве объекта, нажмите правую кнопку мыши и выберите «Поиск ссылок на объект» (или аналогичный пункт в меню «Правка»). Платформа покажет все места конфигурации, где реквизит упоминается: модули, формы, запросы, макеты, отчёты, подписки на события, критерии отбора.
Каждую найденную ссылку нужно обработать: удалить или закомментировать код, убрать поле из запроса, удалить элемент формы, скорректировать настройки отчёта. Особое внимание — динамическим обращениям через строки, например Объект["МойРеквизит"] или конструкции с Вычислить и Выполнить: их поиск ссылок не находит. Дополнительно выполните глобальный поиск по имени реквизита (Правка — Глобальный поиск) по всей конфигурации.
Очистка значений реквизита без удаления поля
Частая задача: само поле нужно оставить, но очистить заполненные значения у всех элементов — например, обнулить устаревший признак у номенклатуры. Это делается обработкой в пользовательском режиме или программно. В типовых конфигурациях есть «Групповое изменение реквизитов» (Администрирование — Обслуживание — Корректировка данных): выберите вид объектов, отметьте нужные элементы отбором, укажите реквизит и установите пустое значение.
Программный вариант для разработчика — перебор объектов запросом и запись с очищенным реквизитом:
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ НЕ МойРеквизит = &Пусто");
Запрос.УстановитьПараметр("Пусто", Неопределено);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.МойРеквизит = Неопределено;
Объект.Записать();
КонецЦикла;
При больших объёмах записывайте объекты порциями в транзакции и выполняйте обработку в монопольном или малонагруженном режиме, чтобы избежать блокировок. Перед массовой записью проверьте, не срабатывают ли подписки на события и регламентные обмены — запись тысяч объектов может спровоцировать выгрузку больших пакетов данных.
Типичные ошибки и ограничения
Отдельно про типовые реквизиты: удалять их из типовой конфигурации практически никогда не стоит. Даже если поле не используется, его удаление создаёт доработку, которая будет конфликтовать при каждом обновлении. Корректная альтернатива — скрыть поле на форме через настройки формы или программно, либо закрыть к нему доступ правами и функциональными опциями.
Как выбрать действие
Проверка результата
Как проверить результат
Завершается без ошибок, реструктуризация проходит
Ошибки проверки, ссылки на удалённый реквизит в модулях
Поле не отображается, карточка открывается без ошибок
Ошибка «Поле не найдено» при открытии
Формируются корректно
Ошибки построения запроса или пустые колонки
Синхронизация проходит без ошибок
Ошибки сериализации, зависшие пакеты в мониторе обмена
После удаления реквизита в тестовой копии прогоните основные пользовательские сценарии: создание и проведение документов, формирование ключевых отчётов, обмен с другими базами. Только после успешной проверки повторяйте операцию на рабочей базе — желательно в нерабочее время и с предварительным уведомлением пользователей.
Что важно запомнить
Сначала определите тип реквизита: дополнительный удаляется в пользовательском режиме, реквизит конфигурации — только в конфигураторе после поиска ссылок и резервного копирования. Типовые реквизиты не удаляют, а скрывают. После удаления проверяйте формы, отчёты и обмены.
Частые вопросы
Можно ли удалить реквизит без конфигуратора?
Да, если это дополнительный реквизит, созданный через механизм «Дополнительные реквизиты и сведения» — он удаляется в разделе Администрирование. Реквизиты, встроенные в структуру объектов конфигурации, без конфигуратора удалить нельзя.
Что произойдёт с данными при удалении реквизита?
Все значения, хранившиеся в этом реквизите, будут физически удалены из базы при реструктуризации. Восстановить их можно только из резервной копии, поэтому перед удалением выгрузите значения, если они могут понадобиться.
Почему конфигурация не обновляется после удаления реквизита?
Чаще всего причина — оставшиеся ссылки: реквизит используется в модуле, запросе, форме или макете. Выполните «Поиск ссылок на объект» и глобальный поиск по имени реквизита, устраните все найденные обращения и повторите обновление.
Как удалить типовой реквизит, который не нужен?
Удалять его не рекомендуется: при обновлении типового релиза реквизит вернётся, а доработка усложнит поддержку. Вместо удаления скройте поле на форме через «Изменить форму» или ограничьте доступ правами.
Как очистить значения реквизита у всех элементов справочника?
Используйте обработку «Групповое изменение реквизитов» в разделе Администрирование: задайте отбор элементов, выберите реквизит и установите пустое значение. Для больших объёмов или сложных условий подойдёт программная обработка с записью объектов порциями.
Удалится ли реквизит в расширении конфигурации, если его удалили в основной конфигурации?
Нет, и это источник ошибок. Если расширение ссылается на реквизит основной конфигурации, после его удаления расширение перестанет подключаться или будет выдавать ошибки. Перед удалением проверьте список расширений и их зависимости вручную.