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