helpf.pro
Регистрация
 +68 
Распечатать

Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID

Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) .
title
В данной статье я опишу пример быстрого восстановления данных.

Для пользователя:
Скачиваете эту обработку восстановления объектов по GUID :
Для 1С 8.1:
здесь или Скачивать файлы может только зарегистрированный пользователь!
Для 1С 8.2:
Скачивать файлы может только зарегистрированный пользователь!

!!! Новая Версия!!! 8.2 и 8.3 - Скачивать файлы может только зарегистрированный пользователь! Подробное описание: Объект не найден в 1С или про Битые ссылки 1С

и открываете ее в программе:
1. Копируем фразу <Объект не найден... и вставляем в поле Объект не найден, жмем на кнопку GUID -> и получаем 05dbe824-a4c6-11dd-bf56-00145e3710ab
title

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

Для быстрого поиска всех <Объект не найден> используйте Поиск в базе битых ссылок - "объект не найден"



Для программиста:
Для получения уникального идентификатора объекта, используйте код вида:
Код 1C v 8.х
  ГУИДССЫЛКИ	= СсылкаНаОбъект.УникальныйИдентификатор();    


Для того чтобы преобразовать <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) в УникальныйИдентификатор (GUID)
Код 1C v 8.х
 	// ГУИДУдОбъкта =  <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824)
	ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъкта,"<Объект не найден> (","");
	ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,")","");
	ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,"0x","");
	ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр));
	// Преобразуем GUID
	ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12);			//и получаем ГУИД = 05dbe824-a4c6-11dd-bf56-00145e3710ab    


Для получения ссылки по уникальному идентификатору, используйте код:
Код 1C v 8.х
  	// ГУИД = 05dbe824-a4c6-11dd-bf56-00145e3710ab  
	// Ссылка будет установлена в переменную СсылкаНаОбъектГуид
	УникальныйИдентификатор = Новый УникальныйИдентификатор(ГУИД)
	// все объекты по которым можно получить ссылку
	Если ПолучитьСсылкуНоМенеджеруОбъекта(Справочники,УникальныйИдентификатор) Тогда
	ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(Документы,УникальныйИдентификатор) Тогда
	ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(ПланыВидовХарактеристик,УникальныйИдентификатор) Тогда
	ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(ПланыСчетов,УникальныйИдентификатор) Тогда
	ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(ПланыОбмена,УникальныйИдентификатор) Тогда
	ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(БизнесПроцессы,УникальныйИдентификатор) Тогда
	ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(Задачи,УникальныйИдентификатор) Тогда
	КонецЕсли;
	
	// ПолучитьСсылкуНоМенеджеруОбъекта()
	Функция ПолучитьСсылкуНоМенеджеруОбъекта(ОбъектыМенеджер,УникальныйИдентификатор)
	Для Каждого Менеджер Из ОбъектыМенеджер Цикл
		СсылкаНаОбъектГуид = Менеджер.ПолучитьСсылку(УникальныйИдентификатор);
		
		Если СсылкаНаОбъектГуид.ПолучитьОбъект() <> Неопределено Тогда
			Возврат Истина;
		КонецЕсли;
	КонецЦикла;
	Возврат Ложь;	
	КонецФункции
   


Создать объект документ или справочник и установить ему свой Уникальный идентификатор
Код 1C v 8.х
 	// ТекGUID = 05dbe824-a4c6-11dd-bf56-00145e3710ab 
 		Попытка
			УникальныйИд = Новый УникальныйИдентификатор(ТекGUID);
		Исключение
			Возврат;
		КонецПопытки;
		КартинкаСпр=БиблиотекаКартинок.Справочник;
		КартинкаДок=БиблиотекаКартинок.Документ;
		СписокВыбора	= Новый СписокЗначений;
		СписокВыбора.Добавить(null,"СПРАВОЧНИКИ");
		Для каждого ЭлементМетаданных Из Метаданные.Справочники Цикл
			Структурка=Новый Структура;
			Структурка.Вставить("Имя",ЭлементМетаданных.Имя);
			Структурка.Вставить("Тип",1);
			СписокВыбора.Добавить(Структурка,ЭлементМетаданных.Синоним,,КартинкаСпр);
		КонецЦикла;
		СписокВыбора.Добавить(null,"ДОКУМЕНТЫ");
		Для каждого ЭлементМетаданных Из Метаданные.Документы Цикл
			Структурка=Новый Структура;
			Структурка.Вставить("Имя",ЭлементМетаданных.Имя);
			Структурка.Вставить("Тип",2);
			СписокВыбора.Добавить(Структурка,ЭлементМетаданных.Синоним,,КартинкаДок);
		КонецЦикла;
		Результат=СписокВыбора.ВыбратьЭлемент("Выберите тип ссылки");
		Если Результат=Неопределено Тогда
			Возврат;
		КонецЕсли;
		Структурка=Результат.Значение;
		Если Структурка=null Тогда
			Возврат;
		КонецЕсли;
		
		НовыйОбъект=Неопределено;
		Если Структурка.Тип=1 Тогда
			Объект=Справочники[Структурка.Имя].СоздатьЭлемент();
			Объект.ОбменДанными.Загрузка=Истина;
			Объект.УстановитьСсылкуНового(Справочники[Структурка.Имя].ПолучитьСсылку(УникальныйИд));
		Иначе
			Объект=Документы[Структурка.Имя].СоздатьДокумент();
			Объект.ОбменДанными.Загрузка=Истина;
			Объект.УстановитьСсылкуНового(Документы[Структурка.Имя].ПолучитьСсылку(УникальныйИд));
		КонецЕсли;
		
		Форма=Объект.ПолучитьФорму();
		Форма.Открыть();
   


