импорт из 1с в Lotus

Force

Участник
Здравствуйте, кто нибудь когда нибудь выгружал данные из 1с в Lotus Domino ? Посоветуйте шину для выгрузки? Вообще возможно ли связать эти две платформы???
 
Здравствуйте, кто нибудь когда нибудь выгружал данные из 1с в Lotus Domino ? Посоветуйте шину для выгрузки? Вообще возможно ли связать эти две платформы???

Вообще хрен знает.. можно попробовать через excel или только свое написать что то.
http://citforum.ru/programming/delphi/lotus_notes/
 
еще вариант через ole попробовать
 
1. найти и поставить LotusSQL - ODBC драйвер
2. Connection = Новый COMОбъект("ADODB.Connection") и т.д.

или

Здравствуйте, кто нибудь когда нибудь выгружал данные из 1с в Lotus Domino ? Посоветуйте шину для выгрузки? Вообще возможно ли связать эти две платформы???
Код:
Sub Click(Source As Button)

Dim db As NotesDatabase    
Dim workspace As New NotesUIWorkspace
Dim workspacesend As New NotesUIWorkspace

Dim item As NotesItem

Dim docmain As NotesDocument
Dim doc_org As NotesDocument

Dim session As New NotesSession    
Dim mainuidoc As NotesUIDocument

Dim strOrgShortName    As String
Dim strSendServer    As String    
Dim strDBLOcation    As String    

Dim tmpFirstSide As String
Dim tmpProperty As String
Dim tmpFullName As String
Dim tmpShortName As String
Dim tmpCategory As Variant
Dim tmpINN As String
Dim tmpTitle As String
Dim tmpManager As String
Dim tmpPostAdress As String
Dim tmpUrAdress As Variant    
Dim tmpPhone As String
Dim tmpKPP As String
Dim tmpOKPO As String ' По какой то причине начал выдавать ошибку в этой строке??
Dim tmpOKONX As String
Dim tmpBank As Variant    
Dim tmpEMail As String
Dim tmpSite As String
Dim tmpMore As Variant    

Set db = session.CurrentDatabase
Set uidocmain = workspace.CurrentDocument    
Set docmain=uidocmain.Document    


tmpOpisani_IB = docmain.tmpOpisani_IB(0)    
tmpFolder = docmain.Folder(0)
tmpLogin = docmain.Login(0)
tmpPassword1C = docmain.Password1C(0)
tmpShortName = docmain.ShortName(0)

tmpFirst_Side = docmain.First_Side(0)
tmpProperty = docmain.Property(0)
tmpFullName = docmain.FullName(0)
tmpShortName = docmain.ShortName(0)
tmpCategory = docmain.tmpCategory(0)
tmpINN = docmain.INN(0)
tmpTitle = docmain.Title(0)
tmpManager = docmain.Manager(0)
tmpPostAdress = docmain.PostAdress(0)
tmpUrAdress = docmain.PostAdress(0)
tmpPhone = docmain.Phone(0)
tmpKPP = docmain.KPP(0)
tmpOKPO = docmain.OKPO(0)
tmpOKONX = docmain.OKONX(0)
tmpBank = docmain.Bank(0)
tmpEMail = docmain.EMail(0)
tmpSite = docmain.Site(0)
tmpMore = docmain.More
tmpVid_1C = docmain.Vid_1C(0)

If tmpVid_1C = "1С: Предприятие 7.7" Then
' Создаем объект ОЛЕ 1С:Предприятие
Set OLE = CreateObject("V77.Application")
strokaZapuska =    "/D"+tmpFolder+" /N"+tmpLogin+" /P"+tmpPassword1C    
'Можно задать параметры подключения из формы (надо экспереминтировать)
tmpFolder = "E:\Bases 1C\Test base SF\"
'rez=OLE.Initialize(OLE.RMTrade,strokaZapuska,"NO_SPLASH_SHOW")

