Часто бывает, что в результате обмена данных в 1С 8.3 и 8.2 случаются ошибки, и вместо значения ссылочных данных в полях встречается «Объект не найден», то есть «битые ссылки».
Никакими штатными механизмами исправить это невозможно и оперативно найти битые ссылки достаточно проблематично. Исключение составляют тестирования и исправления в конфигураторе информационной базы: он создает вместо битых ссылок заглушки — элементы с незаполненными реквизитами.
Поиск битых ссылок в 1С запросом
Очень часто встает вопрос: как отобрать элементы с битыми ссылками запросом 1С?
Вопрос решается достаточно легко, рассмотрим его на примере:
необходимо отобрать документы Счет на оплату покупателю, где вместо организации установлена «битая ссылка».
Получите 267 видеоуроков по 1С бесплатно:
Первым отбором «НЕ СчетНаОплатуПокупателю.Организация ЕСТЬ NULL» мы определили, что ссылка установлена.
Вторым отбором СчетНаОплатуПокупателю.Организация.Код ЕСТЬ NULL, обращаясь к коду организации по точке, система строит левое соединение, но не находит в таблице организаций такой элемент — возвращает NULL.
Всё получается достаточно просто.
Определение битой ссылки в объектной модели
Если у Вас нет возможности сделать проверку запросом, рекомендую использовать два разных метода. Рассмотрим их на примере, который давали ранее:
Используя ПолучитьОбъект()
При использовании метода «ПолучитьОбъект()» битая ссылка вернет «Неопределено».
Поиск в строке
Этот метод самый простой — поиск строки «Объект не найден» в представлении элемента.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Проконсультироваться
со специалистом 1С
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: (84:bf5600145e3710ab11dda4c605dbe824) .
В данной статье я опишу пример быстрого восстановления данных.
Для пользователя:
Скачиваете эту обработку восстановления объектов по GUID :
Для 1С 8.1:
здесь или Скачивать файлы может только зарегистрированный пользователь!
Для 1С 8.2:
Скачивать файлы может только зарегистрированный пользователь!
и открываете ее в программе:
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.х
Для 1С 7.7 смотрите:
Технология восстановления удаленных объектов или элементов в 1С 7.7
еще можно получить ИдентификаторДокумента при OLE доступе:
Код 1C v 7.x
Еще посмотрите метод:
ЗначениеВСтрокуВнутр( );
Синтаксис:
ЗначениеВСтрокуВнутр( )
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
– значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава ”Системные процедуры и функции”
Для пользователя:
Скачиваете эту обработку восстановления объектов по 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
Еще посмотрите метод:
ЗначениеВСтрокуВнутр( );
Синтаксис:
ЗначениеВСтрокуВнутр( )
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
– значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава ”Системные процедуры и функции”