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

1. 18.01.18 11:11 Сейчас в теме
Ну, собственно вопрос в теме..
Как получить УникальныйИдентификатор документа через COM соединение?
Найденные решения
2. ediks 332 18.01.18 11:20 Сейчас в теме
(1) Так подойдет?

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

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

КонецФункции // ПолучитьГУИД()
Показать
It-developer; cargobird; awp234; selmorn; lemilk; Slypower; user1188623; ivanek; cwant; Legavaz; improg; +11 Ответить
13. spacecraft 19.01.18 08:55 Сейчас в теме
(12) посмотреть, какой тип у ВнешнийДОк и понять, что это не ДокументОбъект.
Уи = ВНешБаза.XMLСтрока(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());
Nicholas; Andrei_Ivanov; maxst22; SlavaKron; +4 Ответить
14. herfis 427 19.01.18 12:21 Сейчас в теме
(12) Во-первых, метод УникальныйИдентификатор() есть у типа "ДокументСсылка" и отсутствует у типа "ДокументОбъект".
Во-вторых, при работе через COM строковые представления объектов базы-корреспондента и получать нужно на стороне базы-корреспондента.
ВнешнийДОк= ВНешБаза.Документы.МойДокумент.НайтиПоНомеру();
УИ = ВНешБаза.String(ВнешнийДОк.УникальныйИдентификатор());

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

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

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

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

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

Но лучше, конечно же, как в (13)
yaroslav.artem; +1 Ответить
15. user1255751 20.07.19 11:56 Сейчас в теме
Уважаемые программисты.
Мне нужно идентифицировать с помощью GUID три файла. Помогите, кто это может сделать. Не безвозмездно.
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист 1С
Новосибирск
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Администратор 1C
Москва
зарплата до 110 000 руб.
Полный день

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

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

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству