poisk_ssylki_ljubogo_tipa_po_guid_giud

Функция НайтиСсылкуПоУИД(знач УИД) Экспорт
    
    ЭтоМассив = ТипЗнч(УИД) = Тип("Массив");
    
    МассивУидов = Новый Массив;
    Если ЭтоМассив Тогда
        МассивУидов = УИД;
    Иначе
        МассивУидов.Добавить(УИД);
    КонецЕсли;
    
	Результат = Неопределено;
    
    МассивМетаданных = Новый Массив;    
	МассивМетаданных.Добавить(Справочники);
	МассивМетаданных.Добавить(Документы);
	МассивМетаданных.Добавить(ПланыВидовХарактеристик);
	МассивМетаданных.Добавить(ПланыСчетов);
	МассивМетаданных.Добавить(ПланыВидовРасчета);
	МассивМетаданных.Добавить(ПланыОбмена);
	МассивМетаданных.Добавить(БизнесПроцессы);
	МассивМетаданных.Добавить(Задачи);
    
    МассивТипов = Новый Массив; 
    
    Для Каждого СтрМетаданное Из МассивМетаданных Цикл
        Для Каждого Стр Из СтрМетаданное.ТипВсеСсылки().Типы() Цикл
            МассивТипов.Добавить(Стр);
        КонецЦикла;
    КонецЦикла;
        
    ТаблицаСсылок = Новый ТаблицаЗначений;
    ТаблицаСсылок.Колонки.Добавить("УИД"    , Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(36)));
    ТаблицаСсылок.Колонки.Добавить("Ссылка" , Новый ОписаниеТипов(МассивТипов));
    
    Для Каждого СтрМетаданное Из МассивМетаданных Цикл
        Для Каждого Менеджер Из СтрМетаданное Цикл   
            Для Каждого СтрУИД Из МассивУидов Цикл
                Попытка
                    НовСтр = ТаблицаСсылок.Добавить();
                    НовСтр.Ссылка = Менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрУИД));
                    НовСтр.УИД    = СтрУИД;
                Исключение
                КонецПопытки;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
            
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ТаблицаСсылок.Ссылка КАК Ссылка,
        |   ТаблицаСсылок.УИД КАК УИД
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |   &ТаблицаСсылок КАК ТаблицаСсылок
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |   ВТ.Ссылка КАК Ссылка,
        |   ВТ.УИД КАК УИД
        |ИЗ
        |   ВТ КАК ВТ
        |ГДЕ
        |   НЕ ВТ.Ссылка.ПометкаУдаления ЕСТЬ NULL";
    
    Запрос.УстановитьПараметр("ТаблицаСсылок",ТаблицаСсылок);
    РезультатЗапроса = Запрос.Выполнить();
    
    Если Не РезультатЗапроса.Пустой() Тогда
        Если ЭтоМассив Тогда
            Результат = РезультатЗапроса.Выгрузить(); 
        Иначе
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
            ВыборкаДетальныеЗаписи.Следующий();
            
            Результат = ВыборкаДетальныеЗаписи.Ссылка;
        КонецЕсли;
    КонецЕсли;
    
	Возврат Результат;
		
КонецФункции // НайтиСсылкуПоУИД
  • /sites/data/pages/poisk_ssylki_ljubogo_tipa_po_guid_giud.txt
  • Последнее изменение: 2021/07/21 07:17
  • tro