|
Скрипт vbs для v83.COMConnector падает: Прекращена работа программы script host | ☑ | ||
---|---|---|---|---|
0
vi0
19.06.16
✎
10:18
|
Windows 7, 64разрядная
В vbs выполняю следующее: Set v8 = CreateObject("v83.COMConnector") Set Connect = v8.Connect("File=C:\test1;Usr=;Pwd=") Появляется окно с ошибкой "Прекращена работа программы microsoft windows based script host" Если оставить только первую строку - ошибок нет. Если выполнять на Windows XP - ошибок нет. В какую сторону копать? |
|||
1
Звездец
19.06.16
✎
10:23
|
(0) предлагаю лог системы посмотреть для начала
|
|||
2
vi0
19.06.16
✎
10:24
|
(1) какой именно лог и где его смотреть?
|
|||
3
vi0
19.06.16
✎
11:10
|
вот что написано в \Журналы Windows\Приложения
Путь сбойного приложения: C:\Windows\System32\WScript.exe Путь сбойного модуля: C:\Program Files\1cv8\8.3.5.1517\bin\filedb.dll Подозреваю, что это связано со следующими событиями: 1) До этого создание COMConnector из скрипта вызывало ошибку "Невозможно создание объекта контейнером activex v83.comconnector". Хотя его создание из программного кода 1С выполнялось корректно. 2) Я установил 1CEnterprise 8 Server (x86-64).msi. После этого эта ошибка снялась, но появилась новая - см топик. Журнал Виндовс как раз показывает на каталог с 64 приложениями (Program Files), а конкретно на библиотеку filedb.dll Как эту информацию можно использовать? |
|||
4
vi0
19.06.16
✎
11:35
|
Вероятно дело в том, что WScript 32-разрядный
Если запускать явно C:\Windows\SysWOW64\WScript.exe то ошибки нет. Но что-то мне эта тема не нравится. Почему 1С создает 32x COMConnector, а у скрипта ошибка "Невозможно создание объекта контейнером activex"? |
|||
5
hhhh
19.06.16
✎
12:07
|
(4) ну, глупо ожидать что 32х разрядная программа вдруг выдаст 64х разрядный скрипт.
|
|||
6
vi0
19.06.16
✎
12:13
|
(5) как скрипт может быть 64разрядным?
Вопрос такой на данный момент: Как сделать, чтобы операционка создавала COMConnector 32разрядный при запуске скрипта, также как это делает 1С если из ее програмного кода создавать COMConnector? |
|||
7
vi0
19.06.16
✎
14:56
|
думал, может v83.Application использовать, а не v83.COMConnector, но там тоже засада - если уже открыт к.н. сеанс в файловой базе, то второй должен быть той же версии, иначе ошибка
а v83.Application явно версию 1с задавать не позволяет |
|||
8
Звездец
19.06.16
✎
14:59
|
И чем тебе это не нравится? Хочешь универсальности, то сначала определи битность, а потом запусти нужный(4)
|
|||
9
vi0
19.06.16
✎
15:01
|
(8) не нравится тем, что это будет работать на удаленных точках и должно работать автономно надежно
ничего слетать "само" не должно ну и настойки минимальные первоначальные |
|||
10
Звездец
19.06.16
✎
15:27
|
Так и не надо никаких настроек. Систему определил и нужный дергнул(9)
|
|||
11
Beretta
19.06.16
✎
15:29
|
Есть подозрение, что все это можно на том же 1с и написать
|
|||
12
Звездец
19.06.16
✎
15:29
|
Так проблемы не будет скорее всего, неинтересно(11)
|
|||
13
vi0
19.06.16
✎
16:34
|
(11) нужно прозрачно для пользователя делать
вот мои еще мои попытки WshShell. Запустить 1с в неотображаемом окне |
|||
14
Звездец
19.06.16
✎
16:37
|
(13) что значит прозрачно для пользователя? чем фоновое задание не устраивает?
|
|||
15
Звездец
19.06.16
✎
16:39
|
(13) окно не отображаемое, и будут пользователь комп выключать пока процесс не завершился
|
|||
16
vi0
19.06.16
✎
16:42
|
(14) > что значит прозрачно для пользователя?
нужно минимизировать раздражители для пользователя в виде окон > чем фоновое задание не устраивает? клиент-серверная база в клиентском контексте должна запустить ряд запусков файловой базы если использовать фоновые задания то они будут на сервере |
|||
17
Звездец
19.06.16
✎
16:44
|
(16) файловые базы где лежат?
|
|||
18
vi0
19.06.16
✎
16:45
|
(17) локально
|
|||
19
vi0
19.06.16
✎
16:46
|
пока что все больше склоняюсь к запуску командной строкой
смущает здесь открытие заставки 1с и сложность с передачей результата запуска завершенного процесса 1с для последующего процесса Например, что РИБ пришел с обновлением конфигурации и нужно запустить кофигуратор с параметром UpdConfig |
|||
20
Звездец
19.06.16
✎
16:50
|
(19) так заморачиваться для обновления риб?
|
|||
21
vi0
19.06.16
✎
16:51
|
(20) а какие альтернативы? БСП? пока не рассматриваю
|
|||
22
Звездец
19.06.16
✎
16:53
|
(21) ты так часто РИБ обновляешь? не проще ли подключиться да щелкнуть мышкой. Ну или в БСП посмотреть как там сделана выдача сообщения и запуск обновления
|
|||
23
vi0
19.06.16
✎
18:11
|
(22) да, пожалуй аналог БСП попробую -
запускать файловую базу и полностью ей управление передавать: пришло обновление - 1с закрывается и при закрытии запускает скрипт, который обновит конфигурацию и опять 1с запустит для продолжения обмена если бы с ComConnector не было заморочек, было бы веселее, конечно |
|||
24
vi0
20.06.16
✎
05:41
|
(22) подключиться и мышкой точно не вариант
конечных узлов большое количество |
|||
25
hhhh
20.06.16
✎
06:29
|
(24) пользуйся планировщиком windows. Вещь. Подсовываешь ему расписание и bat-файл, он тебе всё обновляет в режиме полной скрытности от пользователя.
|
|||
26
hhhh
20.06.16
✎
06:47
|
в бат-файле строчка
"C:\Program Files\1cv82\8.2.19.106\bin\1cv8.exe" DESIGNER /F"D:\bases\buh20" /N"адм" /P111 /UpdateDBCfg |
|||
27
vi0
20.06.16
✎
08:48
|
(25) нужна реализация с минимальным вмешательством администратора
|
|||
28
vi0
20.06.16
✎
08:50
|
вот здесь Книга знаний: V8: Программное создание БД на сервере приложений нашел ответ на мой вопрос (4) "Почему 1С создает 32x COMConnector, а у скрипта ошибка "Невозможно создание объекта контейнером activex"?"
ответ следующий: 2) Дальнейшее "гугленье" показало, что Windows Script Host, имеющийся в Win7 64 не создает 32-х разрядные COM объекты. 3) Скачиваем 32-х разрядный WSH с сайта http://www.microsoft.com/download/en/details.aspx?id=8247 от Win XP. (Возможно достаточно взять WScript.exe от 32-х битной Win7, но такой не нашлось поблизости) 4) Распаковываем (например WinRAR-ом) в определенную папку (у меня c:\WScript32\) 5) Запускаем скрипт п.1 C:\WScript32\WScript.exe c:\scripts\Create1C.vbs |
|||
29
MM
20.06.16
✎
09:23
|
А чем решение из (4) плохо? В 64-битных системах есть 2 WScript32, в C:\Windows\SysWOW64 хранятся компоненты системы для совместимости с 32-битными приложениями.
(28) Естественно, 64-битное приложение не может загрузить к себе в адресное пространство 32-битные DLL. (26) Можно повесить в скриптик, который дождётся завершения предприятия и произведёт обновление. А его запуск может быть выполнен перед выходом из предприятия, когда надо обновиться. |
|||
30
vi0
20.06.16
✎
09:38
|
(29) > Естественно, 64-битное приложение не может загрузить к себе в адресное пространство 32-битные DLL.
Ты считаешь, что это приложение 64-битное: C:\Windows\System32\wscript.exe ? |
|||
31
MM
20.06.16
✎
09:49
|
В C:\Windows\System32 лежит 64х битное, если кто стороннее не положил, в C:\Windows\SysWOW64 - 32х битное для совместимости.
32-приложения, автоматически перенаправляются в C:\Windows\SysWOW64, если, конечно, они не вызывают специальные функции, чтобы отключить редирект. |
|||
32
vi0
22.06.16
✎
17:29
|
(31) весело
|
|||
33
hhhh
22.06.16
✎
17:34
|
(27) а где тут вмешательство администратора. У меня тут такой обмен уже 4 года крутится без никакого администратора. Даже все забыли, что он есть.
|
|||
34
vi0
22.06.16
✎
21:16
|
(33) я имею введу предварительные настройки на конечных узлах
единственное, если рулить планировщиком тоже скриптами |
|||
35
Барматолог
23.06.16
✎
12:13
|
(0) Платформу патчили unipatch-ем (backbas.dll)?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |