<Объект не найден> Причины и способы борьбы с проблемой

Тема в разделе "Статьи", создана пользователем BabySG, 27 мар 2010.

  1. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Данная тема будет расширяться. Описания будут постепенно добавляться в тему. Если у Вас есть желание добавить свой способ борьбы - Вы можете прислать описание решения в личном сообщении администратору BabySG, что бы согласовать формат и добавить ссылку на решение в первый пост темы. Авторство остается за Вами.

    ВНИМАНИЕ!
    Способы борьбы с данной проблемой требуют некоторой подготовки, хотя целью было написание как можно более подробных инструкций, рассчитанных на новичков в борьбе. Имейте ввиду, что:
    1. НИКОГДА не делайте сначала на рабочей базе, даже если она "не работает". ВСЕГДА сначала выполняем все действия на КОПИИ! И только потом на рабочей!
    2. Все действия выполняются на Ваш страх и риск. Мы можем только рассказать, как решались подобные проблемы в частных случаях и подсказать какой-то путь решения.

    Рассмотрим основные причины появления :
    1. Объект удалили непосредственно, минуя контроль ссылочной целостности (Планируется более подробное описание проблемы и способы борьбы с причинами)
    2. Был скачок напряжения и данные "куда-то" делись (обычно такое происходит на файловом режиме работы с базой)
    3. Ошибка в платформе (да, такое тоже бывает!, например, эта ошибка с №10032455 может вызвать подобное)
    4. Прочее (список будет расширяться, например, такое может быть после работы планов обмена с другими базами)
    А теперь прямые ссылки на темы, где идет разбор полетов и методы лечения:
    Последнее редактирование: 8 янв 2015
  2. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Исходные данные:
    УПП 1.3.2.1
    Платформа 8.2.10.77 (Обработка в конце приложена для 8.1, но никаких проблем с запуском в 8.2 не будет. Не забудьте ее сконвертировать только)
    SQL 2008

    ВНИМАНИЕ: Это не руководство к действию, а просто описание борьбы с конкретным случаем!

    Итак, у клиента возникла проблема с конфигурацией Управление Производственным Предприятием и документом "Авансовый отчет" - в табличной части документа "Выданные авансы" появились два странных документа с названием <Объект не найден>. (Появлялись по нажатию кнопки Заполнить->Заполнить по остаткам. Вот, что происходило в документе:
    Посмотреть вложение 3718

    Простейший просмотр списка документов, которые могут участвовать с этой проблеме (в данную табличную часть попасть может ограниченное количество типов документов) - никаких нарушений не выявил. (Проверка выполнялась сначала в консоли запросов, потом спец. обработкой. О ней будет еще отдельный рассказ). Т.к. проблему "в лоб" не удалось решить -> открываем конфигуратор, находим запрос, который вызывает заполнение этой табличной части и выполняем его в консоли запросов.
    Результат видим на скриншоте:
    Посмотреть вложение 3719

    Итак, проблема локализованна - "полетела" таблица итогов регистра накопления ВзаиморасчетыСПодотчетнымиЛицами. Пересчет итогов средствами платформы, а также отключение и включение итогов - ситуацию не изменило. Что ж - придется править данные напрямую, а для этого придется работать в SQL таблицах. Встал вопрос - как же нам определить имя таблицы, которая отвечает за "битую" таблицу итогов? В этом нам поможет обработка, которая приложена в конце сообщения. А вот как выглядит ее работа:
    Посмотреть вложение 3722

    Итак, мы получили имя таблицы в SQL и теперь открываем нашу базу данных и ищем там таблицу с указанным именем (на скриншоте показано, как открыть таблицу в режиме редактирования):
    Посмотреть вложение 3723

    По умолчанию выбирается первые 200 записей таблицы, нам же нужно видеть больше, поэтому изменим запрос, что бы он выбрал большее количество данных (на скриншоте показано, как изменить запрос на 500 записей и как открыть консоль, если она не отображается на экране):
    Посмотреть вложение 3724

    Итак, мы получили большой список, в котором надо найти нашу "битую" строчку. Модифицируем запрос, что бы он показал нам только те записи, которые содержат нужную нам сумму. Но как это сделать? Для этого на нужно знать имя поля, по которому будем накладывать отбор, а тут нам опять поможет обработка, в которой мы определяли имя таблицы:
    Посмотреть вложение 3725

    Итак, как мы видим - нам годятся поля с именами _Fld23018 и _Fld23019.
    Теперь напишем запрос так, что бы он показал только те записи, которые содержат сумму 58 330,00:
    Посмотреть вложение 3726

    Итак, мы увидели, что у нас есть две записи с такой суммой. Почему две? Обратите внимание на первую колонку _Period (описание, какое поле за что отвечает мы разобрали выше) - там есть дата 4010 года и 5999 года. Откуда такие "безумные" даты? Они возникают не всегда. Это проставляется в свойствах при создании базы данных и параметр называет Смещение дат:
    Посмотреть вложение 3727

    Т.е. мы имеем на самом деле даты 2010 год и 3999 год.
    Если посмотреть внимательнее (не забывайте, что дата в SQL читается по другому) - увидим, что зафиксирован остаток на 01 апреля 2010 года и 01 ноября 3999 года (за вычетом смещения).
    Система хранит два остатка: на конец месяца и на "конец концов" - это когда вы получаете остатки без указания периода. Сделано для быстрого отклика.
    Нам необходимо удалить обе эти строчки:
    Посмотреть вложение 3728

    Проверим в консоли запросов, верно ли мы все сделали:
    Посмотреть вложение 3730

    Ну, теперь нам необходимо так же разобраться со второй суммой (29 165,00), а как это сделать - Вы уже знаете.

    И вот итог:
    Посмотреть вложение 3729

    Вложения:

  3. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    ПлюсеГ за труды. Только вот тут:
    Желательно как то перефразировать, а то "масло масляное" получается.
  4. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Спасибо, пофиксил :)
    Просто писал в реальном времени - прямо в момент корректировки проблемы. Заодно решил задокументировать, как с этим бороться, а то очень часто спрашивают...
  5. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Если уж совсем придраться :)
    "Что ж - придется править данные напрямую, а для этого придется работать в SQL таблицах." вот так хорошо :)
  6. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    ТЬфу, слона-то не заметил :) Пофиксил, спасибо.
  7. koder
    Offline

    koder

    Регистрация:
    2 дек 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Конфигурация БАУ 2.0.11
    Платформа 8.1.15

    Ситуация:

    Учет ЗП ведется во внешней программе. При загрузке проводок в БАУ идет идентификация сотрудников внешней программы и БАУ по ФИО. Все сотрудники идентифицируются, кроме одного -- <объект не найден>. В БАУ такой элемент справочника есть, но стало известно, что этого сотрудника в свое время удаляли.

    Подскажите плиз, в этом случае что можно сделать ?
  8. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    "В БАУ такой элемент справочника есть, но стало известно, что этого сотрудника в свое время удаляли."
    Расшифруйте, что это значит
  9. koder
    Offline

    koder

    Регистрация:
    2 дек 2009
    Сообщения:
    28
    Симпатии:
    0
    Баллы:
    1
    Был элемент справочника Сотрудники - "Иванов Антон Владимирович" (код 0003) /например/
    Его удалили через "Удаление помеченных объектов"
    Затем создали элемент с таким же наименованием - "Иванов Антон Владимирович" (код 0007)

    Вот....
  10. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Подозреваю, что сопоставление не по имени, все-таки, делается.
    Скорее всего, где-то есть информация о ГУИДе на элемент, который и заполняется.

    99%, что это не связано с проблемами в платформе.
    Приложите обработку, которая выполняет обмен и файл, с которым она работает
  11. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Для просмотра структуры БД пользуюсь другой обработкой. На мой взгляд, она удобнее. Может пригодится кому.
    Посмотреть вложение 4443 (с) не мое.

    Вложения:

  12. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Да, удобная, но вот индексы не очень наглядно представлены... А это основное, что, обычно, требуется.
  13. shuka
    Offline

    shuka

    Регистрация:
    13 окт 2010
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    8.2, упп 1.2.33.1, БД SQL 2008, пытаюсь удалить элемент из справочника фирм, все удаляется, но висит ссылка на объест типа "Документ Поступление товаров и услуг - <Объект не найден> (447:964d0015177a425011df63d1a22f2e97)", по нажатию на ссылку создается объект документ поступление товаров и услуг, но после проведения ссылка не замещается (
    Как победить такую напасть?
    Тестирование стандарными средствами ничего не дают, ни в файловом ни в SQL варианте
    Режим "Непосредственное удаление" не использовался
  14. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Предварительно можно попробовать найти все документы ПТиУ, в которых зависла организация, но сама ссылка на документ битая.

    Можно попробовать сначала через консоль запросов 1С, а потом напрямую в скуле (более сложный вариант)
  15. shuka
    Offline

    shuka

    Регистрация:
    13 окт 2010
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    самое интересное , что когда искал ссылки на удаляемую фирму, при просмотре списка ссылок 1с падала с ошибкой. После удаления всех документов по этой фирме, 1с перестала падать, но почему то остался в ссылках один документ вида ПТиУ, фирма в этом документе указана другая. Почему былая ссылка на удаляемую фирму непонятно. После удаления этого документа и появилась ссылка типа <Объект не найден>. Все удалялость через контроль удаления.
    Как можно через консоль запросов обратиться к объекту через UID?
  16. TopicStarter Overlay
    BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Через консоль - нет.
    Что можно попробовать сделать: функцией НайтиСсылки() получить таблицу ссылок. Определить в ней УИД, по УИДУ воссоздать ссылку, записать документ.
  17. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Ну вот и у меня такая ошибка в УПП. Документ Исполнительный лист в реквизите где выбирается способ расчёта почтового сбора.
    Хотя элемент в справочнике присутствует. Вот думаю поможет ли перевыбрать руками(или обработкой замены значений). Просто некоторые листы нельзя изменять руками. Только программно.
Похожие темы
  1. zayaroslava
    Ответов:
    2
    Просмотров:
    1.063
Загрузка...

Поделиться этой страницей