Получить GUID через COM

1. yaroslav.artem 18.01.18 11:11 Сейчас в теме
Ну, собственно вопрос в теме..
Как получить УникальныйИдентификатор документа через COM соединение?
По теме из базы знаний
Найденные решения
13. spacecraft 19.01.18 08:55 Сейчас в теме
(12) посмотреть, какой тип у ВнешнийДОк и понять, что это не ДокументОбъект.
Уи = ВНешБаза.XMLСтрока(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());
mikl79; eufes; Nicholas; Andrei_Ivanov; maxst22; SlavaKron; +6 Ответить
14. herfis 485 19.01.18 12:21 Сейчас в теме
(12) Во-первых, метод УникальныйИдентификатор() есть у типа "ДокументСсылка" и отсутствует у типа "ДокументОбъект".
Во-вторых, при работе через COM строковые представления объектов базы-корреспондента и получать нужно на стороне базы-корреспондента.
ВнешнийДОк= ВНешБаза.Документы.МойДокумент.НайтиПоНомеру();
УИ = ВНешБаза.String(ВнешнийДОк.УникальныйИдентификатор());

Но лучше, конечно же, как в (13)
wolovits; yaroslav.artem; +2 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ediks 335 18.01.18 11:20 Сейчас в теме
(1) Так подойдет?

// Возвращает ГУИД документа
//
// Параметры
//  <пСсылка>  - <ДокументСсылка> - ссылка на документ Ком соединения
//  <пВнешняяБаза>  - <COM-соединение> - внешнее соединение
//
// Возвращаемое значение:
//   <Строка>   - строковое представление ГУИД
//
Функция ПолучитьГУИДОбъектаВнешнегоСоединения(пВнешняяБаза, пСсылка)

	УИД = пВнешняяБаза.String(пСсылка.UUID()); 
	Возврат пВнешняяБаза.String(УИД); 

КонецФункции // ПолучитьГУИД()
Показать
ST01; mikl79; olexi2012; user1252779; BAMPER; It-developer; cargobird; awp234; selmorn; lemilk; Slypower; user1188623; ivanek; cwant; Legavaz; improg; +16 Ответить
3. DenisCh 18.01.18 11:31 Сейчас в теме
(2)
Возврат пВнешняяБаза.String(УИД);