'Результатом должен стать 0 или 1 т.е. открыта база или нет
rez=OLE.Initialize(OLE.RMTrade,"NO_SPLASH_SHOW","")
'Определяем переменные для сбора результата конекта к 1С
rezultat = 0
rezinn = 0

ComputerName = OLE.EvalExpr( "ComputerName()")
UserName = OLE.EvalExpr("UserName()")
SystemCaption = OLE.EvalExpr( "SystemCaption()")
IBDir = OLE.EvalExpr( "IBDir()")
UserFullName = OLE.EvalExpr( "UserFullName()")

tmpOpisani_IB = "[" +ComputerName +"]" + "[" +UserName +"]" + "[" +UserFullName +"]" + "[" +SystemCaption +"]" + "[" +IBDir +"]"
docmain.Opisani_IB = tmpOpisani_IB

'Set СписокОбъектов = OLE.CreateObject("СписокЗначений")

'Получаем доступ к справочнику Контрагенты
Set kontrag=OLE.CreateObject("Справочник.Контрагенты")
'Ищем в справочнике по наименованию
rezname0 = kontrag.НайтиПоНаименованию(tmpShortName)
rezname1 = kontrag.НайтиПоНаименованию(tmpFullName)

'Ищем в справочнике по ИНН, что бы точно удостоверится что с таким ИНН контрагента нет даже если
'разное наименование
rezinn = kontrag.НайтиПоРеквизиту("ИНН",tmpINN)
rezinn0 = kontrag.НайтиПоРеквизиту("ИНН",tmpINN+tmpKPP)
rezinn1 = kontrag.НайтиПоРеквизиту("ИНН",tmpINN+"\" +tmpKPP)
rezinn2 = kontrag.НайтиПоРеквизиту("ИНН",tmpINN+"/" +tmpKPP)    
'Суммируем результаты если все хорошо то результат должен быть равен 0
rezultat = rezultat + rezname0 + rezname1 + rezinn0 + rezinn0 + rezinn1 + rezinn2
'Дополнительная проверка на правильность поиска по реквизиту (т.к. по реквизиту можен не искать - бывает и такое!)
'При необходимости можно добавить дополнительные условия
'Выбираем справочник Контрагентов
rez=kontrag.ВыбратьЭлементы()    
While kontrag.ПолучитьЭлемент()=1    
'Получим Элемент 'Проверим Элемент
RezFind = Instr(tmpShortName , kontrag.Наименование)
'kontrag.Find(kontrag.Наименование , tmpShortName)
'RezINN0 = kontrag.Find(kontrag.ИНН , rezinn)
RezINN0 = Instr(rezinn , kontrag.ИНН)
If kontrag.ПолнНаименование = tmpFullName Then rezname = 1 Else rezname = 0    
If kontrag.ИНН = tmpINN Then rezinn = 1 Else rezinn = 0

'Суммируем результат
rezultat = rezultat + rezinn + RezINN0 + rezname
Print kontrag.ПолнНаименование
Wend

'Если в конечном итоге результат наших поисков равен 0 то создаем новый элемент справочника
boxType& = MB_OKCANCEL + MB_ICONQUESTION

If rezultat > 0 Then
Messagebox "Такой контрагент существует "
Exit Sub    
Elseif rezultat = 0 Then
answer% = Messagebox("Создать новую запись?", 4, "Создать?")
If answer% = 6 Then Else Exit Sub
rez = kontrag.Новый()
kontrag.Наименование = tmpShortName
kontrag.ИНН = tmpINN
kontrag.ПолнНаименование = tmpFullName
kontrag.ЮридическийАдрес = tmpUrAdress
kontrag.ПочтовыйАдрес = tmpPostAdress
kontrag.Телефоны = tmpPhone
Set perechislenie = OLE.Enum.GetAttrib("ВидыКонтрагентов")
Set ORG = perechislenie.ValueByIdentifier("ЧастноеЛицо")
Set CHP = perechislenie.ValueByIdentifier("Организация")    
rez = kontrag.SetAttrib("ВидКонтрагента", ORG)
rez =    kontrag.Записать()
Print kontrag.ТекущийЭлемент().ПолнНаименование

Set rez = OLE.ОткрытьФормуМодально(kontrag.ТекущийЭлемент(),"", -1)    ' рабочий вариант
'Set rez = OLE.ExecuteBatch("ОткрытьФормуМодально("+kontrag.ТекущийЭлемент()+","", -1)")    ' рабочий вариант
End If
Goto EndSub
'Отключем ОЛЕ объекты.
'При завершении работы с ОЛЕ объектом всегда выводится ошибка это не избежно
EndSub:
OLE = OLE.ExecuteBatch( "ExitSystem(0)")    
OLE = " "
Else
If (tmpVid_1C = "1С: Предприятие 8.0 (Файл)") Or (tmpVid_1C = "1С: Предприятие 8.0 (Сервер)") Then
tmpSQLBase = docmain.SQLBase(0)    'Set cc = CreateObject("v8.COMConnector")
Set cc = CreateObject("v8.Application")    'cc.Visible = True
If (tmpVid_1C = "1С: Предприятие 8.0 (Файл)") Then
Print "File="+tmpFolder+"; Usr="+tmpLogin +"; Pwd="+tmpPassword1C
cc.Connect("File="+tmpFolder+"; Usr="+tmpLogin +"; Pwd="+tmpPassword1C)
Else
Print "Srvr="+tmpSQLBase+"; Ref="+tmpFolder+"; Usr="+tmpLogin +"; Pwd="+tmpPassword1C
cc.Connect("Srvr="+tmpSQLBase+"; Ref="+tmpFolder+"; Usr="+tmpLogin +"; Pwd="+tmpPassword1C)
End If
'Получаем доступ к справочнику Контрагенты
Set kontrag = cc.Справочники.Контрагенты
'Ищем в справочнике по наименованию
'Ищем в справочнике по ИНН, что бы точно удостоверится что с таким ИНН контрагента нет даже если
'разное наименование
'Суммируем результаты если все хорошо то результат должен быть равен 0
'Дополнительная проверка на правильность поиска по реквизиту (т.к. по реквизиту можен не искать - бывает и такое!)
'При необходимости можно добавить дополнительные условия
'Выбираем справочник Контрагентов
Set Vjborka = kontrag.Выбрать()    
While Vjborka.Следующий()=1    
'Получим Элемент 'Проверим Элемент
If Vjborka.ИНН = tmpINN Then rezinn = 1 Else rezinn = 0
'Суммируем результат
Wend
'Если в конечном итоге результат наших поисков равен 0 то создаем новый элемент справочника
boxType& = MB_OKCANCEL + MB_ICONQUESTION
If rezultat > 0 Then
Messagebox "Такой контрагент существует "
Exit Sub    
Elseif rezultat = 0 Then
answer% = Messagebox("Создать новую запись?", 4, "Continue?")
If answer% = 6 Then Else Exit Sub
Set NewKontrag = kontrag.СоздатьЭлемент( )
'NewKontrag .Write()
Set Форма = NewKontrag.ПолучитьФорму("ФормаЭлемента")
Форма.Наименование = tmpShortName
Форма.НаименованиеПолное = tmpShortName
Форма.ИНН = tmpINN
Форма.КПП = tmpKPP
Форма.КодПоОКПО = tmpOKPO
Форма.ОткрытьМодально(0)

End If
Goto EndSub2
'Отключем ОЛЕ объекты.
'При завершении работы с ОЛЕ объектом всегда выводится ошибка это не избежно
EndSub2:
con = " "
'con = OLE.EvalExpr( "ExitSystem(0)")    
'Set НайденнаяСсылка = con.Валюты.НайтиПоНаименованию(СтрокаНаименования)
'Messagebox con.Metadata.name
End If
End If    
End Sub
 
Назад
Верх