Как найти и исправить ошибку «Объект не найден» при проведении документов в 1С

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

При работе в 1С:Комплексная автоматизация или 1С:ERP пользователи часто сталкиваются с системным сообщением вида <Объект не найден> (1033:97b52880239022b111eb4abfa0e58cbc). Эта ошибка возникает, когда в базе данных существует ссылка на объект (документ или элемент справочника), который был физически удален или еще не был создан (не загружен при обмене). Рассмотрим подробно, как локализовать проблемный объект и очистить систему от подобных «фантомных» записей.

Разбор структуры идентификатора GUID

Прежде всего, проанализируем само сообщение об ошибке. Текст в скобках — это уникальный идентификатор объекта в системе. Он состоит из двух частей, разделенных двоеточием:

  1. 1033 — это внутренний идентификатор таблицы метаданных (TableID). В каждой базе 1С этот номер соответствует определенному типу данных (например, документу «Ведомость в банк» или справочнику «Физические лица»).
  2. 97b52880239022b111eb4abfa0e58cbc — это уникальный шестнадцатеричный код (GUID) конкретной записи.

Выясним, к какой таблице относится код 1033. Для этого воспользуемся консолью запросов или напишем небольшой фрагмент кода, который перебирает метаданные и ищет соответствие внутреннему номеру. Рассмотрим пример кода для поиска типа объекта по его внутреннему идентификатору:


Для Каждого ТипОбъекта Из Метаданные.Документы Цикл
    Менеджер = Документы[ТипОбъекта.Имя];
    Если ПолучитьНомерТаблицы(Менеджер) = "1033" Тогда
        Сообщить("Тип документа найден: " + ТипОбъекта.Имя);
        Прервать;
    КонецЕсли;
КонецЦикла;

Обратите внимание, что функция ПолучитьНомерТаблицы является вспомогательной и может потребовать использования метода ПолучитьСтруктуруХраненияБазыДанных(). Также можно воспользоваться специализированными внешними обработками для поиска «битых» ссылок, которые автоматически сопоставляют ID таблицы с метаданными.

Метод 1: Использование стандартного группового перепроведения

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

  1. Откроем форму группового перепроведения документов.
  2. Настроим фильтры: выберем нужный период (в нашем случае — декабрь 2020 года) и типы документов.
  3. Важный момент: обязательно установим флаг «Останавливаться при ошибке».
  4. Запустим процесс. Как только система наткнется на документ с битой ссылкой, она прекратит работу и выведет в журнале регистрации или в окне сообщений ссылку на конкретный документ, внутри которого содержится <Объект не найден>.

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

Метод 2: Поиск через универсальный отчет или консоль запросов

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


ВЫБРАТЬ
    ВедомостьВБанк.Ссылка КАК Документ,
    ВедомостьВБанк.Состав.(
        ФизическоеЛицо КАК ФизЛицо
    )
ИЗ
    Документ.ВедомостьВБанк КАК ВедомостьВБанк
ГДЕ
    ВедомостьВБанк.Состав.ФизическоеЛицо.Наименование ЕСТЬ NULL
    И НЕ ВедомостьВБанк.Состав.ФизическоеЛицо = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)

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

Метод 3: Тестирование и исправление информационной базы

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

  1. Запустим конфигуратор и перейдем в меню Администрирование — Тестирование и исправление.
  2. Выберем пункт «Проверка ссылочной целостности информационной базы».
  3. В поле «При наличии ссылок на несуществующие объекты» выберем один из вариантов:
    • Очищать ссылки: система просто удалит битую ссылку из поля. Это оптимально для реквизитов, которые не критичны для проведения.
    • Создавать объекты: система создаст пустой элемент («заглушку») в соответствующем справочнике или журнале документов. Это позволит вам увидеть этот объект в интерфейсе и либо заполнить его данными, либо корректно пометить на удаление и удалить через стандартный поиск ссылок.

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

Почему возникают такие ошибки: анализ причин

Выясним основные причины появления подобных инцидентов в 1С:Комплексная автоматизация:

Специфика «Ведомостей в банк»

Если ваша ошибка напрямую связана с ведомостями (как в тексте сообщения 0), обратите внимание на регистр сведений «Оплата ведомостей на выплату зарплаты». Часто бывает, что движения по этому регистру «зависают», ссылаясь на удаленный документ. Проверьте записи этого регистра с помощью консоли запросов. Если вы обнаружите там запись, где вместо регистратора или основного измерения стоит <Объект не найден>, такую запись необходимо удалить программно или через исправление документа-регистратора.

Рассмотренные методы позволяют не только найти «битый» объект, но и понять природу его появления. Систематический подход — от простого перепроведения к анализу GUID и тестированию базы — гарантирует успешное решение проблемы и восстановление работоспособности системы.

← На главную