Имя: Пароль:
1C
1С v8
В базе Приемнике не создается новый документ с заданным GUID
0 smpulan
 
17.08.15
17:11
Поиск по форуму, как и google, не внес ясности почему у нового документа изменяется guid.
В общих чертах задача в следующем:
На стороне базы источника создается com-соединение к базе приемнику. В базе приемнике создается новый документ и ему назначется guid из документа базы источника. При записи документ guid не соответствует заданному.
Код следующий:
Ссылка1=Документы.ТребованиеНакладная.ПолучитьСсылку(Док.УникальныйИдентификатор());
Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент();
Требование.GetNewObjectRef(Ссылка1);

Guid из базы источника: "6c4bf88f-f968-11e4-b33d-005056b53fa3"    
После записи в базе приемнике: "b5a788c9-44e9-11e5-b5c7-005056b53fa3"
1 GreatOne
 
17.08.15
17:16
не выпендривайся и пиши по русски.
Не получить, а установить
2 Зеленый пень
 
17.08.15
17:16
Ссылка1=СоединениеCOM.Документы.ТребованиеНакладная.ПолучитьСсылку(Док.УникальныйИдентификатор());
3 arccos6pi
 
17.08.15
17:37
(0)
Ссылка1=Документы.ТребованиеНакладная.ПолучитьСсылку(Док.УникальныйИдентификатор());
Guid = СоединениеCOM.NEWObject("Запрос",Строка(Ссылка1));
Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент();
Требование.GetNewObjectRef(Guid);
4 arccos6pi
 
17.08.15
17:38
Ссылка1=Документы.ТребованиеНакладная.ПолучитьСсылку(Док.УникальныйИдентификатор());
Guid = СоединениеCOM.NEWObject("УникальныйИдентификатор",Строка(Ссылка1));
Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент();
Требование.GetNewObjectRef(Guid);
5 smpulan
 
18.08.15
09:27
(4) не работает, ошибка во 2-й строке, туда надо передавать УИД, а не ссылку на документ.
Распишу проблему более подробно:
1) Из базы А я подключаюсь к базе Б.
2) Получаю УИД документа из базы А.
3) В базе Б создаю документ и присваиваю ему УИД документа из базы А.
4) После записи УИД у созданного документа в базе Б изменяется, одинаковыми остаются только последние 12 символов.
Пример:
Guid из базы источника: "6c4bf88f-f968-11e4-b33d-005056b53fa3"    
После записи в базе приемнике: "b5a788c9-44e9-11e5-b5c7-005056b53fa3"

Собственно сам код:
Guid = СоединениеCOM.NEWObject("УникальныйИдентификатор",Строка(Док.УникальныйИдентификатор())); //УИД документа из базы А "6c4bf88f-f968-11e4-b33d-005056b53fa3"
Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент();//Создаем документ в базе Б
Требование.GetNewObjectRef(Guid); //Устанавливаем УИД для документа в базе Б "6c4bf88f-f968-11e4-b33d-005056b53fa3"
Требование.Записать();
//УИД изменился на "b5a788c9-44e9-11e5-b5c7-005056b53fa3"

В чем ошибка?
6 hhhh
 
18.08.15
09:51
а разве не так надо?

Требование.GetNewObjectRef(СоединениеCOM.Документы.ТребованиеНакладная.ПолучитьСсылку(Guid));//Устанавливаем УИД для документа в базе Б "6c4bf88f-f968-11e4-b33d-005056b53fa3"
7 mogul
 
18.08.15
09:58
В (1) же уже написано: не получить, а установить:

Требование.УстановитьСсылкуНового(Ссылка1);
8 smpulan
 
18.08.15
10:15
(6) Тоже самое, УИД изменился.
Guid = СоединениеCOM.NEWObject("УникальныйИдентификатор",Строка(Док.УникальныйИдентификатор()));//УИД документа из базы А "6c4bf88f-f968-11e4-b33d-005056b53fa3"

Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент()//Создаем документ в базе Б

Требование.GetNewObjectRef(СоединениеCOM.Документы.ТребованиеНакладная.ПолучитьСсылку(Guid));//Устанавливаем УИД для документа в базе Б "6c4bf88f-f968-11e4-b33d-005056b53fa3"

Требование.Записать();
//УИД изменился на "b5a788c9-44e9-11e5-b5c7-005056b53fa3"

(7)Требование - это com-объект созданный в базе Б
Ссылка1=Док.Ссылка; //Ссылка на документ в базе А, его УИД надо присвоить новому документу в базе Б
//Ссылка1=СоединениеCOM.NewObject("УникальныйИдентификатор","6c4bf88f-f968-11e4-b33d-005056b53fa3");
Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент(); // надо установить УИД "6c4bf88f-f968-11e4-b33d-005056b53fa3"
//Требование.GetNewObjectRef(Ссылка1);
Требование.УстановитьСсылкуНового(Ссылка1); //ошибка несоответсвует параметр 1.
9 smpulan
 
18.08.15
10:45
В общем разобрался, тему можно закрывать. Может кому пригодиться:
//Получаем тип в базе приемнике
Сом_Тип = СоединениеCOM.NewObject("ОписаниеТипов", "ДокументСсылка.ТребованиеНакладная").Типы().Получить(0);
//Создаем новый документ в базе приемнике
Требование = СоединениеCOM.Документы.ТребованиеНакладная.СоздатьДокумент();
//Формируем ссылку источника в базе приемнике
СсылкаИсточник = СоединениеCOM.XMLЗначение(Сом_Тип, XMLСтрока(Док.Ссылка));
//Устанавливаем УИД источника для нового документа в базе приемнике
Требование.УстановитьСсылкуНового(СсылкаИсточник);