Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.