Создание в базе назначения элемента справочника с таким же УИД, как и в базе-источнике данных через 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 498 13.07.17 16:48 Сейчас в теме
Не уверен, что с УИДом можно обращаться как с примитивным типом (присваивать напрямую через COM).
Я бы передавал через COM строку guid'a и создавал из нее уникальный идентификатор по месту.
5. parubetssm 13.07.17 16:51 Сейчас в теме
(4)Из значения типа "УникальныйИдентификатор" можно получить строку GUID через Строка(ЗначениеТипаУникальныйИдентификатор)? ... Иду проверять...
6. herfis 498 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("УникальныйИдентификатор",СтрокаУИДФизлица);
 СсылкаНаРодителяНаПолучателе = Соединение.Справочники.ФизическиеЛица.ПолучитьСсылку(УИДРодителяНаПолучателе);
 
Показать


Далее на основе сгенерированной на базе получателе ссылки можно создавать объект с УИД таким же, как и на базе-источнике
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)