Имя: Пароль:
1C
 
запрос 1C в java
0 Проф
 
15.02.18
11:47
Не работает запрос, что не так делаю?
private void query() throws Exception{
    
        DispatchPtr zapros = (DispatchPtr) ref.invoke("NewObject", "Запрос");
        zapros.put("Текст", "ВЫБРАТЬ"
                + "|ФизическиеЛица.Ссылка"
                + "|ИЗ"
                + "|Справочник.ФизическиеЛица КАК ФизическиеЛица");
    
        zapros.put("Текст", false);

    DispatchPtr rezult = (DispatchPtr) zapros.invoke("Выполнить");
        
        Ole32.CoUninitialize();
        ref.close();
        


    }


ошибка

org.jawin.COMException: 80020009: ??????.

    at org.jawin.marshal.GenericStub.dispatchInvoke0(Native Method)
    at org.jawin.marshal.GenericStub.dispatchInvoke(GenericStub.java:201)
    at org.jawin.DispatchPtr.invokeN(DispatchPtr.java:587)
    at org.jawin.DispatchPtr.invokeN(DispatchPtr.java:555)
    at valueTable.query(valueTable.java:70)
    at valueTable.getQuery(valueTable.java:55)
    at class1.main(classNDFL.java:11)
1 Вафель
 
15.02.18
11:51
может палочек в тексте не нужно?
2 Проф
 
15.02.18
11:52
(1) без них тоже побывал, таже ошибка.
3 Вафель
 
15.02.18
11:52
записши запрос в 1 строку
4 Проф
 
15.02.18
11:54
КОМ - работает,
выборку из справочника делает, запрос нет.
5 Shur1cIT
 
15.02.18
11:57
(0) понимаю что вопрос не в тему, а для чего это? может проще сервис на стороне 1С поднять?
6 бомболюк
 
15.02.18
11:58
zapros.put("Текст", false); - а это точно нужно?
7 Проф
 
15.02.18
11:58
DispatchPtr zapros = (DispatchPtr) ref.invoke("NewObject", "Запрос");
        zapros.put("Текст", "ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица");

не работает, таже ошибка.
8 Проф
 
15.02.18
11:59
(5) цель выполнить запрос в яве
9 Проф
 
15.02.18
12:01
(3), (6) спасибо!
10 Вафель
 
15.02.18
12:02
Ну и посмотри как в яве многострочные строки формируются
11 Проф
 
15.02.18
13:30
рабочий вариант.
    private void query() throws Exception{
    
        DispatchPtr zapros = (DispatchPtr) ref.invoke("NewObject", "Запрос");

        StringBuilder sb = new StringBuilder();
        
        sb.append("ВЫБРАТЬ" + "\n");
        sb.append("ФизическиеЛица.Наименование" + "\n");
        sb.append("ИЗ" + "\n");
        sb.append("Справочник.ФизическиеЛица КАК ФизическиеЛица" + "\n");
        
        zapros.put("Текст", sb.toString());

        DispatchPtr rezult = (DispatchPtr) zapros.invoke("Выполнить");
    
        DispatchPtr viborka = (DispatchPtr) rezult.invoke("Выбрать");
         while ((Boolean) viborka.invoke("Следующий")) {
            
              String NameKontr = (String) viborka.get("Наименование");
              System.out.println(ref.invoke("String", NameKontr));
        
         }
            
        Ole32.CoUninitialize();
        ref.close();
        


    }
12 mingw
 
15.02.18
14:55
ТС извини конечно. Но как программист 1С. И как программист java.

Могу сказать что идиот. Кто то из нас.
13 mingw
 
15.02.18
14:58
Твоя ОЛЯ в 2018 году. С 64 бит. Или на хитром фреше.

Или ломаться будет постоянно. Или просто не даст.
14 Shur1cIT
 
15.02.18
15:07
(13) уже ему предлогал в посте (5) сервисы поднять в 1С как это обычно принято, его цель именно "выполнить запрос в яве"
15 Asmody
 
15.02.18
15:09
Запрос в 1С через COM из java?!
Только в гамаке стоя на лыжах.
16 Nyarlathotep
 
15.02.18
15:17
(14) (15) Нормальный запрос, все работает, что вы пристали то к нему?
17 Вафель
 
15.02.18
15:18
может тс просто тренируется на яве писать
18 mingw
 
15.02.18
15:35
(17) не зная даже 1С
19 Вафель
 
15.02.18
15:41
(18) а что для этого сначала нужно 1с выучить?
20 Shur1cIT
 
15.02.18
15:51
(16)  в наше время для обмена данными принято использовать api когда клиент не обязан знать внутреннее устройство самой базы (те через обстакцию работать).
21 Shur1cIT
 
15.02.18
15:52
обстакцию = абстракцию
22 Проф
 
15.02.18
20:12
(18) ты где это прочитал?
23 Проф
 
15.02.18
20:14
части аудитории на мисте, походу надоедает комменты на маил ру и рамблере писать про хохлов и амеров, они здесь ещё успевают.
24 mingw
 
15.02.18
20:55
(22) В твоем коде. В тупых ошибках.

Или ты текст запроса в 1С так же складываешь?
С "|" когда стоят "+".
25 Fram
 
15.02.18
21:05
(23) https://ru.wikipedia.org/wiki/Лучшая_практика
вот это тебе пытаются объяснить
26 Fram
 
15.02.18
21:07
(25)+ и в твоем случае Лучшей практикой будет (5)
кстати, код в (7) вполне рабочий, если ты, конечно, строку (6) потом убрал
27 NorthWind
 
15.02.18
22:06
(16) известно, что на российском форуме в качестве ответа на любой вопрос изначально будет куча реплик на тему какой ты... глупый человек и почему тебе не надо делать то что ты делаешь, и под конец, возможно, все-таки ответят по существу вопроса :)
28 Tateossian
 
15.02.18
22:26
Я писал dll на Native-API, с блоком API от ВК 1С и такую же внутри от jvm и средствами cpp эти две системы обменивались.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн