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

Справочники и Данные · 15 мин

Что произойдет, если удалить предопределенный элемент в режиме 1С:Предприятие

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

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

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

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

Что такое предопределенный элемент и чем он отличается от обычного

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

Ключевое отличие — способ обращения из кода. К обычному элементу обращаются по ссылке, коду или наименованию, а к предопределенному — по имени через менеджер объекта: Справочники.Валюты.Рубль или через метод ПредопределенныйЭлемент("Справочник.Валюты.Рубль"). Такое обращение не требует поиска по базе и работает быстрее, но создает жесткую зависимость: если элемент исчезнет, код не сможет получить ссылку.

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

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

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

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

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

Пометка недоступнаСтандартная защита платформы

Элемент предопределенный, и конфигурация запрещает его удаление — это нормальное поведение

Пометка установленаЭлемент помечен, но жив

Проверить, не перестали ли работать обработки и отчеты, использующие этот элемент

Есть ссылки на элементФизическое удаление заблокируется

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

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

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

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

Ошибка «Предопределенный элемент отсутствует в данных»

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

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

Битые ссылки и нарушение отчетности

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

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

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

Перед любыми действиями с предопределенным элементом сделайте резервную копию: через выгрузку информационной базы в конфигураторе (файл .dt) или штатными средствами СУБД, если база клиент-серверная. Все проверки и экспериментальное удаление выполняйте на копии, развернутой отдельно от рабочей базы.

Порядок безопасной проверки включает три направления: поиск ссылок в данных, поиск обращений в коде и тестовое удаление на копии. Только совокупность этих проверок дает уверенность, что удаление не приведет к скрытым сбоям.

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

Как восстановить предопределенный элемент

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

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

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

Когда удаление допустимо и какие есть альтернативы

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

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

Сравнение вариантов действий

Пометка на удаление

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

Физическое удаление

Допустимо только при отсутствии ссылок и обращений из кода, после проверки на копии. Необратимо без резервной копии

Скрытие через отборы

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

Переименование

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

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

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

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

Типичные ошибки
01
Удаление без анализа кода: контроль ссылок проходит, но обработки начинают падать с ошибкой обращения к предопределенному элементу
02
Создание нового элемента с тем же наименованием вместо восстановления: предопределенность не возвращается, появляется дубль
03
Физическое удаление без резервной копии: при обнаружении проблем откат невозможен
04
Снятие пометки предопределенности в конфигураторе ради удаления: при обновлении конфигурации элемент создается заново, возникает дубль
05
Игнорирование расширений конфигурации при поиске обращений: код расширения тоже может обращаться к элементу по имени

Как проверить результат после удаления или восстановления

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

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

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

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

Проведение документов, использовавших элемент
Норма

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

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

Ошибка обращения к предопределенному элементу или отказ проведения

Журнал регистрации за период после изменений
Норма

Нет ошибок с упоминанием имени элемента

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

Повторяющиеся ошибки фоновых заданий и обменов

Тестирование и исправление — ссылочная целостность
Норма

Битых ссылок не обнаружено

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

Найдены записи со ссылками на несуществующие объекты

Список предопределенных элементов после обновления
Норма

Каждому элементу метаданных соответствует ровно один элемент данных

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

Дубли элементов или отсутствующие предопределенные элементы

Итог

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

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

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

Почему кнопка «Пометить на удаление» недоступна для предопределенного элемента?

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

Что будет, если пометить предопределенный элемент на удаление, но не удалять физически?

Элемент останется в базе, ссылки в документах сохранятся, документы будут открываться и проводиться. Однако элемент может перестать отображаться в списках выбора и выпасть из некоторых отчетов и обработок, если они фильтруют помеченные объекты. Обращения из кода по имени обычно продолжают работать, так как ссылка существует.

Как найти все места, где используется предопределенный элемент?

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

Элемент удален, появилась ошибка «отсутствует в данных». Что делать без резервной копии?

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

Можно ли переименовать предопределенный элемент в режиме Предприятие?

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

Почему после обновления конфигурации появился дубль предопределенного элемента?

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