В процессе эксплуатации 1С:Управление торговлей 11.4 администраторы и программисты нередко сталкиваются с критической ошибкой, возникающей при попытке открыть общие журналы документов. Сообщение системы гласит: «Объект не может быть получен по идентификатору, помеченному на удаление». Это означает, что конфигурация потеряла связь между метаданными и их внутренним представлением в справочнике ИдентификаторыОбъектовМетаданных. Давайте разберем, почему это происходит и как устранить проблему шаг за шагом.
Система БСП (Библиотека стандартных подсистем) использует справочник ИдентификаторыОбъектовМетаданных для хранения ссылок на объекты, учитывая информацию о свойствах конфигурации. Если объект (например, Документ.АктОРасхожденияхПослеОтгрузки) был удален из конфигурации в процессе обновления, а затем добавлен снова, в базе возникают дублирующие записи. Одна из них помечена на удаление, но система по ошибке продолжает пытаться обратиться к ней, что вызывает сбой при формировании списка документов.
Первым делом нам необходимо найти «битую» запись. Для этого воспользуемся механизмом Все функции (или Функции для технического специалиста в новых версиях платформы).
Идентификаторы объектов метаданных.Именно наличие «задвоения» и некорректная ссылка в коде Общего модуля приводят к невозможности открытия журнала.
Если простая отмена пометки на удаление не срабатывает из-за встроенных защитных механизмов платформы, воспользуйтесь обработкой Групповое изменение реквизитов. Она позволяет принудительно изменить статус объекта.
Важное предупреждение: перед выполнением любых действий с метаданными в обязательном порядке сделайте полную резервную копию информационной базы (dt-файл или копия средствами SQL). Работа с этим справочником критически важна для прав доступа и версионирования.
Поскольку журнал Документы продажи (все) строится на основании данных, отраженных в Ключах реестра документов, после исправления идентификаторов необходимо обновить данные самого реестра. Для автоматического устранения проблем в этих данных можно использовать обработку для поиска и исправления дублей в регистре «Реестр документов».
НСИ и администрирование — Обслуживание.Корректировка данных или Регламентные операции.Проверка корректности отражения документов в реестре.Если интерфейсные методы не приносят результата, используйте возможности консоли кода. Часто бывает, что на объект установлены программные запреты на изменение пометки удаления. Чтобы их обойти, выполните следующий алгоритм:
// Пример кода для принудительной очистки пометки удаления
ОбъектИД = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоНаименованию("Акт о расхождениях после отгрузки");
Если Не ОбъектИД.Пустая() Тогда
Объект = ОбъектИД.ПолучитьОбъект();
Объект.ОбменДанными.Загрузка = Истина; // Обходим проверки
Объект.УстановитьПометкуУдаления(Ложь);
Объект.Записать();
КонецЕсли;
Если проблема сохраняется, значит, кэш идентификаторов внутри базы данных требует принудительной синхронизации с текущей структурой конфигурации. Вы можете вызвать стандартную процедуру БСП:
Попробуйте выполнить команду обновления через ОбновлениеИнформационнойБазы.ЗаполнитьИдентификаторыОбъектовМетаданных(). Этот метод заставляет систему просканировать дерево метаданных и актуализировать справочник, игнорируя «зависшие» ссылки. После выполнения этой команды обязательно очистите кэш 1С на клиенте и перезапустите сеанс.
Ошибка доступа к объектам метаданных — это логический конфликт, который не лечится утилитой chdbfl.exe или обычным Тестированием и исправлением (ТиИ), так как с точки зрения физической структуры базы данных ссылки являются «валидными». Решение всегда лежит в плоскости приведения справочника ИдентификаторыОбъектовМетаданных в соответствие с текущей конфигурацией 1С.