Импорт данных в 1С из другой базы 1С, подключение к 1С
Подключиться или соединиться с другой базой 1С:Предприятие 7.7
//подключение к другой базе 1С:Предприятие через OLE
Функция гБаза_Подключить(Оле,Путь,Логин,Пароль,ФлагХорошо=0) Экспорт
Если ПустаяСтрока(Путь)=1 Тогда
Предупреждение("Не указан Путь к базе!");
Возврат(0);
ИначеЕсли ФС.СуществуетФайл(Путь+"\1Cv7.MD")=0 Тогда
Предупреждение("База данных по указанному пути не обнаружена!");
Возврат(0);
КонецЕсли;
//строка запуска
Оле=СоздатьОбъект("V1CEnterprise.Application");
СтрокаЗапуска="/d"+Путь;
Если ПустаяСтрока(Логин)=0 Тогда
СтрокаЗапуска=СтрокаЗапуска+" /n"+Логин;
Если ПустаяСтрока(Пароль)=0 Тогда
СтрокаЗапуска=СтрокаЗапуска+" /p"+Пароль;
КонецЕсли;
КонецЕсли;
//подключение
Удача=Оле.Initialize(Оле.RMTrade,СтрокаЗапуска,);
Если Удача=0 Тогда
Предупреждение("Ошибка соединения!");
Возврат(0);
ИначеЕсли ФлагХорошо=1 Тогда
Предупреждение("Соединение выполнено успешно");
КонецЕсли;
Возврат(1);
КонецФункции
Импорт данных в 1С из другой базы 1С (импорт справочника в 1С)
//получение значения субконто текущей базы из запроса к бухгалтерским итогам другой базы через OLE
//аргументы: Б - бухгалтерские итоги, Номер - номер субконто в выборке
Функция Субконто_Получить(Б,Номер)
Значение=Б.Субконто(Номер);
//тип
Ч=СчетПоКоду(Б.Счет.Код);
Тип=Ч.ВидСубконто(Номер).ТипСубконто();
Если Найти("Число,Строка,Дата",Тип)>0 Тогда
Возврат(Значение);
ИначеЕсли Значение.Выбран()=0 Тогда
Сообщить(Ч.Код+": Не выбрано значение "+Тип,"!");
Возврат ПолучитьПустоеЗначение(Тип);
КонецЕсли;
//вид
Позиция=Найти(Тип,".");
Если Позиция>0 Тогда
Вид=Сред(Тип,Позиция+1);
Тип=Лев(Тип,Позиция-1);
Иначе
Вид=Значение.Вид();
КонецЕсли;
ТипВид=Тип+"."+Вид;
//поиск
Если Тип="Справочник" Тогда
Если Метаданные.Справочник(Вид).ДлинаКода=0 Тогда
Сообщить(Ч.Код+": "+ТипВид+": Коды не используются","!");
Возврат ПолучитьПустоеЗначение(ТипВид);
ИначеЕсли Метаданные.Справочник(Вид).Владелец.Выбран()=1 Тогда
Сообщить(Ч.Код+": "+ТипВид+": Не найден элемент по владельцу","!");
Возврат ПолучитьПустоеЗначение(ТипВид);
КонецЕсли;
//поиск
ТекКод=Значение.ПолныйКод();
С=СоздатьОбъект(ТипВид);
Если С.НайтиПоКоду(ТекКод,2)=1 Тогда
Возврат(С.ТекущийЭлемент());
Иначе
Сообщить(Ч.Код+": Не найдено: "+ТипВид+".ПолныйКод="+ТекКод,"!");
Возврат ПолучитьПустоеЗначение(ТипВид);
КонецЕсли;
ИначеЕсли Тип="Документ" Тогда
ТекНомер=СокрЛП(Значение.НомерДок);
ТекДата=Значение.ДатаДок;
//поиск
Г=СоздатьОбъект(ТипВид);
Если Г.НайтиПоНомеру(ТекНомер,ТекДата)=1 Тогда
Возврат(Г.ТекущийДокумент());
Иначе
Сообщить(Ч.Код+": Не найдено: "+ТипВид+": "+ТекНомер+" ("+ТекДата+")","!");
Возврат ПолучитьПустоеЗначение(ТипВид);
КонецЕсли;
ИначеЕсли Тип="Перечисление" Тогда
К=СоздатьОбъект(ТипВид);
Возврат К.ЗначениеПоИдентификатору(Значение.Идентификатор());
КонецЕсли;
КонецФункции
//получение элемента справочника текущей базы
//аргументы: Значение - элемент справочника базы, с которой выполнено соединение через OLE
Функция Справочник_Получить(Значение)
Справочник=Значение.Вид();
ТекКод=Значение.ПолныйКод();
Если ПустаяСтрока(ТекКод)=1 Тогда
Возврат ПолучитьПустоеЗначение("Справочник."+Справочник);
КонецЕсли;
//справочник
С=СоздатьОбъект("Справочник."+Справочник);
Если С.НайтиПоКоду(ТекКод,2)=1 Тогда
Возврат(С.ТекущийЭлемент());
Иначе
Сообщить("Не найдено: Справочник."+Справочник+".ПолныйКод="+Значение.ПолныйКод());
Возврат ПолучитьПустоеЗначение("Справочник."+Справочник);
КонецЕсли;
КонецФункции
2010-03-02 в 14:26:01
http://vip1c.ru/page/import-dannyh-v-1s-iz-drugoj-bazy-1s-podkljuchenie-k-1s
При завршении работы c ОЛЕ - сеанс нужно закрывать также программно !
Говорит об опыте и способностях программистов...