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