8.х Поиск по GUID

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем KalachevDV, 19 сен 2007.

  1. TopicStarter Overlay
    KalachevDV
    Offline

    KalachevDV

    Регистрация:
    19 сен 2007
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Доброго всем времени суток :)
    Стоит задача "синхронизировать" справочники двух конфигураций по GUID. Если нашли (по GUID), отлично... если нет создать копию элемента с GUID элемента источника. И все это нужно делать используя COM. Как найти элемент по GUID? а при надобности присвоить новому элементу другой GUID? Заранее спасибо :)
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Никогда такой проблемой не озадачивался, но советую посмотреть для начала в синтаксис-помощник на тему "УникальныйИдентификатор"...
  3. TopicStarter Overlay
    KalachevDV
    Offline

    KalachevDV

    Регистрация:
    19 сен 2007
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Как найти или присвоить новый GUID в ОДНОЙ конфигурации научился... Не могу сделать это с конфигурацией которая подключенас помощью COM
  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Ну, дык, код в студию, и описание ошибки/проблемы - глядишь чего посоветуют...
  5. TopicStarter Overlay
    KalachevDV
    Offline

    KalachevDV

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

    Код:
    Функция ПолучитьСклад(Склад, COMОбъект)
    НоваяСсылка = ПолучитьСсылку(Склад, COMОбъект);
    Объект = НоваяСсылка.ПолучитьОбъект();
    Если Объект = Неопределено Тогда
    Если Склад.ЭтоГруппа() Тогда
    Объект = COMОбъект.Справочники.Склады.СоздатьГруппу();
    Объект.УстановитьСсылкуНового(НоваяСсылка);
    Попытка
    Объект.Код     = Склад.Код;
    Исключение
    КонецПопытки;
    Объект.Наименование = Склад.Наименование;
    Если Не Склад.Родитель.Пустая() Тогда
    Объект.Родитель = ПолучитьСклад(Склад.Родитель.Ссылка, COMОбъект);
    КонецЕсли;
    Объект.Записать();    
    Иначе
    Объект =  COMОбъект.Справочники.Склады.СоздатьЭлемент();
    Объект.УстановитьСсылкуНового(НоваяСсылка);
    Попытка
    Объект.Код     = Склад.Код;
    Исключение
    КонецПопытки;    
    Если  Не Склад.Родитель.Пустая() Тогда
    Объект.Родитель = ПолучитьСклад(Склад.Родитель, COMОбъект);
    КонецЕсли;
    Объект.Наименование = Склад.Наименование;
    Объект.ВидСклада    = COMОбъект.Перечисления.ВидыСкладов.Розничный;
    Объект.Записать();
    КонецЕсли;    
    КонецЕсли;    
    Возврат Объект.Ссылка;    
    КонецФункции
    
    мож кому пригодиться...

Поделиться этой страницей