Помощь - Поиск - Пользователи - Календарь
Полная версия: Обмен данными через COM-соединение
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
GRUV

Помогите разобраться плз, уже голову сломал aua.gif

Есть две базы, в которых имеются одинаковые справочники. Требуется создать в базе №2 элемент справочника с такой же ссылкой как в базе №1

Код
ЭлементБазы1 = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000003");
Соединитель = Новый COMObject("V81.COMConnector");
Соединение =Соединитель.Connect("Srvr=Server1C81;Ref=Sklad;Usr=Обмен;Pwd=123");
ЭлементБазы2 = Соединение.Справочники.ВидыНоменклатуры.СоздатьЭлемент();


дальше испробовал всякие способы как установить ссылку для <ЭлементБазы2> - ничего не получается.
Эмин
Не очень понял, как вы хотите создать элемент с такой же ссылкой?
В смысле чтобы были одинаковые Уникальные Идентификаторы? Вряд ли.
А так - создали элемент, присвоили ему коды, наименования и прочее такое же и они у вас идентичные.

Еще вариант через XML - там гарантированно будет одинаково.
GRUV

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

Так работает
Код
ЭлементБазы2 = Соединение.Справочники.ВидыНоменклатуры.СоздатьЭлемент();
ЭлементБазы2.Код = "00000001";


Так сделать не получиться
Код
ЭлементБазы2 = Соединение.Справочники.ВидыНоменклатуры.СоздатьЭлемент();
ЭлементБазы2.ТипНоменклатуры =


т.е. такой обмен по сути ничем не отличается от обмена через XML только данные передаются не через файл а непосредственно входными параметрами в процедуру базы-приемника.
LxS
Посмотри, возможно, чем-то тебе это поможет.
/index.php?showtopic=12722
GRUV
Цитата(LxS @ 9.7.2008, 13:51) *

Посмотри, возможно, чем-то тебе это поможет.
/index.php?showtopic=12722


все логично - любые переданные из базы-источника данные ссылочного типа в базе-приемнике являются Com-объектами
я преобразую все ссылки в строку метедом XMLСтрока(), а потом обратно - все работает ))
LxS
В XML не силен пока.
Кинь пример куска кода pls.
GRUV
Пример обмена справочником <Единицы измерения> через com-соединение

Выбираем измененные объекты и для каждого запускаем функцию

Код
Функция ОтправитьИзменения(Соединение,Объект)
Ссылка = XMLСтрока(Объект.Ссылка);
ПометкаУдаления = Объект.ПометкаУдаления;
Владелец = XMLСтрока(Объект.Владелец.Ссылка);
Код = Объект.Код;
Наименование = Объект.Наименование;
ЕдиницаПоКлассификатору = XMLСтрока(Объект.ЕдиницаПоКлассификатору);
Вес = Объект.Вес;
Объем = Объект.Объем;
Коэффициент = Объект.Коэффициент;
Попытка
Соединение.ЕдиницыИзмерения(Ссылка,ПометкаУдаления,Владелец,Код,Наименование,ЕдиницаПоКлассификатору,Вес,Объем,Коэффициент);
Исключение
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции


В базе-приемнике пишем процедуру

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

GRUV

Правда я тут не учел удаление объекта ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.