Имя: Пароль:
1C
1С v8
Ссылка по GUIDу в COMConnector
0 sound
 
13.02.12
14:30
Нашел ссылку Книга знаний: v8: Получение ссылки по GUIDу в COMConnector. Хочу по GUIDу из одной базы обновить/создать документ в другой базе, то что по ссылке подойдет для этой задачи? На код не ругается, но и документы не создает и не обновляет:



   Попытка
       ComConnector = New ComObject("V82.ComConnector");
       СтрокаКоннекта    = "Srvr=10.10.1.15;Ref=Copy;Usr=""user123"";pwd=""123""";
       ВнешняяБаза = ComConnector.Connect(СтрокаКоннекта);
   Исключение
       Сообщить("Неудачная попытка соединения!", СтатусСообщения.Важное);
       Возврат;
   КонецПопытки;
   
   СсылкаНаОбъект    = Документы.АвансовыйОтчет.НайтиПоНомеру("СВР0014", '20120210142003');
   ИмяДокумента    = СсылкаНаОбъект.Метаданные().Имя;
   ГУИД            = Строка(СсылкаНаОбъект.УникальныйИдентификатор());
   
   МД = ВнешняяБаза.XMLTypeOf(ВнешняяБаза.Документы[ИмяДокумента].ПустаяСсылка());
   Попытка
       тСсылка = ВнешняяБаза.XMLValue(ВнешняяБаза.FromXMLType(МД), ГУИД);
   Исключение
       Сообщить("COM: " + ОписаниеОшибки());
       Возврат;
   КонецПопытки;    
   тОбъект = тСсылка.ПолучитьОбъект();
   ЗаписьXML = ВнешняяБаза.NewObject("ЗаписьXML");
   ЗаписьXML.УстановитьСтроку();
   ВнешняяБаза.WriteXML(ЗаписьXML, тОбъект);
   тСтрXML = ЗаписьXML.Закрыть();


Подскажите что не так?
1 ЧеловекДуши
 
13.02.12
14:32
Нет строчки, ...Записать();...,
2 sound
 
13.02.12
14:36
(1) Такой строчки: тОбъект.Записать();? Но если в базе нет документа с таким гуидом, он не создается. Как сделать чтобы документ "переписывался" если он есть и создавался если его нет?
3 sound
 
13.02.12
14:51
Блин помогайте кто-нибудь ааа
4 ЧеловекДуши
 
13.02.12
14:53
(2) Если нет с таким гуидом, то создать новый, заполнить.
5 ЧеловекДуши
 
13.02.12
14:53
+ Если нашёлся, то перезаполни :)
6 DosWinXP
 
13.02.12
15:00

МД = ВнешняяБаза.XMLTypeOf(ВнешняяБаза.Документы[ИмяДокумента].ПустаяСсылка());
тСсылка = МД;
Попытка
  тСсылка = ВнешняяБаза.XMLValue(ВнешняяБаза.FromXMLType(МД), ГУИД);
Исключение
  Сообщить("COM: " + ОписаниеОшибки());
  Возврат;
КонецПопытки;    
Если тСсылка = МД Тогда
  тОбъект = ВнешняяБаза.Документы[ИмяДокумента].СоздатьДокумент();
Иначе
  тОбъект = тСсылка.ПолучитьОбъект();
КонецЕсли;

// перезаполнение данных...

тОбъект.Записать();

7 sound
 
13.02.12
15:01
(6) То есть двумя строчками документ не перебросить?
8 sound
 
13.02.12
15:02
+7 это про перезаполнение данных