1с значение объект не найден

Guesto notes

Иногда в ИБ можно встретить ссылки на объекты (75:a353ac9e17b7bc7111e60238e0dc59c6), это ссылки на удаленные объекты. Получаются такие ссылки в ходе сбоев ИБ, РИБ(Распределенных Информационных Баз) или других механизмов создающих ссылки не записанных объектов(разбирал здесь).

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

В рамках задачи необходимо удалить записи регистра с битыми ссылками, в статье не будет разбираться тестирование и исправление ИБ, или другое восстановление ссылок.

Поиск ссылок

Сама ссылка считается валидной, а вот если обратиться к ее реквизиту в запросе, то получим NULL. Из этого пишем запрос получающий наименование из ссылки в измерении «номенклатура» регистра сведений «Данные для обработки» и отбираем записи у которых значение запрашиваемого реквизита равно NULL. Если измерений по которым необходимо производить поиск больше одного, то объединяем условия через ИЛИ.

А для удаления таких записей просто создадим наборы записей указав отборы и запишем.

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

Для пользователя:
Скачиваете эту обработку восстановления объектов по GUID :
Для 1С 8.1:
здесь или Скачивать файлы может только зарегистрированный пользователь!
Для 1С 8.2:
Скачивать файлы может только зарегистрированный пользователь!
. Новая Версия. 8.2 и 8.3 — Скачивать файлы может только зарегистрированный пользователь! Подробное описание: Объект не найден в 1С или про Битые ссылки 1С
и открываете ее в программе:
1. Копируем фразу и получаем 05dbe824-a4c6-11dd-bf56-00145e3710ab

2. Если Вы знаете что удалили, то можете сразу нажать кнопку Создать Объект Из GUID — Пункт 4.
3. Если Вы не знаете что удалили, тогда вам нужно поднять архивную копию базы, открыть там обработку и вставить полученный GUID в поле GUID.
далее нажать Ссылку -> и в правом поле отобразится необходимый Вам объект(в моем случае Попов Роман Владимирович).
Открыв его, узнаем что это справочник Сотрудники и всю содержащуюся в справочнике информацию. Возвращаемся в базу, где необходимо восстановить объект и жмем кнопку Создать Объект Из GUID

4. Из открывшегося списка выбираем Справочник Сотрудники, в открывшейся форме заполняем все поля данными из архивной базы и жмем OK. Все, данный объект восстановлен.

Для программиста:
Для получения уникального идентификатора объекта, используйте код вида:
Код 1C v 8.х

Для того чтобы преобразовать (84:bf5600145e3710ab11dda4c605dbe824) в УникальныйИдентификатор (GUID)
Код 1C v 8.х

Для получения ссылки по уникальному идентификатору, используйте код:
Код 1C v 8.х

Создать объект документ или справочник и установить ему свой Уникальный идентификатор
Код 1C v 8.х

еще можно получить ИдентификаторДокумента при OLE доступе:
Код 1C v 7.x

Еще посмотрите метод:
ЗначениеВСтрокуВнутр( );
Синтаксис:
ЗначениеВСтрокуВнутр( )
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
— значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава »Системные процедуры и функции»

Обратите внимание, если в запросе требуется получить ссылку на регистратор регистра накопления, то запрос должен быть построен не к остаткам и не к оборотам, а просто к регистру (как в этом примере)

Итог исполнения запроса:

Регистратор Номенклатура СерияНоменклатуры ДокументОприходования
Поступление товаров и услуг АМН00015703 от 26.11.2010 12:36:37 УСИЛИТЕЛЬ БАМПЕРА ЗАДНЕГО 10702030/281010/0044030, КОРЕЯ (202:8f3be61ec213fa5511dffc85b405870a)
Качество Склад ХарактеристикаНоменклатуры СтатусПартии Заказ
Некондиция 15 Основной склад Купленный

Дополнение

По сведениям наших коллег в некоторых случаях может потребоваться отбор не по

а по представлению, т.е. с использованием конструкции вида:

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

Автор 1С

4 thoughts on “ Как в запросе выполнить отбор по «объект не найден» (1С: v8: Программисту) ”

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

Хорошо бы проанализировать эту задачу на самых различных данных.

Будем рады любым дополнительным отзывам и сведениям от всех, кто с этим еще столкнется.

Думается мне, что нюанс тут… есть, но только в формулировке и ее понимании.
«нужно проверять на NULL значение ссылки» — неточная и/или неверная формулировка.
Речь идет о том, чтобы условие в запросе выглядело так:
ГДЕ Чек.Номенклатура.Ссылка ЕСТЬ NULL
А это почти равнозначно условию
ГДЕ Чек.Номенклатура.Представление ЕСТЬ NULL
(Почему почти? Я знаю пока одно различие: если есть, скажем, в регистре измерение Операция с типом ПеречислениеСсылка, так в запросе Операция.Ссылка использовать можно, а вот Операция.Представление вызывает ошибку! По крайней мере на платформе 8.2.16.)

По регистру сведений «АналитикаУчетаЗатрат» данный подход не работает ни по ссылке, ни по «Ссылка.Представление», если — тип СправочникСсылка.КлючиАналитикиУчетаЗатрат.

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: