Проект

Общее

Профиль

Соответствие объектов информационных баз

Поиск объекта через соответствие по идентификатору в РегистрСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов

&НаСервереБезКонтекста
Функция НайтиСсылкуПоПубличномуИдентификатору(УИДОбъектаXDTO, УзелКорреспондента, ТипЗначенияОбъектаИБ)

    Если Не ЗначениеЗаполнено(УзелКорреспондента) Тогда
        Возврат Неопределено;
    КонецЕсли;

    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    РПИ.Ссылка КАК Ссылка
    |ИЗ
    |    РегистрСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов КАК РПИ
    |ГДЕ
    |    РПИ.УзелИнформационнойБазы = &УзелИнформационнойБазы
    |    И РПИ.Идентификатор = &Идентификатор");
    Запрос.УстановитьПараметр("УзелИнформационнойБазы", УзелКорреспондента);
    Запрос.УстановитьПараметр("Идентификатор",          УИДОбъектаXDTO);

    НайденнаяСсылка    = Неопределено;

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл

        Если ТипЗнч(Выборка.Ссылка) <> ТипЗначенияОбъектаИБ Тогда
            Продолжить;
        КонецЕсли;

        НайденнаяСсылка = Выборка.Ссылка;
        Прервать;

    КонецЦикла;

    Возврат НайденнаяСсылка;

КонецФункции

&НаСервере
Функция ПолучитьНоменклатуруПоGUID(СтрокаGUID)

    Рез = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаGUID));

    Если ПустаяСтрока(Рез.ВерсияДанных) Тогда
        Рез = НайтиСсылкуПоПубличномуИдентификатору(СтрокаGUID, Объект.УзелКорреспондента, Тип("СправочникСсылка.Номенклатура"));
    КонецЕсли;    

    Возврат Рез;

КонецФункции