Имя: Пароль:
1C
 
BAT для запуска 1С 8
0 Михей
 
16.09.08
14:29
Возникла следующая задача.

У нас на терминальном сервере запущено три клиентских соединения с разными базами, которые выполняют регламентные задания (не те которые можно создавать в конфигураторе). Но возникают ситуации, по разным причинам (перезагрузка сервера, администратор кильнул все процессы, остановилась служба сервера 1С:Предприятия и т.п.) когда эти клиентские сессии обрываются и соответственно не работают регламентные задания.

Как вариант написать BAT - файл который по шедулеру проверял бы запущена 1с - ка или нет, и если нет то запустить.

Может у кого есть че то готовое? Не хочеться изобретать велосипед.

Спасибо!
1 IronDemon
 
16.09.08
14:33
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2:Win32_Process")
If Err.Number <> 0 Then
   WScript.Echo Err.Number & ": " & Err.Description
   WScript.Quit
End If
QueryText = "SELECT * FROM Win32_Process WHERE Name = '1Cv8.exe'"
Set colProc = objService.ExecQuery(QueryText)
If colProc.Count > 0 Then
   'WScript.Echo "Сервер уже запущен"
   WScript.Quit
End If
'WScript.Echo "Запускаем"
Res = objClass.Create("C:\Program Files\1cv81\bin\1cv8.exe ""Параметры""", Null, Null, PID)
If Res <> 0 Then
 WScript.Echo "Код ошибки: " & Res
 WScript.Quit
End If
2 Михей
 
16.09.08
14:36
(1) о!, спасибо!
3 Михей
 
16.09.08
16:01
Как из объекта Win32_Process узнать что это клмент такой то базы данных?
4 IronDemon
 
16.09.08
16:06
А этого в первом вопросе не было :)
Возможно можно проанализировать командную строку?
5 Михей
 
16.09.08
16:19
да, из командной строки вытянуть впринципе можно
6 Salvador Limones
 
16.09.08
16:22
CommandLine выдаст только "C:\Program Files\1cv81\bin\1cv8.exe" enterprise
7 Михей
 
16.09.08
16:23
у мну побольше инфы выдает
8 Михей
 
18.09.08
12:05
up

вопрос еще актуален

Опеределить что запущен процесс 1cv8.exe через Win32_Process можно, но как определить к какой базе относиться этот процесс?
9 OpKc
 
18.09.08
12:10
может, для каждой базы прописать свой заголовок окна и проверять по нему?..
10 Михей
 
18.09.08
12:10
ап
11 Михей
 
18.09.08
12:11
(9) не против. Заголовки окон и так разные.

Как это сделать?
12 OpKc
 
18.09.08
12:14
хз :) надо подумать..
13 Черт
 
модератор
18.09.08
12:15
перезагрузка сервера, администратор кильнул все процессы, - жесть
админа убить нужно
14 asady
 
18.09.08
12:18
(0) наводка.
если база файловая, то
в папке
C:\Documents and Settings\login\Application Data\1C\1Cv81\c97b2b53-8eaf-4bb8-937b-f98060271442 (GUID базы)
при запуске сессии появляется файлик
15 Михей
 
18.09.08
12:24
(14) база SQL
16 Михей
 
18.09.08
12:25
(13) к примеру обновление конфигурации, всех то выгнать нуно
17 Михей
 
18.09.08
12:35
ап ап
18 asady
 
18.09.08
12:35
(15) для скульной тоже самое.
файлик  с именем 1Cv8.lck
19 Михей
 
18.09.08
12:45
(18) сенкс, вроде есть
20 Михей
 
18.09.08
13:26
а эти GUID они я так понял на разных компьютерах разные?

Запустил на терминале у GUID - а одно значение
Запустил на своем компе у GUID - а другое значение...
21 Михей
 
18.09.08
13:32
ап
22 smaharbA
 
18.09.08
13:37
добавь в строку запуска всех клиентов левый параметр /1, /2, /3
23 smaharbA
 
18.09.08
13:41
а вообщето можно депенсы найти, но код будет сложнее, да и ни кчему это - баловство
24 asady
 
18.09.08
13:50
(20) тебе же на одном компе это надо делать.
25 Serg_1960
 
18.09.08
14:35
(0) Вы же все равно конфу "подправили", что-бы запускать "свои" регламенты...Вот пусть она(конфа) и определяет <запущена ли 1С> :о)
А в планировщике батничек пусть "тупо" считает количество задач. Если их не три - пусть вызывает все три базы поочереди...
Закон Брукера: Даже маленькая практика стоит большой теории.