Получить GUID через COM
По теме из базы знаний
- Перенос элементов справочника между базами данных 1С 8.1 через COM с сохранением внутреннего идентификатора
- Запуск COM-Объекта 1С 7.7 или 1С 8.х в виде "УДАЛЕННОГО COM+" (как Решение проблемы запуска COM 32-бит внутри 64-бит приложения, так и проблем разных версий движка 8.х)
- .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия
- Как формируется GUID?
- Перенос кассовых документов из УТ 11.4 в БП 3.0 через СОМ-соединение. (Внешняя обработка, запускаемая в базе-источнике). Механизм переноса GUID документа в базу получатель.
Найденные решения
(12) Во-первых, метод УникальныйИдентификатор() есть у типа "ДокументСсылка" и отсутствует у типа "ДокументОбъект".
Во-вторых, при работе через COM строковые представления объектов базы-корреспондента и получать нужно на стороне базы-корреспондента.
Но лучше, конечно же, как в (13)
Во-вторых, при работе через COM строковые представления объектов базы-корреспондента и получать нужно на стороне базы-корреспондента.
ВнешнийДОк= ВНешБаза.Документы.МойДокумент.НайтиПоНомеру();
УИ = ВНешБаза.String(ВнешнийДОк.УникальныйИдентификатор());
Но лучше, конечно же, как в (13)
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) Так подойдет?
// Возвращает ГУИД документа
//
// Параметры
// <пСсылка> - <ДокументСсылка> - ссылка на документ Ком соединения
// <пВнешняяБаза> - <COM-соединение> - внешнее соединение
//
// Возвращаемое значение:
// <Строка> - строковое представление ГУИД
//
Функция ПолучитьГУИДОбъектаВнешнегоСоединения(пВнешняяБаза, пСсылка)
УИД = пВнешняяБаза.String(пСсылка.UUID());
Возврат пВнешняяБаза.String(УИД);
КонецФункции // ПолучитьГУИД()
Показать
(6) Давайте сравнивать одинаковые вещи, как у меня на картинке. Согласен, что сериализация XMLСтрока(КомСтр.Регистратор) происходит намного быстрее, чем XMLСтрока(КомСтр.Регистратор.УникальныйИдентификатор()) или String(КомСтр.Регистратор.УникальныйИдентификатор()). Очевидно, значительное время тратится на выполнение метода УникальныйИдентификатор().
Прикрепленные файлы:
Плюс XMLСтрока - это сериализация по установленным правилам, а Строка() - просто строковое представление. Хоть на практике этот момент и не играет роли, но завязывать алгоритмы на представления - непрофессионально. Прецеденты их изменений между версиями 1С уже были.
(13)
на некоторых версиях столкнулся с противоречием, которое разрешается чуть другой строкой, не любит русские имена
Уи = ВНешБаза.XMLString(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());
Уи = ВНешБаза.XMLСтрока(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());
на некоторых версиях столкнулся с противоречием, которое разрешается чуть другой строкой, не любит русские имена
Уи = ВНешБаза.XMLString(ВНешБаза.Документы.МойДокумент.НайтиПоНомеру());
(12) Во-первых, метод УникальныйИдентификатор() есть у типа "ДокументСсылка" и отсутствует у типа "ДокументОбъект".
Во-вторых, при работе через COM строковые представления объектов базы-корреспондента и получать нужно на стороне базы-корреспондента.
Но лучше, конечно же, как в (13)
Во-вторых, при работе через COM строковые представления объектов базы-корреспондента и получать нужно на стороне базы-корреспондента.
ВнешнийДОк= ВНешБаза.Документы.МойДокумент.НайтиПоНомеру();
УИ = ВНешБаза.String(ВнешнийДОк.УникальныйИдентификатор());
Но лучше, конечно же, как в (13)
(19)
Могу описать ситуацию, в которой у меня вызывает ошибку метод XMLСтрока. Делаю выборку из таблицы изменений документа, подключение к внешней базе через COM. Когда ссылка удалена во внешней базе, но естественно остались записи в таблице изменений по такой ссылке. При использовании метода XMLСтрока будет ошибка, если не верите, проверьте. Версия платформы 8.3.20.2180
Мой коммент не про скорость выполнения методов, а про ошибку.
XMLСтрока
Могу описать ситуацию, в которой у меня вызывает ошибку метод XMLСтрока. Делаю выборку из таблицы изменений документа, подключение к внешней базе через COM. Когда ссылка удалена во внешней базе, но естественно остались записи в таблице изменений по такой ссылке. При использовании метода XMLСтрока будет ошибка, если не верите, проверьте. Версия платформы 8.3.20.2180
Мой коммент не про скорость выполнения методов, а про ошибку.
(20) что-то не то делаете. Все должно отрабатывать.
Попробуйте:
Пример получение XMLСтрока по битой ссылке отрабатывает.
8.3.22.1750. Режим совместимости: Версия 8.3.20
Попробуйте:
Соединитель = Новый COMОбъект("V83.COMConnector");
Соединение = Соединитель.connect(СтрокаСоединения);
Ссылка = Соединение.Справочники.Номенклатура.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор"));
Сообщить(Соединение.XMLСтрока(Ссылка));
Пример получение XMLСтрока по битой ссылке отрабатывает.
8.3.22.1750. Режим совместимости: Версия 8.3.20