Запрос к 1CV82 вызывает исключение

classic Classic list List threaded Threaded
10 messages Options
cors cors
Reply | Threaded
Open this post in threaded view
|

Запрос к 1CV82 вызывает исключение

Здравствуйте!
Бьюсь с вашей библиотекой уже второй день.
Все возможные ошибки препятствующие подключению к 1cv82 (8.2.16.368) под Windows 7 победил.
Даже смог сделать первую выборку  из файловой базы на основе типовой бухгалтерии v. 2.0.40.10
методом OCCatalogSelection selection = manager.selectHierarchically();

Но вот через ODBC методом
con = DriverManager.getConnection("jdbc:oce:dcom", conProperties);
stat = con.createStatement();
rs = stat.executeQuery("SELECT Code FROM Catalog.ОсновныеСредства");
не получается.
Все время ловлю исключение
java.sql.SQLException: org.jinterop.dcom.impls.automation.JIAutomationException: Exception occurred.  [0x80020009]

У вас есть соображения как победить это препятствие?
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

Добрый день!
Давайте начнем с трейса.
Вываливается при коннекте или на запросе?
Что в conProperties?

0x80020009 - это ошибка, скажем так, "вообще". Нужно ее расковаривать, тут где-то на форуме есть пример. Если интересно... если не найдете, сам поищу попозже.
OCTitbit developer.
cors cors
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

Не правильно ответил. Продублируйте сюда, пожалуйста.
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

cors wrote
IgorKonovalov wrote
Добрый день!
Давайте начнем с трейса.
Вываливается при коннекте или на запросе?
Что в conProperties?

0x80020009 - это ошибка, скажем так, "вообще". Нужно ее расковаривать, тут
где-то на форуме есть пример. Если интересно... если не найдете, сам поищу
попозже.
Quoted from:
http://octitbit.2284210.n4.nabble.com/1CV82-tp4640491p4640492.html

Это кусок кода:
Properties conProperties = new Properties();
        conProperties.put("oce.host", "127.0.0.1");
        conProperties.put("oce.driver", "V82Driver");
        conProperties.put("oce.host.user", "A");
        conProperties.put("oce.host.password", "passwd");
        conProperties.put("oce.1c.dbpath", "D:\\All_1C_Bases_82\\DemoAccounting");
        conProperties.put("user", "1");
        conProperties.put("password", "1");

        Connection con = null;
        try {
            con = DriverManager.getConnection("jdbc:oce:dcom", conProperties);
            Statement stat = con.createStatement();

            ResultSet rs = stat.executeQuery("SELECT Code FROM Catalog.ОсновныеСредства");
            // int rs = stat.getMaxRows();

            while (rs.next()) {
                System.out.println(rs.getString(1) + ", " + rs.getString(2) + ", " + rs.getDate(4) + ", " + rs.getString(5));
            }

            stat.close();
            con.close();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

Трейс:
окт 12, 2012 8:56:25 PM com.ipc.oce.jdbc.OCEDriver <clinit>
INFO: Driver registred: com.ipc.oce.jdbc.OCEDriver
окт 12, 2012 8:56:25 PM com.ipc.oce.jdbc.OCEDriver connect
INFO: OCE connect
окт 12, 2012 8:56:29 PM com.ipc.oce.OCApp connect2Filebased
INFO: OCTitbit v0.5.3
окт 12, 2012 8:56:29 PM com.ipc.oce.OCApp connect2Filebased
INFO: Application '-566168124' connected in 4128ms
окт 12, 2012 8:56:29 PM com.ipc.oce.v82.VariantFactoryV82 activate
INFO: Varset table preloaded in 1ms
окт 12, 2012 8:56:29 PM com.ipc.oce.jdbc.OCEDriver connect
INFO: Session number: -566168124
java.sql.SQLException: org.jinterop.dcom.impls.automation.JIAutomationException: Exception occurred. [0x80020009]
at com.ipc.oce.jdbc.OCEResultSet.<init>(OCEResultSet.java:75)
at com.ipc.oce.jdbc.OCEStatement.executeQuery(OCEStatement.java:81)
at octtestlocalbase.OCTtestLocalBase.main(OCTtestLocalBase.java:206)
Caused by: org.jinterop.dcom.impls.automation.JIAutomationException: Exception occurred. [0x80020009]
at org.jinterop.dcom.impls.automation.JIDispatchImpl.invoke(JIDispatchImpl.java:333)
at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:520)
at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:526)
at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:477)
at com.ipc.msa.ComObject.callMethodA(ComObject.java:84)
at com.ipc.oce.OCObject.callMethodA(OCObject.java:123)
at com.ipc.oce.query.OCQueryResult.choose(OCQueryResult.java:76)
at com.ipc.oce.query.OCQueryResult.choose(OCQueryResult.java:61)
at com.ipc.oce.jdbc.OCEResultSet.<init>(OCEResultSet.java:73)
... 2 more
Caused by: org.jinterop.dcom.common.JIRuntimeException: Exception occurred. [0x80020009]
at org.jinterop.dcom.core.JICallBuilder.readResult(JICallBuilder.java:1079)
at org.jinterop.dcom.core.JICallBuilder.read(JICallBuilder.java:957)
at ndr.NdrObject.decode(NdrObject.java:36)
at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:137)
at rpc.Stub.call(Stub.java:113)
at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:901)
at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:856)
at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:266)
at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:153)
at org.jinterop.dcom.impls.automation.JIDispatchImpl.invoke(JIDispatchImpl.java:315)
... 10 more
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 5 секунды)



