Форум » [x]Harbour » Доступ к 1С » Ответить

Доступ к 1С

SADSTAR4: Есть у кого-нибудь опыт подключения к 1С по OLE? Пробую подключиться так [pre2] //создать объект для ссылки на 1C ob1C:= TOleAuto():New( "V81.Application" ) if Ole2TxtError() != 'S_OK' ;MsgExclamation('V81.Application не запускается !!!'+CRLF+'Дальнейшая работа невозможна','Excuse me') AddMsg("V81.Application не запускается !!!") Return endif AddMsg("ссылка ob1C:=V81.Application создана !!!") AddMsg("попытка открыть базу ") msgbox("See") [/pre2] до этой строки все работает. А вот дальше попытки использовать инфу из разных источников выдает MemberNotFound [pre2] //result:=ob1C:Initialize(ob1C:RMTrade,'/d G:\1C_IT /n "Садонин В.А." /p 111' , "NO_SPLASH_SHOW") //result:=ob1C:Connect('File="G:\1C_IT"; Usr="Садонин В.А."; Pwd="111"') //result:=ob1C:OleProcedure("Connect",'File="G:\1C_IT"; Usr="Садонин В.А."; Pwd="111"') [/pre2] Посоветуйте что-нибудь полезное

Ответов - 8

Pasha: SADSTAR4 пишет: //result:=ob1C:Initialize(ob1C:RMTrade,'/d G:\1C_IT /n "Садонин В.А." /p 111' , "NO_SPLASH_SHOW") А что такое ob1C:RMTrade ? Может быть, этот член не найден ?

fil: Это подключение для семерки. Для 8-х не работает

AlexMyr: Вот код на harbour, вытягиваю данные из справочника тмц, только подключался к 1c77. [pre2]FUNC main() LOCAL oV7 REQUEST HB_LANG_UAWIN HB_LANGSELECT( "UAWIN" ) REQUEST HB_CODEPAGE_UA1251 HB_CDPSELECT( "UA1251" ) dbCreate( "tmc", { { "ctmc","C",100,0 }, { "ctype","C",10,0 } } ) USE tmc NEW oV7 := win_oleCreateObject( "V77.Application" ) IF oV7:Initialize( oV7:RmTrade, "/D" + "E:\1C\B1" + " /N" + "login" + " /M", "NO_SPLASH_SHOW" ) doc := oV7:CREATEOBJECT( "Справочник.ТМЦ" ) doc:selectitems() WHILE doc:getitem() > 0 tmc -> ( dbAppend() ) tmc -> CTMC := doc:getAttrib( "ПолнНаименование" ) tmc -> CTYPE := ValType( doc:getAttrib( "ВидТМЦ" ) ) ENDDO ENDIF oV7 := NIL RETURN nil[/pre2]


AlexMyr: SADSTAR4 пишет: А вот дальше попытки использовать инфу из разных источников выдает MemberNotFound //result:=ob1C:Initialize(ob1C:RMTrade,'/d G:\1C_IT /n "Садонин В.А." /p 111' , "NO_SPLASH_SHOW") //result:=ob1C:Connect('File="G:\1C_IT"; Usr="Садонин В.А."; Pwd="111"') //result:=ob1C:OleProcedure("Connect",'File="G:\1C_IT"; Usr="Садонин В.А."; Pwd="111"') вот еще при быстром просмотре гугла Открытие = V8.Connect("File=""F:\Базы\1_1_6_1""; Usr=""ADMIN"";") может чем поможет.

SADSTAR4: заработала строка [pre2]result:=ob1C:Connect('File="G:\1C_IT"; Usr="Садонин В.А. "; Pwd=111')[/pre2] т.е. имя пользователя было несуществующим а ошибку выдавал как DISP_E_MEMBERNOTFOUND:CONNECT что я понимал как нет метода Connect. работает следующий экспериментальный код [pre2] doc:= ob1C:NewOBJECT("ТекстовыйДокумент") //!!! doc:InsertLine(1, "Новая строка") msgbox(str(doc:LineCount())) doc:=NIL doc:= ob1C:NewOBJECT("СправочникОбъект.Номенклатура") AddMsg(doc:code) AddMsg(doc:Description) [/pre2] а вот дальнейший код падает с тем же MemberNotFound:select на что непонятно как реагировать в свете ранее сказанного [pre2] sel:= doc:select() WHILE sel:next() > 0 //tmc -> ( dbAppend() ) //tmc -> CTMC := doc:getAttrib( "ПолнНаименование" ) //tmc -> CTYPE := ValType( doc:getAttrib( "ВидТМЦ" ) ) sel:GetObject() AddMsg(sel:Description) ENDDO[/pre2]

Marquis31: Тема по доступу к 1С еще актуальна? Вот выжимка из работающего кода, на примере демобазы типовой "1С-Бухгалтерии", ред2,0: [pre2] REQUEST HB_CODEPAGE_RU1251 REQUEST HB_LANG_RUWIN Function Main() Local Appl1C, Conn1C, Path1C, User1C, Passw1C, ConnectString Local Query1C, QResult1C, Selection1C Local CustCode,CustName,CustINN HB_LANGSELECT("RUWIN") hb_cdpSelect( "RU1251" ) SetMode( 25, 80 ) CLS Appl1C := win_oleCreateObject( "V82.COMConnector" ) Path1C := "D:\BUH1C" user1C := '"Любимов (администратор)"' Passw1C := "" ConnectString := "File="+Path1C+";Usr="+User1C+";Pwd="+Passw1C+";" conn1C := Appl1C:Connect(ConnectString) Query1C := Conn1C:NewObject("Запрос") Query1C:Text := "SELECT Контрагенты.Код AS CustCode, Контрагенты.Наименование AS CustDescr, Контрагенты.ИНН AS INN, "+; " Контрагенты.КПП AS KPP, Контрагенты.НаименованиеПолное AS FullDescr, PRESENTATION(Контрагенты.ЮрФизЛицо) AS CustType "+; " FROM Справочник.Контрагенты AS Контрагенты" Qresult1C := Query1C:Execute() Selection1C:= Qresult1C:Choose() while Selection1C:next() = .t. CustCode := Selection1C:CustCode CustName := Selection1C:CustDescr CustINN := Selection1C:INN CustKPP := Selection1C:KPP CustFullDescr := Selection1C:FullDescr CustType := Selection1C:CustType ? CustCode, " ", CustName," ",CustINN ? CustKPP, " ", CustFullDescr," ",CustType enddo Inkey(0) Conn1c := NIL Appl1C := NIL Return [/pre2] Для чтения данных лучше использовать 1С-вские запросы и в них переопределять имена полей латинскими идентификаторами, потому что к русским именам, понятное дело, из Харбора обратиться не получится.

Softlog86: Может уважаемые Гуру имеют готовый текст запроса к 1С (7.7) на Harbour для получения "Итогов Инвентаризации" - то есть список остатков на определенную дату или текущие остатки чтоб иметь на выходе Артикул , количество , и т д ?

vvche: Конфига какая? "Торговля и Склад"? Ну, готового нету, но можно попробовать покурить пример отсюда: https://helpf.pro/faq/view/1537.html , переложить на Харбор (только, естественно, подставив английские синонимы 1С-вских названий методов.



полная версия страницы