Имя: Пароль:
1C
1С v8
Формирование объекта по UUID
0 OnCheck
 
16.04.12
08:33
Выгрузил объект из одной БД, загружаю в другую. Для создания объекта по UUID написал функцию:

Функция ПолучитьОбъектПоUUID(UUIDСтрока, Тип, Создавать = Ложь)
   Перем Ссылка;
   
   МетаОбъект = Метаданные.НайтиПоТипу(Тип);
   ПолноеИмяОбъекта = МетаОбъект.ПолноеИмя();
   ТипОбъекта = Лев(ПолноеИмяОбъекта,Найти(ПолноеИмяОбъекта,".")-1);
   ИмяОбъекта = МетаОбъект.Имя;

   Если Не UUIDСтрока = "" Тогда
       
       UUID = Новый УникальныйИдентификатор(UUIDСтрока);
       
       Если ТипОбъекта = "Справочник"  Тогда
       
           Ссылка =  Справочники[ИмяОбъекта].ПолучитьСсылку(UUID);
       
       КонецЕсли;
       
   Иначе
       
       Возврат Справочники[ИмяОбъекта].ПустаяСсылка();
   
   КонецЕсли;    
       
   Если ОбъектБДСуществует(Ссылка) Тогда
       
       Возврат Ссылка;
       
   КонецЕсли;
   
   Если Создавать Тогда
       
       Если ТипОбъекта = "Справочник"  Тогда
           
           НоваяСсылка = Ссылка;
           НовыйОбъект = Справочники[ИмяОбъекта].СоздатьЭлемент();
           
       КонецЕсли;
       
       НовыйОбъект.УстановитьСсылкуНового(НоваяСсылка);
       
       Возврат НовыйОбъект;    
       
   КонецЕсли;
   
   Возврат Неопределено;
   
КонецФункции // ПолучитьОбъектПоUUID


но в БД источнике
UUID = 5e600601-844f-11e1-9cff-000a5e4479d7
а в БД приемнике
UUID = 3ea3592b-8776-11e1-afb7-000a5e4479d7

Поясните, пожалуйста, причину?
1 Рэйв
 
16.04.12
08:35
UUIDСтрока пустая
2 Рэйв
 
16.04.12
08:35
оно тогда создает уид по собсвенному разумению
3 OnCheck
 
16.04.12
08:36
нет
4 Лефмихалыч
 
16.04.12
08:36
(3) да
5 Лефмихалыч
 
16.04.12
08:37
+(4) или UUIDСтрока не равна "", но и не содержит ГУИДа
6 OnCheck
 
16.04.12
08:37
(2)(4) проверяю :-)
7 OnCheck
 
16.04.12
08:39
(5) UUIDСтрока = 5e600601-844f-11e1-9cff-000a5e4479d7
она же и не должна содержать GUID, она же UUID строка!
8 OnCheck
 
16.04.12
08:39
+(7) UUIDСтрока = "5e600601-844f-11e1-9cff-000a5e4479d7"
9 OnCheck
 
16.04.12
08:40
любопытен тот факт, что совпадают только 3 и 5 подстроки.
10 Рэйв
 
16.04.12
08:40
(8)что ты тут воздух темпиратуришь?
ты проверь отладчиком, у тебя вообще на

UUID = Новый УникальныйИдентификатор(UUIDСтрока);

заходит?
11 OnCheck
 
16.04.12
08:42
(10) я же говорю что заходит!
12 Рэйв
 
16.04.12
08:43
(11) тогда диагноз ясен.
твоя сстрока в UUIDСтрока - не съедобна для создания нового объекта. Разбирайся
13 OnCheck
 
16.04.12
08:44
(12) UUID же тоже создается!

и Ссылка =  Справочники[ИмяОбъекта].ПолучитьСсылку(UUID) отрабатывает
14 Рэйв
 
16.04.12
08:47
(13)она отрабатывает ВСЕГДА. Только вот если правильно, то на текущую ссылку позиционируеися. а если не правильно - считает это новой ссылкой.
15 Лефмихалыч
 
16.04.12
08:54
Кэш конфигурации продуй
16 OnCheck
 
16.04.12
09:19
(15) продул - не помогло
17 OnCheck
 
16.04.12
09:40
вот еще что:
встаю отладчиком на

НовыйОбъект.УстановитьСсылкуНового(НоваяСсылка)

смотрю что в НоваяСсылка, там

НоваяСсылка    |<Объект не найден> (94:9cff000a5e4479d711e1844f5e600601)    |СправочникСсылка.ПодразделенияОрганизаций


но в НовыйОбъект.Ссылка пусто, а в
НовыйОбъект.Ссылка.УникальныйИдентификатор()    |00000000-0000-0000-0000-000000000000    |УникальныйИдентификатор

но ГУИД тот что нужно, затем для полученного объекта заполняю реквизиты, а так же владельца и родителя, сохраняю, тут генерится новый ГУИД интересен тот факт, что 3 и 5 подстроки равнй исходному UUID.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан