Здравствуйте.
Подскажите пожалуйста как через СОМ соединение можно создавать элементы в справочниках.
Пробовал так:
СпрПр = Подключение.NewObject("СправочникСсылка.Производители");
СпрПр.Наименование = пвПроизводитель.Наименование;
СпрПр.СтранаПроисхождения = пвПроизводитель.СтранаПроисхождения;
СпрПр.Записать();
СпрПр = Подключение.Справочники.Производители.СоздатьЭлемент();
СпрПр.Наименование = пвПроизводитель.Наименование;
СпрПр.СтранаПроисхождения = пвПроизводитель.СтранаПроисхождения;
СпрПр.Записать();
bizisoft @ Сегодня, 0:19
,
Доброе утро! Все можно делать, по крайней мере у меня в 1С8: УТП получалось. Вот пример создания контрагентов. Подключение по ОЛЕ к 1С:7.7
Процедура ЗагрузитьКонтрагента()
СпрОЛЕ = V77.CreateObject("Справочник.Контрагенты");
СпрОЛЕ.ВыбратьЭлементы();
Пока СпрОЛЕ.ПолучитьЭлемент()=1 Цикл
Если СпрОле.ЭтоГруппа() Тогда
Группа = Справочники.Номенклатура.СоздатьГруппу();
Группа.Код = СпрОле.Код;
Группа.Наименование = СпрОле.Наименование;
Группа.Записать();
КонецЕсли;
ЭлементПоиска = Справочники.Контрагенты.НайтиПоКоду(СпрОЛЕ.Код);
Если ЭлементПоиска.Пустая() Тогда
НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
//НовыйЭлемент.Родитель = Группа.Ссылка;
//НовыйЭлемент.НоменклатурнаяГруппа = СпрОЛЕ.Наименование;
НовыйЭлемент.Код = СпрОЛЕ.Код;
сообщить(СпрОЛЕ.Код);
НовыйЭлемент.Наименование = СпрОЛЕ.Наименование;
НовыйЭлемент.НаименованиеПолное = СпрОЛЕ.ПолнНаименование;
НовыйЭлемент.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
denis84 @ Сегодня, 8:21
,
Вот пример по ТМЦ:
СпрОЛЕ = V77.CreateObject("Справочник.ТМЦ");
СпрОЛЕ.ВыбратьЭлементы();
Пока СпрОЛЕ.ПолучитьЭлемент()=1 Цикл
Если СпрОле.ЭтоГруппа() Тогда
Группа = Справочники.Номенклатура.НайтиПоКоду(СпрОЛЕ.Код);
Если Группа.Пустая() Тогда
Группа = Справочники.Номенклатура.СоздатьГруппу();
Группа.Код = СпрОле.Код;
Группа.Наименование = СпрОле.Наименование;
Группа.Записать();
КонецЕсли;
КонецЕсли;
ЭлементПоиска = Справочники.Номенклатура.НайтиПоКоду(СпрОЛЕ.Код);
Если ЭлементПоиска.Пустая() Тогда
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Родитель = Группа.Ссылка;
НовыйЭлемент.НоменклатурнаяГруппа = СпрОЛЕ.Наименование;
НовыйЭлемент.Код = СпрОЛЕ.Код;
сообщить(СпрОЛЕ.Код);
НовыйЭлемент.Наименование = СпрОЛЕ.Наименование;
НовыйЭлемент.НаименованиеПолное = СпрОЛЕ.ПолнНаименование;
НовыйЭлемент.Записать();
КонецЕсли;
КонецЦикла;
bizisoft @ Today, 0:19
,
Обратите внимание на данный код:
СпрПр.СтранаПроисхождения = пвПроизводитель.СтранаПроисхождения;
bizisoft @ Сегодня, 0:19
,
Делаю просто
Спр=Соединение.Справочники[ИмяСправочника].СоздатьЭлемент();
Попробуйте те поля, которые предопределены указывать в английском варианте, не "Наименование" а "Description" и т.п.
bizisoft @ Вчера, 23:07
,
При подключении по ОЛЕ запускается отдельный процесс 1с8,а при com нет. Из пустой базы подключаюсь к основной и из нее получаю данные и пишу в новую базу.
СпрПр = Подключение.Справочники.Производители.СоздатьЭлемент();
СпрПр.Наименование = пвПроизводитель.Наименование;
СпрСт = Подключение.Справочники.Страны.НайтиПоНаименованию(пвПроизводитель.СтранаПроисхождения.Наименование);
СпрПр.СтранаПроисхождения = СпрСт;
СпрПр.Записать();
Petre @ Сегодня, 9:29
,
Да,согласен. Делаю так Соединение = Новый COMОбъект("V82.Application");
Решил поэксперементировать со справочником попроще.
КлассификаторСтранМира
Та же петрушка.
Есть подозрение, что обязательный реквизит "Код" автоматически не присваивается.
Попробовал код выполнить без СОМ, просто в базе - таки да, ругается на Код не заполнен.
Тогда не понятно, как тогда присвоить ему нужное значение?
Наверное функция УстановитьНовыйКод() через СОМ работать не будет.
bizisoft @ Сегодня, 11:18
,
Я ошибался. УстановитьНовыйКод() работает однако.
Это хорошо, тогда буду пробовать дальше.
Если связь между базами более-менее постоянная, я, обычно в базе-приемнике, в модуле Внешнего соединения, пишу необходимые методы для формирования данных и вызываю их из исходной базы. Получается проще - получили простые данные - названия или коды и пр., потом уже в контексте принимающей БД делаем поиск, создание и прочее.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua