Создание в базе назначения элемента справочника с таким же УИД, как и в базе-источнике данных через COM-соединение

1. parubetssm 13.07.17 16:31 Сейчас в теме
Не могу через ком соединение перенести элемент справочника "Физлица" из одной базы в другую с сохранением УИД. Подскажите, пожалуйста, что может быть не так, и как это сделать?...

Пытаюсь совершить обмен с использованием COM-соединения между УПП1.3 и ДО2.0.16.1 (документооборот). Платформа 8.3.9.1850. Физическое лицо из одной базы кидаю в другую. Com-соединение создается.

Ответственный участок кода

ОбъектФизЛицо = Неопределено;
			
// Задание УИД и ссылки для элемента справочника, создаваемого в базе получателя
	СсылкаНаПереносимыйЭлементСправочника = ВыборкаДетальныеЗаписи.Ссылка;
	УИДФизлицаВИсточнике = СсылкаНаПереносимыйЭлементСправочника.УникальныйИдентификатор();
	// Переход в базу получателя
	СсылкаДляЭлементаСоздаваемогоНаПолучателе = Соединение.Справочники.ФизическиеЛица.ПолучитьСсылку(УИДФизлицаВИсточнике);


Далее - либо так:
ОбъектФизЛицо = Соединение.Справочники.ФизическиеЛица.СоздатьГруппу(СсылкаДляЭлементаСоздаваемогоНаПолучателе);


либо так:
ОбъектФизЛицо = Соединение.Справочники.ФизическиеЛица.СоздатьЭлемент(СсылкаДляЭлементаСоздаваемогоНаПолучателе); 


Выдает ошибку

{ВнешняяОбработка.ПеребросВсехФизическихЛицВДО.Форма.Форма.Форма(132)}: Ошибка при вызове метода контекста (ПолучитьСсылку)
СсылкаДляЭлементаСоздаваемогоНаПолучателе = Соединение.Справочники.ФизическиеЛица.ПолучитьСсылку(УИДФизлицаВИсточнике);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.9.1850): Несоответствие типов (параметр номер '1')


При этом тип переменной УИДФизлицаВИсточнике по табло - "УникальныйИдентификатор", т.е. то, что надо.

На одной базе (документооборот) подобные манипуляции проходили без проблем. Пример рабочего кода (ссылку удается получить)

елементФизЛицСсылка = Справочники.ФизическиеЛица.НайтиПоНаименованию("Штерн Иван петрович");
	УИД = елементФизЛицСсылка.УникальныйИдентификатор();
	НовСсылка =  Справочники.ФизическиеЛица.ПолучитьСсылку(УИД);
	строка1 = ЗначениеВСтрокуВнутр(елементФизЛицСсылка);
	строка2 = ЗначениеВСтрокуВнутр(НовСсылка);
	Сообщить(строка1);
	Сообщить(строка2);


Считаем, что база получатель изначально пуста, поэтому проблема возможного задвоения ссылок нас интересовать не должна...

Помогите, кто чем может, пожалуйста
По теме из базы знаний
Найденные решения
10. parubetssm 18.07.17 16:48 Сейчас в теме
Извините, что пропал... Отгулыс'с... Вопрос дожал при всем при этом...
Работаетв таком виде. Кому поможет - семь футов под килем. В свою очередь спасибо всем ответившим...

//база-источник

ССылкаНаФизЛицоБазаИсточника = ФизическиеЛица.НайтиПоНаименованию("Перевалов Семен Абрикосович");
УИДФизлица = ССылкаНаФизЛицоБазаИсточника.УникальныйИдентификатор();
СтрокаУИДФизлица = Строка(УИДФизлица);

//база, к которой присоединеяемся

 УИДРодителяНаБазеПолучателе = Соединение.NewObject("УникальныйИдентификатор",СтрокаУИДФизлица);
 СсылкаНаРодителяНаПолучателе = Соединение.Справочники.ФизическиеЛица.ПолучитьСсылку(УИДРодителяНаПолучателе);
 
