Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Подключение к 1С 7.7 по OLE. Initialize возвращает false

v7: Подключение к 1С 7.7 по OLE. Initialize возвращает false
Я
   nesterov
 
08.07.19 - 13:00
1C сетевая версия. Подключение из java, библиотека jawin. К двум базам удаётся подключиться, к третьей - нет. В интерактивном режиме добавил профиль базы, в ней создал пользователя под которым подключаюсь, ему назначил права Viewer, в них включил "Использовать в качестве OLE Automation сервера".

Код подключения:
Ole32.CoInitialize();
DispatchPtr app = new DispatchPtr("V77.Application");
Integer var = (Integer) app.get("RMTrade");
String conn = "/D\"" + basepath + "\" /N" + login + " /P" + pwd;
System.out.println("Connection string: " + conn);
Object res = app.invoke("Initialize", var, conn, "NO_SPLASH_SHOW");
System.out.println("res="+res);

Полученный вывод:
[2019-07-08T12:26:44.316+0300] [Payara 5.183] [INFO] [] [] [tid: _ThreadID=163 _ThreadName=Thread-33] [timeMillis: 1562578004316] [levelValue: 800] [[Connection string: /D"D:/data/1C/db/Test_Registrator/" /Nglassfish /PComp17Tut]]
[2019-07-08T12:26:37.495+0300] [Payara 5.183] [INFO] [] [] [tid: _ThreadID=162 _ThreadName=Thread-32] [timeMillis: 1562577997495] [levelValue: 800] [[res=false]]

Подскажите, в чём причина и как подключиться?
 
 
   Ёпрст
 
1 - 08.07.19 - 13:23
   nesterov
 
2 - 08.07.19 - 13:29
Это уже сделано, компонент прописан.
   Ёпрст
 
3 - 08.07.19 - 13:30
Ну, тогда права, пути, пользователи.
   Ёпрст
 
4 - 08.07.19 - 13:30
можно еще базу, открываемую по оле посмотреть через show1c.exe
   Ёпрст
 
5 - 08.07.19 - 13:30
че тама происходит
   nesterov
 
6 - 08.07.19 - 13:33
Пути корректные, пользователи тоже, так как я могу в интерактивном режиме зайти в базу. Насчёт прав поподробнее можно?
   Ёпрст
 
7 - 08.07.19 - 13:37
из пустой базы, по оле, заходит в эту базу ?
   Ёпрст
 
8 - 08.07.19 - 13:37
пересоздай базу в окошке выбора баз, чтоб ветка реестра обновилась
   Ёпрст
 
9 - 08.07.19 - 13:38
база дбф/скуль ? Если первое, то нет ли запроса на реиндекс ?
   Ёпрст
 
10 - 08.07.19 - 13:39
так то, оле зло..Проще прямым запросом взять что надо.
   nesterov
 
11 - 08.07.19 - 13:40
Если в интерактивном режиме в окне подключения нет информационной базы, то при подключении открывается окно для добавления записи. Пересоздавал, в реестре записи обновились.
База DBF, был запрос на реиндексацию при первом подключении, выполнил. Сейчас почитаю про show1c.exe.
   nesterov
 
12 - 08.07.19 - 13:41
У меня задача создавать объекта
   nesterov
 
13 - 08.07.19 - 13:42
объекты
   nesterov
 
14 - 08.07.19 - 13:44
Права на локальной машине одинаковы для баз, к которым удалось/не удалось подключиться, в 1С настроил по аналогии с пользователем в базе, к которой подключиться получается(описано в шапке)
   Ёпрст
 
15 - 08.07.19 - 14:14
(11) оно просто делает процесс запущенный по 1с видимым на экране
   nesterov
 
16 - 08.07.19 - 14:21
Поделитесь, пожалуйста, файлом/ссылкой на скачивание.
   Ёпрст
 
17 - 08.07.19 - 14:32
   nesterov
 
18 - 08.07.19 - 14:33
спасибо
   Ёпрст
 
19 - 08.07.19 - 14:49
Следующий кусок кода позволить сделать "видимой"  открытую через OLE 1С:

    в77=СоздатьОбъект("V77.Application");    // это собственно

    в77.Initialize(в77.RMTrade,"/D","");  // вызов 1С через OLE


    КомандаСистемы(КаталогИБ()+"ExtForms\bin\Show1c.exe");  // а это мы запускаем утилитку "борьбы с невидимками",

                                                          // естественно, путь к утилитке у вас может 

                                                          // быть собственный


2. Как это реализовано?

Алгоритм этой утилитки достаточно прост: при помощи EnumWndProc находим все окна со строкой "Предприятие"
в названии, получаем для каждого окна процесс  (GetWindowThreadProcessId, потом OpenProcess). 
При помощи GetProcessTimes получаем для каждого  время прошедшее с момента запуска. Выбираем процесс
с наименьшим временем жизни (вроде как только что запущенный), говорим ему ShowWindow(hWnd,SW_MAXIMIZE)...

Все.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.