Консультант по 1С в Крыму. +7(978)857-2035

Помогу с 1С!

программист 1С Симферополь

Позвоните:
+7(978)857-2035

Импорт данных в 1С из другой базы 1С, подключение к 1С

/ Просмотров: 25027

Подключиться или соединиться с другой базой 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 Тогда

          Возврат(С.ТекущийЭлемент());

     Иначе

          Сообщить("Не найдено: Справочник."+Справочник+".ПолныйКод="+Значение.ПолныйКод());

          Возврат ПолучитьПустоеЗначение("Справочник."+Справочник);

     КонецЕсли;

КонецФункции

 

 

Комментариев: 1 RSS
программист 1С1
2010-03-02 в 14:26:01

http://vip1c.ru/page/import-dannyh-v-1s-iz-drugoj-bazy-1s-podkljuchenie-k-1s

При завршении работы c ОЛЕ - сеанс нужно закрывать также программно !

Говорит об опыте и способностях программистов...

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)