Получить УИД по ком объекту

1. Petrovichka 17.12.13 19:17 Сейчас в теме
Есть две базы. В первой запускаю обработку, которая соединяется по ком соединению со второй и выбирает нужные документы. Далее эти документы перебираю, делаю определенные действия (не важно какие), и в процессе перебора мне нужно получить УИД документа, который был получен по ком соединению из второй базы.
Пишу так
ВыборкаДокумент.Ссылка.UUID()
Мне возвращает естественно COMОбъект. Как мне получить значение полученного УИДа по сом соединению?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Восьмой 88 17.12.13 19:35 Сейчас в теме
(1) Petrovichka, как выборку формируешь? через таблицу значений или через методы комОбъекта?
в принципе как вариант в модуле документа второй базы забить экспортную функцию для этих целей и вызывать ее как метод объекта, вобщем что-то вроде этого на вскидку.
3. Petrovichka 17.12.13 19:40 Сейчас в теме
(2) Восьмой, Формирую так:
V82 = Новый COMObject ("V82.COMConnector");
Соединение82 = V82.Connect("Srvr="+СокрЛП(Сервер)+";Ref="+СокрЛП(ИмяБазы)+"; Usr="+СокрЛП(ИмяПользователя)+"; Pwd="+Пароль+";");
ЗапросСоединение = Соединение82 .NewObject("ПостроительЗапроса");
ЗапросСоединение.Текст = //запрос по документам
ЗапросСоединение.Выполнить();
ВыборкаДокумент = ЗапросСоединение.Результат.Выбрать(Соединение82 .ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаДокумент.Следующий() Цикл
//тут мне нужно получить значение УИДа
КонецЦикла;

Нужно делать все в первой базе.
И какой смысл создавать экспортную процедуру во второй базе? Если я к ней и достучусь, то все равно на выходе получу COMОбъект. Что вы предлагаете, чтобы эта процедура делала и как она мне поможет в получении УИДа?
4. Восьмой 88 17.12.13 20:01 Сейчас в теме
(3)Секундочку щас у себя протестю, чтобы на верняка, давно не игрался с комами.
5. Восьмой 88 17.12.13 20:21 Сейчас в теме
(3) Petrovichka, Вобщем смотри тут какая ситуация - из комОбъекта в нормальном виде возвращаются только примитивные типы, метод УникальныйИдентификатор() возвращает прикладной тип УникальныйИдентификатор поэтому в COMе он всегда интерпретируется как комОбъект. Получение объекта типа УникальныйИдентификатор из второй базы, для первой базы не имеет никакого смысла в принципе, поэтому смысл есть только в получении представлении ссылки. Поэтому если тебе нужно получить строковое представление ссылки из Второй базы то нужно в ней расширить контекст методов объекта - в твоем случае это документ в моем справочник - методом который будет тебе возвращать примитивный тип (Строка) со строковым представлением GUID. . У меня во второй базе вот такая тема в модуле объекта справочника:
Функция СообщитьСсылку() Экспорт
Возврат Строка(ЭтотОбъект.Ссылка.УникальныйИдентификатор());
КонецФункции;


и когда я из первой базы стучусь к этому методу то выглядит это так:
V82 = Новый COMObject ("V82.COMConnector");
Соединение82 = V82.Connect("File=""\\meridian.ru\dfs\UserFolders\SSedyshev\Мои документы\InfoBase3""");
ЗапросСоединение = Соединение82.NewObject("Запрос");
ЗапросСоединение.Текст = " ВЫБРАТЬ
|Справочник1.Наименование, Справочник1.Ссылка
|ИЗ
|Справочник.Справочник1 КАК Справочник1";
Результат = ЗапросСоединение.Выполнить().Выбрать();
//ЗапросСоединение.Execute
Пока Результат.Следующий() Цикл
Сообщить(Результат.Наименование);
Сообщить(Результат.Ссылка.ПолучитьОбъект().СообщитьСсылку());
КонецЦикла;
Показать


Но ИМХО напрямую управлять данными через COM это очень не кашерно, правильней использовать экспортные процедуры общих модулей ВнешнегоСоединения у COMОбъекта которые и манипулируют данными на основании параметров переданных в COM изВне.
Allexe8.1; +1 Ответить
9. zhuravlev_as 395 22.09.15 13:09 Сейчас в теме
(5) Восьмой, я пример Вашей функции закинул в новый общий модуль, например "Дополнительный". Поэтому через com-соединение обращаюсь к ней

Соединение.Дополнительный.СообщитьСсылку(ComОбъект)


В функцию передаю COMОбъект. А функцию немного изменил:

Функция СообщитьСсылку(Ссылка) Экспорт 
Возврат Строка(Ссылка.УникальныйИдентификатор());	
КонецФункции; 


Без претензий. Просто типовой код так не меняется. Может кому-то и такой вариант подойдет
6. valafan 119 18.12.13 15:21 Сейчас в теме
УИД = Соединение82.XMLСтрока(ВыборкаДокумент.Ссылка);
KirinaAS; Yury1001; bbbsss; user1282533; Izumov; avert; romankoav; de0nis; Manticor; researcher01; AndE; maljaev; pioneeer; nikonorov_ag; Invodev; Stan; olo_lo4; Wo0dV0rd258; Derek777; simgo83; Khalimon; INTECH1; Sergafan10; Программулькин; Отованец; ilyanet; Yan_Malyakov; scarabey2006; krenchik; Puhov2112; Maruska77; vita8383; Ryukenden; e-9; rolin555; Alien_RS_Forever; gravitator; FarFar; shevelyov; Paradox197755; klmop; scherbyna; acanta; ЧерныйКот; SmArtist; fortorgpro; savauu; dr_dom; piton66; cargobird; user873205; user705522_constantin_h; andogskiy; Anchoret; sommid; mskamrakova; twin; Восьмой; +58 Ответить
7. Восьмой 88 18.12.13 15:26 Сейчас в теме
(6) valafan, не знал что так можно, спасибо!
8. Petrovichka 18.12.13 16:50 Сейчас в теме
(6) valafan, Спасибо, помогло.
10. andogskiy 12.03.18 19:43 Сейчас в теме
(6) Спасибо, пригодилось.
11. logarifm 1119 19.06.18 10:34 Сейчас в теме
СтрокаУникКод = Base_COM.String(Выборка.Номенклатура.УникальныйИдентификатор());
Manticor; HIVvich; starik-2005; pioneeer; Derek777; kgp; gravitator; +7 Ответить
12. acanta 23.09.18 01:53 Сейчас в теме
А в запросе это возможно? Получить строку xmlстрока от ссылки в результате запроса в базе, вызванной по ком соединению?
13. Восьмой 88 24.09.18 07:23 Сейчас в теме
14. Восьмой 88 24.09.18 07:23 Сейчас в теме
Только если специально заведете регистр куда будете писать ссылку и запросом соединять.
Derek777; acanta; +2 Ответить
15. alx7304 19.07.19 16:39 Сейчас в теме
Запрос = Подключение.NewObject("Запрос");
...................
РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Для Каждого СтрокаРезультатЗапроса Из РезультатЗапроса Цикл
СтрокаТЗ = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ, СтрокаРезультатЗапроса);
СтрокаТЗ.УИД = Подключение.String(СтрокаРезультатЗапроса.Ссылка.УникальныйИдентификатор());
КонецЦикла;
starik-2005; pioneeer; Derek777; +3 Ответить
16. Restart 30.01.22 12:46 Сейчас в теме
(6)

УИД = Соединение82.XMLString(ВыборкаДокумент.Ссылка);
Manticor; Восьмой; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот