Как найти и удалить записи «Объект не найден» в отчетах 1С:ERP?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет
← На главную

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

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

Выясняем причину появления «битой» ссылки

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

Рассмотрим первоочередные действия для локализации проблемы:

  1. Определение даты возникновения. Нам необходимо понять, к какому периоду относится данная запись. Для этого в отчете, где была обнаружена ошибка, попробуем последовательно менять период (сокращать интервал дат). Как только строка с битой ссылкой исчезает — мы нашли день, в котором «зависла» запись.
  2. Анализ регистратора. Если отчет позволяет сделать расшифровку по регистратору, обязательно воспользуемся этой функцией. Даже если объект не открывается, мы увидим тип документа, который оставил след в системе.

Шаг 1: Извлечение информации из идентификатора (GUID)

Посмотрим на структуру битой ссылки. Обычно она выглядит так: <Объект не найден> (84:bf0d00155d05070211e4799017770001). Этот длинный номер — уникальный идентификатор (GUID). Проанализируем его:

Чтобы понять, что это был за документ, мы можем воспользоваться консолью запросов. Проверим наиболее вероятные документы для отчета «Задолженность поставщикам». Напишем небольшой запрос для поиска типа объекта по его идентификатору. Это поможет нам сузить область поиска до конкретного вида документов, например, ПриобретениеТоваровУслуг или СписаниеБезналичныхДенежныхСредств.

Шаг 2: Использование Тестирования и исправления (ТиИ)

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

Перейдем в меню Администрирование — Тестирование и исправление. Нас интересуют настройки в разделе «При наличии ссылок на несуществующие объекты»:

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

Шаг 3: Ручная очистка через «Корректировку регистров»

Если «Тестирование и исправление» не помогло (что часто бывает в ERP из-за сложности структуры регистров), перейдем к «хирургическому» методу. В ERP данные о долгах хранятся в специальных регистрах накопления, таких как РасчетыСПоставщиками, РасчетыСКонтрагентамиПоДокументам или ПартииТоваровОрганизаций. Для этой задачи можно использовать обработку для чтения и корректировки остатков регистров накопления.

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

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

Как выбрать битую ссылку в поле, где требуется конкретный тип документа? Разберем этот технический нюанс:

В поле выбора типа данных нужно выбрать «Любая ссылка» или конкретный тип (если мы его определили в Шаге 1). Если система позволяет выбрать «Объект не найден» прямо из списка последних выбранных значений или через поиск — выбираем его. Если нет — придется воспользоваться программным кодом для заполнения документа корректировки.


// Пример программного заполнения битой ссылки в корректировку регистров
НоваяСтрока = ОбъектКорректировка.ТаблицаРегистра.Добавить();
// Формируем ссылку из строкового представления GUID
БитаяСсылка = Документы.ПриобретениеТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор("11e47990-1777-0001-84bf-0d00155d0507"));
НоваяСтрока.Регистратор = БитаяСсылка; 

Шаг 4: Использование внешних обработок

Если записей <Объект не найден> много, ручная корректировка станет трудоемкой. Рассмотрим применение специализированных инструментов:

  1. Поиск и замена значений. Эта стандартная обработка позволяет найти все вхождения битой ссылки в базе и заменить их на корректный документ либо на пустое значение (Неопределено или пустую ссылку).
  2. Удаление записей регистра по регистратору. Существуют внешние обработки, которые позволяют выбрать тип регистра и принудительно удалить из него все записи, у которых поле Регистратор.Номер является пустым или тип регистратора не определен. Это наиболее быстрый способ очистить «осиротевшие» записи.

Технические нюансы SQL-уровня

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

Заключение

Мы проанализировали основные способы борьбы с фантомными объектами в 1С:ERP. Подведем итог: наиболее эффективным методом для обычного пользователя является поиск даты возникновения ошибки и использование Корректировки регистров. Для администраторов и программистов приоритетным является использование Тестирования и исправления с опцией очистки ссылок и пересчета итогов, а в сложных случаях — использование программных методов очистки через GUID.

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

← На главную