Показать


Далее на основе сгенерированной на базе получателе ссылки можно создавать объект с УИД таким же, как и на базе-источнике
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zarucheisky 13.07.17 16:34 Сейчас в теме
ОбъектФизЛицо = Соединение.Справочники.ФизическиеЛица.СоздатьГруппу();
ОбъектФизЛицо.УстановитьСсылкуНового(СсылкаДляЭлементаСоздаваемогоНаПолучателе);
3. parubetssm 13.07.17 16:43 Сейчас в теме
ругается на строку, не доходя до момента создания. Ругань идет по моменту генерации ссылки, насколько я понимаю...
4. herfis 513 13.07.17 16:48 Сейчас в теме
Не уверен, что с УИДом можно обращаться как с примитивным типом (присваивать напрямую через COM).
Я бы передавал через COM строку guid'a и создавал из нее уникальный идентификатор по месту.
5. parubetssm 13.07.17 16:51 Сейчас в теме
(4)Из значения типа "УникальныйИдентификатор" можно получить строку GUID через Строка(ЗначениеТипаУникальныйИдентификатор)? ... Иду проверять...
6. herfis 513 13.07.17 16:52 Сейчас в теме
(5) Можно. Осталось проверить, что в правильном формате, который можно без преобразований подсунуть конструктору уникального идентификатора :)
Но, КМК, я так делал.
parubetssm; +1 Ответить
7. parubetssm 13.07.17 16:53 Сейчас в теме
(6)Спасибо. Щас буду прошаривать это направление...
8. maxmax83 13.07.17 16:55 Сейчас в теме
УИДФизлицаВИсточнике = Строка(СсылкаНаПереносимыйЭлементСправочника.УникальныйИдентификатор());
// Переход в базу получателя
СсылкаДляЭлементаСоздаваемогоНаПолучателе = Соединение.Справочники.ФизическиеЛица.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор", УИДФизлицаВИсточнике));
ОбъектФизЛицоНаПолучателе.УстановитьСсылкуНового(СсылкаДляЭлементаСоздаваемогоНаПолучателе);
9. VmvLer 13.07.17 17:05 Сейчас в теме
сравните в отладчике глазками значения:
Строка(СсылкаНаПереносимыйЭлементСправочника.УникальныйИдентификатор())
и
СсылкаНаПереносимыйЭлементСправочника.УникальныйИдентификатор()

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

а потом сравните глазками в отладчике

XMLСтрока(СсылкаНаПереносимыйЭлементСправочника.УникальныйИдентификатор())
и
СсылкаНаПереносимыйЭлементСправочника.УникальныйИдентификатор()

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

я могу плохо помнить
10. parubetssm 18.07.17 16:48 Сейчас в теме
Извините, что пропал... Отгулыс'с... Вопрос дожал при всем при этом...
Работаетв таком виде. Кому поможет - семь футов под килем. В свою очередь спасибо всем ответившим...

//база-источник

ССылкаНаФизЛицоБазаИсточника = ФизическиеЛица.НайтиПоНаименованию("Перевалов Семен Абрикосович");
УИДФизлица = ССылкаНаФизЛицоБазаИсточника.УникальныйИдентификатор();
СтрокаУИДФизлица = Строка(УИДФизлица);

//база, к которой присоединеяемся

 УИДРодителяНаБазеПолучателе = Соединение.NewObject("УникальныйИдентификатор",СтрокаУИДФизлица);
 СсылкаНаРодителяНаПолучателе = Соединение.Справочники.ФизическиеЛица.ПолучитьСсылку(УИДРодителяНаПолучателе);
 
Показать


Далее на основе сгенерированной на базе получателе ссылки можно создавать объект с УИД таким же, как и на базе-источнике
Оставьте свое сообщение

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