Как исправить ошибку «Объект не может быть получен по идентификатору, помеченному на удаление» в 1С:УТ 11.5

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При активном использовании инструментов разработчика или стандартных обработок «Выгрузка и загрузка данных XML» для переноса документов между базами «1С:Управление торговлей 11.5», пользователи часто сталкиваются с критической ошибкой. При попытке открыть журналы документов (например, заказы поставщикам или счета-фактуры) система выдает сообщение: «Объект "Счет-фактура полученный (Документ)" не может быть получен по идентификатору помеченному на удаление». Это блокирует работу пользователей и не исправляется обычным перепроведением документов.

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

Выясним причину возникновения ошибки

Первым делом проанализируем ситуацию с технической стороны. В современных конфигурациях на базе БСП существует специальный справочник ИдентификаторыОбъектовМетаданных. Он хранит уникальные идентификаторы (GUID) для каждого типа объекта конфигурации: справочников, документов, журналов, отчетов и перечислений. Это необходимо для корректной работы системы прав доступа (RLS), настройки дополнительных реквизитов и других механизмов.

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

Способ 1: Поиск и замена дублей идентификаторов

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

  1. Откроем справочник Идентификаторы объектов метаданных. Его можно найти через меню «Функции для технического специалиста» (или «Все функции»).
  2. Найдем в списке те объекты, на которые ругается система. Обычно они будут помечены на удаление и иметь в наименовании вопросительный знак или другие странные символы.
  3. Воспользуемся стандартной обработкой «Поиск и удаление дублей».
  4. В качестве области поиска выберем указанный справочник.
  5. Установим правило: объединить помеченную на удаление запись (дубль) с правильной, «живой» записью того же объекта метаданных.
  6. После выполнения замены ссылок система перепишет связи в документах на корректные идентификаторы, и ошибка в журналах исчезнет.

Способ 2: Принудительное обновление информационной базы

Платформа 1С имеет встроенные механизмы самовосстановления справочников метаданных. Если ручная замена дублей кажется слишком трудоемкой (когда битых объектов десятки), можно инициировать процедуру обновления программно. Рассмотрим, как это сделать правильно.

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

/C ЗапуститьОбновлениеИнформационнойБазы

При таком запуске система автоматически выполнит все регламентные процедуры обновления данных БСП, включая пересчет и актуализацию справочника Идентификаторы объектов метаданных. Важно помнить, что этот параметр пишется с большой буквы C (латинской).

Способ 3: Полная очистка и программное восстановление

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

Рассмотрим последовательность действий:

  1. Сделаем резервную копию базы данных (обязательно!).
  2. Удалим записи в справочнике Идентификаторы объектов метаданных, которые помечены на удаление и вызывают ошибки.
  3. Воспользуемся внешней консолью кода или обработкой, чтобы вызвать метод БСП для полного обновления справочника. Проанализируем следующий фрагмент кода:

// Вызов метода БСП для принудительного обновления идентификаторов
// Первый параметр Истина означает перезапись существующих данных
// Второй параметр Истина запускает фоновое обновление
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);

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

Как предотвратить проблему в будущем

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

При настройке выгрузки данных обязательно снимите флажки со следующих объектов:

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

Дополнительные рекомендации

Если после всех манипуляций ошибка сохраняется, рекомендуем выполнить следующие действия:

Таким образом, мы выяснили, что проблема не в самих документах, а в служебной информации, которая связывает их с описанием метаданных. Используя один из предложенных методов — от ручного поиска дублей до программного вызова функций БСП — вы сможете быстро вернуть систему в рабочее состояние.

← На главную