А чем отличается вот этот подход?
OCQuery query = app.newQuery("SELECT Code, Наименование FROM Catalog.ОсновныеСредства");

         OCQueryResult result = query.execute();
         OCValueTable table = result.unload();

Может его попробовать
Ничем не отличаются. Внутри именно то и вызывается. JDBC модуль это просто обертка над OCQuery и причим.

Ок, коннект проходи. Проблема в самом запросе. А справочник "ОсновныеСредства" вообще есть? Может к нему у этого пользователя нет прав?
OCTitbit developer.
cors cors
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

Права у этого пользователя полные.
Вот этот кусок кода отрабатывает нормально:


            OCQuery query = app.newQuery("SELECT Code, Наименование, Автотранспорт FROM Catalog.ОсновныеСредства");

            OCQueryResult result = query.execute();
            OCValueTable table = result.unload();
            System.out.println(table.listColumns());

            int index = 0;
            OCValueTableRow tRow = table.get(index);
            System.out.println(tRow.getValue("Код"));
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

Странно, завтра или уже в пнд покопаюсь в коде. Вроде бы проблем не было, но все бывает.

Про Ваш вариант, я бы не стал выгружать через "OCValueTable table = result.unload(); ". Все кроме ref-ов затягивается в память. А вот если через OCQueryResultSelection то в памяти лежит только выбранная строка.

OCQueryResult result = query.execute();
OCQueryResultSelection selection = result.choose();
while (selection.next()) {
                .......
}

Если до пнд ничего не отвечу, Вы мене напомните.
OCTitbit developer.
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

Собственно исходники можно посмотреть тут. Если найдете ошибку, то или сами исправьте и потом pull-request - я приму. Или письмецом.
OCTitbit developer.
cors cors
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

Ок, попробую разные способы.
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re[2]: Запрос к 1CV82 вызывает исключение

Я кстати сделал OCTitbit public репозиторием. lib1с это экспериментальный форк  OCTitbit и сейчас они одинаковы.


Fri, 12 Oct 2012 11:08:46 -0700 (PDT) от "cors [via OCTitbit]" <[hidden email]>:
Ок, попробую разные способы.



If you reply to this email, your message will be added to the discussion below:
http://octitbit.2284210.n4.nabble.com/1CV82-tp4640491p4640499.html
To start a new topic under Core, email [hidden email]
To unsubscribe from OCTitbit, click here.
NAML

OCTitbit developer.
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Запрос к 1CV82 вызывает исключение

In reply to this post by cors
jdbc внутри падает именно на choose. См конструктор класса OCEResultSet + проверка обычным(не через jdbc) способом.
OCTitbit developer.