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

Администрирование · 12 мин

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

Как восстановить удаленный предопределенный элемент в 1С: способы через конфигуратор, обновление данных, создание с тем же именем и восстановление из копии.

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

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

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

Как понять, что предопределенный элемент удален

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

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

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

Проверить список предопределенных элементов в конфигураторе

«Объект не найден» в списке справочникаБитая ссылка — элемент физически удален

Найти ссылающиеся документы и регистры

Элемент есть в списке, но код его не видитУ элемента сбит признак предопределенного

Проверить имя предопределенного элемента в свойствах

Удаление произошло вчера или раньшеНужна резервная копия или ручное восстановление

Уточнить расписание создания бэкапов

Подготовка: что сделать до восстановления

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

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

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

Способ 1. Автоматическое восстановление через конфигуратор

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

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

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

Порядок действий в конфигураторе
  1. 1
    Сделайте выгрузку информационной базы через Администрирование → Выгрузить информационную базу
  2. 2
    Откройте свойства корня конфигурации и убедитесь, что обновление предопределенных данных установлено в «Авто»
  3. 3
    Внесите минимальное изменение в конфигурацию (комментарий или синоним)
  4. 4
    Выполните обновление конфигурации базы данных (клавиша F7)
  5. 5
    Откройте базу в режиме предприятия и проверьте наличие элемента в списке
  6. 6
    Заполните реквизиты восстановленного элемента актуальными значениями

Способ 2. Создание элемента вручную с именем предопределенного

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

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

bsl
// Пример: привязка существующего элемента к предопределенному имени
Элемент = Справочники.Валюты.НайтиПоНаименованию("RUB");
Если Не Элемент.Пустая() Тогда
    Объект = Элемент.ПолучитьОбъект();
    Объект.ИмяПредопределенныхДанных = "RUB";
    Объект.Записать();
КонецЕсли;

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

Способ 3. Восстановление из резервной копии

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

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

Сравнение способов восстановления

Обновление предопределенных данных через конфигуратор

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

Ручное создание с привязкой имени

Не требует обновления конфигурации; подходит для прав доступа без конфигуратора. Минус — нужен программный способ установки имени предопределенных данных

Перенос из резервной копии

Единственный способ сохранить заполненные реквизиты и историю. Минус — трудоемко, нужна копия подходящей давности

Проверка результата и типичные ошибки

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

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

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

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

Наличие элемента в списке справочника
Норма

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

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

«Объект не найден» или элемент отсутствует

Обращение из кода (отчет, проведение документа)
Норма

Операция выполняется без сообщения об отсутствующем предопределенном элементе

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

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

Свойство «Имя предопределенных данных»
Норма

Имя совпадает с именем в конфигураторе

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

Свойство пустое — элемент не привязан

Дубли в справочнике
Норма

Один элемент с нужным наименованием

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

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

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

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

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

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

Итог

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

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

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

Почему нельзя просто создать элемент с таким же названием?

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

Можно ли восстановить элемент без конфигуратора?

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

Восстановятся ли заполненные реквизиты элемента?

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

Что делать, если при записи возникает ошибка «Имя предопределенного элемента не уникально»?

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

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

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

Как найти все предопределенные элементы конфигурации?

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