Я бы лучше сказал XMLString()...
OAC_soft; eufes; +2 Ответить
4. ediks 335 18.01.18 12:20 Сейчас в теме
(3) В данном случае - без разницы. XMLСтрока для УникальногоИдентификатора возвращает строковое представление уникального идентификатора. То же самое, вид сбоку.
(1) посмотрите мою обработку - там все эти функции есть.
5. SlavaKron 18.01.18 15:38 Сейчас в теме
(4)XMLСтрока работает быстрее.
6. ediks 335 18.01.18 15:52 Сейчас в теме
(5) Есть какие-то подтверждения, ссылки?
9. SlavaKron 18.01.18 16:36 Сейчас в теме
(6) 27 секунд против 133.
Прикрепленные файлы:
ШаблонКом.epf
10. ediks 335 18.01.18 17:30 Сейчас в теме
(6) Давайте сравнивать одинаковые вещи, как у меня на картинке. Согласен, что сериализация XMLСтрока(КомСтр.Регистратор) происходит намного быстрее, чем XMLСтрока(КомСтр.Регистратор.УникальныйИдентификатор()) или String(КомСтр.Регистратор.УникальныйИдентификатор()). Очевидно, значительное время тратится на выполнение метода УникальныйИдентификатор().
Прикрепленные файлы:
16. improg 519 30.08.19 12:39 Сейчас в теме
8. herfis 485 18.01.18 16:30 Сейчас в теме
Плюс XMLСтрока - это сериализация по установленным правилам, а Строка() - просто строковое представление. Хоть на практике этот момент и не играет роли, но завязывать алгоритмы на представления - непрофессионально. Прецеденты их изменений между версиями 1С уже были.
11. ediks 335 18.01.18 17:47 Сейчас в теме
Сейчас проверил - XMLСтрока(КомСтр.Регистратор) будет правильным ответом, ибо возвращается то же строковое представление уникального идентификатора.
12. yaroslav.artem 19.01.18 05:19 Сейчас в теме
Не работает, ничего не понимаю((
Делаю так:
ВнешнийДОк= ВНешБаза.Документы.МойДокумент.НайтиПоНомеру().ПолучитьОбъект();
УИ = Строка(ВнешнийДОк.УникальныйИдентификатор());//по итогу болт..ничего нет
13. spacecraft 19.01.18 08:55 Сейчас в теме
(12) посмотреть, какой тип у ВнешнийДОк и понять, что это не ДокументОбъект.
Уи = ВНешБаза.XMLСтрока(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());
mikl79; eufes; Nicholas; Andrei_Ivanov; maxst22; SlavaKron; +6 Ответить
17. OAC_soft 01.03.22 08:52 Сейчас в теме
(13)
Уи = ВНешБаза.XMLСтрока(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());


на некоторых версиях столкнулся с противоречием, которое разрешается чуть другой строкой, не любит русские имена

Уи = ВНешБаза.XMLString(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());
14. herfis 485 19.01.18 12:21 Сейчас в теме
(12) Во-первых, метод УникальныйИдентификатор() есть у типа "ДокументСсылка" и отсутствует у типа "ДокументОбъект".
Во-вторых, при работе через COM строковые представления объектов базы-корреспондента и получать нужно на стороне базы-корреспондента.
ВнешнийДОк= ВНешБаза.Документы.МойДокумент.НайтиПоНомеру();
УИ = ВНешБаза.String(ВнешнийДОк.УникальныйИдентификатор());

Но лучше, конечно же, как в (13)
wolovits; yaroslav.artem; +2 Ответить
15. user1255751 20.07.19 11:56 Сейчас в теме
Уважаемые программисты.
Мне нужно идентифицировать с помощью GUID три файла. Помогите, кто это может сделать. Не безвозмездно.
18. user1400997 18.05.23 18:04 Сейчас в теме
Есть различие, в случае когда Ссылка это удаленный объект во внешней базе в этом случае ВнешняяБаза.String(Ссылкаа.UUID()) отработает, а XMLСтрока вызовет ошибку.
19. SlavaKron 18.05.23 19:22 Сейчас в теме
(18) Вот это
ВнешняяБаза.String(Ссылка.UUID()) 
в разы медленнее, чем
ВнешняяБаза.XMLСтрока(Ссылка)
уже 100 раз обмусолено. Приведите доказательство, что последний вариант вызывает ошибку.
20. user1400997 19.05.23 15:27 Сейчас в теме
(19)
XMLСтрока

Могу описать ситуацию, в которой у меня вызывает ошибку метод XMLСтрока. Делаю выборку из таблицы изменений документа, подключение к внешней базе через COM. Когда ссылка удалена во внешней базе, но естественно остались записи в таблице изменений по такой ссылке. При использовании метода XMLСтрока будет ошибка, если не верите, проверьте. Версия платформы 8.3.20.2180
Мой коммент не про скорость выполнения методов, а про ошибку.
21. spacecraft 19.05.23 16:22 Сейчас в теме
(20) что-то не то делаете. Все должно отрабатывать.
Попробуйте:
Соединитель = Новый COMОбъект("V83.COMConnector");
Соединение = Соединитель.connect(СтрокаСоединения);
Ссылка = Соединение.Справочники.Номенклатура.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор"));
Сообщить(Соединение.XMLСтрока(Ссылка));

Пример получение XMLСтрока по битой ссылке отрабатывает.
8.3.22.1750. Режим совместимости: Версия 8.3.20
Оставьте свое сообщение
Вакансии
Разработчик 1С
Ростов-на-Дону
зарплата от 230 000 руб. до 260 000 руб.
Полный день

Консультант 1С ERP
Москва
зарплата от 200 000 руб. до 250 000 руб.
Полный день

Аналитик 1C
Самара
зарплата от 160 000 руб. до 180 000 руб.
Полный день

Старший программист 1С
Москва
зарплата от 120 000 руб. до 250 000 руб.
Полный день

Аналитик 1С
Казань
зарплата от 200 000 руб. до 250 000 руб.
Полный день