helpf.pro
Регистрация

По GUID найти объект базы?

IKSparrow
20.01.2010 10:36Прочитано: 15917
Как в семёрочной базе, обладая уникальным идентификатором объекта, найти его средствами 1С?
Такой же вопрос касается и восьмёрки.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
20.01.2010 11:48Ответ № 1
Для 77 посмотри
ссылка,
и статью

для 8 что-то типо:
Код 1C v 8.х
 Функция ПолучитьСсылку(Ссылка, COMОбъект)
ОбъектМетаДанных = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка));
ПолноеИмяОбъекта = ОбъектМетаДанных.ПолноеИмя();
ТипОбъекта = Лев(ПолноеИмяОбъекта,Найти(ПолноеИмяОбъекта,".")-1);
ИмяОбъекта = ОбъектМетаДанных.Имя;
UUID = COMОбъект.NewObject("УникальныйИдентификатор",Строка(Ссылка.УникальныйИдентификатор()));
Если ТипОбъекта = "Справочник" Тогда
НоваяСсылка = COMОбъект.Справочники[ИмяОбъекта].GetRef(UUID);
КонецЕсли;
Возврат НоваяСсылка;
КонецФункции

//Пример использования
Функция ПолучитьСклад(Склад, COMОбъект)
НоваяСсылка = ПолучитьСсылку(Склад, COMОбъект);
Объект = НоваяСсылка.ПолучитьОбъект();
Если Объект = Неопределено Тогда
Если Склад.ЭтоГруппа() Тогда
Объект = COMОбъект.Справочники.Склады.СоздатьГруппу();
Объект.УстановитьСсылкуНового(НоваяСсылка);
Попытка
Объект.Код = Склад.Код;
Исключение
КонецПопытки;
Объект.Наименование = Склад.Наименование;
Если Не Склад.Родитель.Пустая() Тогда
Объект.Родитель = ПолучитьСклад(Склад.Родитель.Ссылка, COMОбъект);
КонецЕсли;
Объект.Записать();
Иначе
Объект = COMОбъект.Справочники.Склады.СоздатьЭлемент();
Объект.УстановитьСсылкуНового(НоваяСсылка);
Попытка
Объект.Код = Склад.Код;
Исключение
КонецПопытки;
Если Не Склад.Родитель.Пустая() Тогда
Объект.Родитель = ПолучитьСклад(Склад.Родитель, COMОбъект);
КонецЕсли;
Объект.Наименование = Склад.Наименование;
Объект.ВидСклада = COMОбъект.Перечисления.ВидыСкладов.Розничный;
Объект.Записать();
КонецЕсли;
КонецЕсли;
Возврат Объект.Ссылка;
КонецФункции
E_Migachev
20.01.2010 19:52Ответ № 2
Написал статейку Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.