Для 1С 7.7 смотрите:
Технология восстановления удаленных объектов или элементов в 1С 7.7

еще можно получить ИдентификаторДокумента при OLE доступе:
Код 1C v 7.x
 Если Док_Источник.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1 Тогда
    Пока Док_Источник.ПолучитьДокумент() = 1 Цикл
Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент());
ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект));

//   Для примера Объект возвращает {"O","0","0","3114","0","0","    258156CB "}, 
//   а ПолучитьИД(объект) = 258156CB
КонецЦикла; 


Еще посмотрите метод:
ЗначениеВСтрокуВнутр(<?>);
Синтаксис:
ЗначениеВСтрокуВнутр(<Объект>)
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
<Объект> - значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава ''Системные процедуры и функции''
Разместил:   Версии: | 7.x | 8.x | 8.2 УП |  Дата:   Прочитано: 292861
 +68 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче
Посмотреть все результаты поиска похожих
Комментарии
Soys
20.03.2024 07:33Комментарий: 92
Soys

Написано что 8.3 есть но при скачивании 8.2 получается.

goldenjohn
27.04.2023 11:09Комментарий: 91
goldenjohn

Не могу найти где ссылка для 8.3?

yhor
21.07.2022 08:21Комментарий: 90
yhor

ExchXML.epf Это типовая обработка "Выгрузка и загрузка данных XML", доработанная, чтобы кнопка "Добавить по списку УИД" появилась.

yhor
21.07.2022 08:09Комментарий: 89
yhor
mr_Zell
17.06.2021 11:22Комментарий: 88
mr_Zell

Здравствуйте! При открытии обработки - форма пустая ЗУП 3.1.17.171

Noob12345
18.03.2021 13:37Комментарий: 87
Noob12345

Подскажите, что делать, если получаю ошибка  "на права" - https://disk.yandex.ru/i/zDxNRfzDbUwbJg

в базу зашел под админом.

Noob12345
18.03.2021 13:23Комментарий: 86
Noob12345

Подскажите, что делать, если получаю ошибка  "на права" - https://disk.yandex.ru/i/zDxNRfzDbUwbJg

в базу зашел под админом.

Иванов1024
26.11.2020 07:44Комментарий: 85
Иванов1024

На 8.3. не работает.

mak118
02.06.2020 10:46Комментарий: 84
mak118

Спасибо огромное спасибо!!! Что есть такая обработка!!!

saw111
17.04.2020 15:00Комментарий: 83
saw111

8,3 не работает! зачем писать что работает?

Bikrash
12.02.2020 11:27Комментарий: 82
Bikrash

Добрый день, подскажите, как "Создать объект документ или справочник и установить ему свой Уникальный идентификатор" - форма открывается, но объект не документ не дает ни изменить ни сохранить

Sensei
02.08.2019 11:56Комментарий: 81
Sensei

Полезная статья. Спасибо!!!

nickms
23.07.2019 09:47Комментарий: 80
nickms

отлично  в комплексной 1.1 работает

NikeDYu
26.03.2019 08:25Комментарий: 79
NikeDYu

круто былоб если реализовать возможность заменять биттые ссылки, на уже имеющиеся объекты в базе, а не только создавать новые )

saniok87
01.02.2019 11:10Комментарий: 78
saniok87

Не открывается на 8.3

Всего 92 на 7 страницах по 15 на каждой странице
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!