Имя: Пароль:
1C
 
подскажите скрипт запуска 1С в Windows Script Host
Ø
0 MaxS
 
27.10.06
13:33
ничего пока в WSH не понимаю, помогите пожалуйста с примерчиком.
Нужен скрипт запуска 1С 8.0 в режиме ("V8.Application")
Чтобы потом сунуть этот скрипт в назначенные задания для запуска каждые 15 минут.
1 gea
 
27.10.06
13:52
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c c:\progra~1\1cv8\bin\1cv8.exe config /Dc:\cv80\Accounting /NUser /P123 /@c:\auto.txt", 1, true
Set WshShell = Nothing
кажется так, в файле c:\auto.txt содержатся настройки автозапуска
2 gea
 
27.10.06
14:04
Сорри, вместо /D надо /F если база в файле и /S<Адрес>, где
<Адрес> = <имя компьютера, работающего сервером приложений>\<Ссылочное имя инф.базы, известное в рамках сервера 1с:Предприятия>
А на самом деле параметров настроек запуска куча
3 Young
 
27.10.06
14:05
(0) Вот здесь много чего найдёшь по WSH:
http://www.script-coding.info/
В "файлах для скачивания" есть справочный CHM-файл по WSH на русском с кучей примеров кода.
4 MaxS
 
27.10.06
14:17
(1) это как? мне нужен файл (с каким расширением?) в котором нужно написать команду запуска 1С, которая должна запуститься без взаимодействия с рабочим столом.
(3) Спасибо, буду изучать, но дайте (0) чтобы начать? ;)
5 Young
 
27.10.06
14:44
(4) То, что написано в (1,2) нужно написать в текстовый файл с расширением VBS. После этого его можно запускать просто двойным щелчком. Можно запускать и из командной строки:
cscript.exe c:\folder\myfile.vbs
Запуск двойным щелчком равносилен командной строке:
wscript.exe c:\folder\myfile.vbs
Интерпретаторы wscript.exe и cscript.exe у тебя в системе скорее всего есть.
6 Mitrich
 
27.10.06
14:45
(0) А зачем обязательно вызов скрипта пихать в назначенные задания для такой фигни, как запуск 1С в режиме командной строки?
Вариант 1, самый простой - пихай в поле "Выполнить" твоего задания сразу строку
c:\progra~1\1cv8\bin\1cv8.exe ну и далее по тексту
Вариант 2 - делай .bat файл со строкой c:\progra~1\1cv8\bin\1cv8.exe (создаешь текстовый файл и сохраняешь с расширением .bat), потом запускаешь из планировщика
Вариант 3 - делаешь текстовый файл, пихаешь туды код из (1), даешь ему расширение .vbs ну и опять планировщик...
PS Хотя варианты 2 и 3 смахивают на извращение с твоими вводными
7 MaxS
 
27.10.06
15:11
(6) нужно на сервере запускать. если никто не залогинен, то 1С-ка отработает?
В коде 1С сделаны обработки, выдача сообщений в окно сообщений и в журнал 1С и потом автоматический выход.
8 MaxS
 
27.10.06
15:21
(6) Вот ещё доп условия.
допустим запуск каждые 15 минут, не запускать если предыдущий запуск ещё работает. Если работает более, например часа, то принудительно завершить.
Возможно что-то ещё появится...
.
Это все можно настроить в шедуллере, но вдруг сервер умрет и нужно будет сточно восстановить эту задачу на другом сервере, а настраивать параметры и условия будет некому, поэтому если бы все условия и проверки были бы в одном файле, то админам было бы проще.
Я им отдаю файл и говорю запускай каждые 15 мин, остальное мои заботы.
9 XpyM
 
30.10.06
10:14
(8) Получилось сделать то, что требовалось? Мне вот тут тоже нужно автозапуск регламентных процедур, причем с проверкой, что 1С уже запущен и т.п.
10 Николаев Олег
 
30.10.06
10:30
(9) Вообще тема интересная. Я тоже реализовал запуск регламентых процедур, но по образу и подобию идеи системных служб Windows. И запуск реализовал не на WSH а средствами самой 1С-ины. Т.е. утречком запускается 1С-ка под каким-нть специальным пользоватлем и пошло-поехало... Есть справочник "Службы", в нем все хранится, как часто запускать и т.п. Перед выполненнеием задачи службы проверяется запущен ли системный пользователь, службы можно запускать, останавливать, отсылать им сообщения. Есть очередь сообщений для каждой службы которая есть в справочнике "Службы". И таким образом зависимость от настроек винды возникает только один раз - при запуске 1С-ины под системным пользователем. На 8-ке правда енто написано, хотя и на 7-ке тож можно.
11 VV
 
30.10.06
11:09
(10)Я про 7-ку. И как ты обрабатываешь такую ситуацию: запустилось восстановление ГП, еще не закончилось, но началось уже другое задание под тем же пользователем, или, если 1-ый монопольно - то под любым. Как бороться с окном "Каталог пользователя занят"? Оно же со временем не убирается, собака, и процесс 1С висит.
12 Николаев Олег
 
30.10.06
11:37
(11) Такую ситуацию стандартными средствами не обработать никак. Необходимо вводить понятие "диспетчер". Например, это можно реализовать с помощью файла: перед началом восстановления ГП в файл добавляется отметка о том, что информационная база открыта в монопольном режиме, и все запуски должны предварительно проверять информацию из этого файла, с помощью того же WSH например. Как только появляется отметка о закрытии монопольного режима - можно запускать.
13 VZ
 
30.10.06
11:44
Все можно проще....
Процедура ПриНачалеРаботыСистемы()
........
  //VZ --> Для настроек вне ГМ
  Предстарт="";
  Если ФС.СуществуетФайл(КаталогПользователя()+"\start.ert")=1 Тогда
    ОткрытьФормуМодально("Отчет",Предстарт,КаталогПользователя()+"\start.ert");
  ИначеЕсли ФС.СуществуетФайл(КаталогИБ()+"\ExtForms\start.ert")=1 Тогда
    ОткрытьФормуМодально("Отчет",Предстарт,КаталогИБ()+"\ExtForms\start.ert");
  КонецЕсли;
  Если ТипЗначения(Предстарт)=2 Тогда //вернулась строка
    Если Предстарт="Выход" Тогда
      СтатусВозврата(0); Возврат;
    КонецЕсли;
  КонецЕсли;
  //VZ <-- Настройки вне ГМ выполнены
...........
Далее комбинируем....
14 Николаев Олег
 
30.10.06
11:54
(13) "...еще не закончилось, но началось уже другое задание под тем же пользователем, или, если 1-ый монопольно - то под любым. Как бороться с окном "Каталог пользователя занят"? Оно же со временем не убирается, собака, и процесс 1С висит".
15 VZ
 
30.10.06
11:58
(14) Про стеклянный ... - читал инструкцию по применению? Пункт первый: Думай.
16 Николаев Олег
 
30.10.06
12:06
(15) LOL
17 Николаев Олег
 
30.10.06
12:09
(15) ПриНачалеРаботыСистемы() вызывется когда конфгурация УЖЕ загружается но после проверки занят/не занят каталог пользователя. И код который ты написал не сработает никогда, потому как будет висеть именно это волшедбное окно "Каталог пользователя занят".
18 Бертыш
 
30.10.06
12:11
Млин не тупи (17) Очисти поле каталог в списке юзеров у заданного юзера
19 Николаев Олег
 
30.10.06
12:11
А насчет инструкции к "стеклянному", извини, таких предметов нетути... без надобности они мне. :-)
20 VZ
 
30.10.06
12:14
(17) Спасибо за раскрытие глаз. Может, объяснишь, почему эта конструкция у меня долго работает?
21 Николаев Олег
 
30.10.06
12:14
(18) А если база открыта в монопольном режиме?
22 Николаев Олег
 
30.10.06
12:16
(20) :-) Потому что у тебя есть инструкция к "стеклянному".
23 Бертыш
 
30.10.06
12:23
Ну тогда проверяй файл 1Cv8.1CL
24 Бертыш
 
30.10.06
12:25
Файл проверяй на запущенность 1С
а при монопольном запуске формируй промежуточнеый файл и держи его открытым (залоченым) до окончания работы
25 Бертыш
 
30.10.06
12:28
:visim
if exist gnoFail.dat then del gnoFail.dat
if exist gnoFail.dat Goto visim
А файл создавай при монопольном запуске или под нужным акаунтом
ну не знаю я скриптов
batНик вот он
26 Бертыш
 
30.10.06
12:32
(13) Восьмёрка уже исполняет ert файлы? В Восьмёрке есть КаталогИБ()
Ни фига не понял :(
27 VZ
 
30.10.06
13:57
(26) Не, этот пример, конечно же, "семерошный" ;) Но примерно также можно поступить и с "восьмерой". "Стартовая" обработка есть в типовых, немного модифицировать и усё...
Но это, ИМХО, стремно. Все-таки есть у "восьмеры" для "регламентных" работ (т.е. без интерактивного вмешательства) отдельный режим соединения.
28 XpyM
 
30.10.06
17:45
(11) Нет - не катит. А если сервер перезагружен? Кто будет за этим следить?
А если нужно конфигу обновить? А в этот момент проводится обработка? Потом опять на сервер заходить и запускать?
Мне именно нужно, чтобы например раз в час проверялось - крутится-ли процесс 1С, или нет. Если не крутится, то запустить его. Если нужно вый
29 XpyM
 
30.10.06
17:49
Если нужно выйти из 1С, то ставится флажок, и обработчик сам завершает работу системы.
30 XpyM
 
30.10.06
17:54
(27) Это какой-такой отдельный режим соединения???
31 smaharbA
 
30.10.06
18:15
скока можна ?!
Показывал нираз как запускать обработки без изменений конфы ваапче...
и Окно авторизации никому не мешает, совершенно, и для запуска остальных...
32 XpyM
 
30.10.06
18:42
(31) Причем здесь это? Мне не нужно запустить одну обработку при запуске и закончить работу.
Мне нужно, чтобы после запуска 1С выполняла по расписанию некоторые действия.
33 smaharbA
 
30.10.06
18:47
(32) а что действия прописать в обработке сложна ?
Кстати для 7.7 можна запустить подряд скока хошь действий/обработок, тока дейтвия не могут быть процедурами, но могут быть функциями/методами...
(Без изменения конфы)
(Зря неслушаешь меня, может и не ясно выражаюсь, но не дриндю)
34 smaharbA
 
30.10.06
18:48
а уж проверять наличие 1С процесса тышу и не один раз бывало...
35 XpyM
 
30.10.06
19:25
(34) Иде??? Да и потом, а если у меня две разные базы?
Все магические варианты с файлами не проходят.
Потому, как 1С может упасть, а кто потом будет разбираться с тем, что файл остался в папке?
36 XpyM
 
30.10.06
19:28
(33) мне не нужна 7.7 - мне нужна 8.0
Думаю припахать ADO.NET - и то проще будет. :D
По-поводу действий. Еще раз повторяю что мне нужно: При запуске 1С запускаются 5-10 регламентных процедур с разными интервалами и разными действиями. Запускать под каждую из них отдельный 1С - слишком жирно. Поэтому запускается один 1С и там устанавливаются обработчики ожидания.
37 smaharbA
 
30.10.06
19:35
Зря ты меня не слушаешь... Уж в этом то, я неодну собаку съел...
И ненада никаких АДО.НЕТ у тебя все есть подруками, особенно в восьмерке...
38 smaharbA
 
30.10.06
19:37
Короче -
- Вы не знаете кто такой Паниковский ?
- Нет, Вы не знаете кто такой Паниковский.!
- Дак поезжайте в Киев и спросите...
- Нет, Вы поезжайте и спросите...!
(с)
39 XpyM
 
30.10.06
19:49
(37) Ok. Пойдем еще раз - как ты предлагаешь решать мою задачу?
40 smaharbA
 
31.10.06
05:57
Ищущий да обрящет...(с)
41 Шухер
 
31.10.06
06:41
(40) У Паниковского это звучало так: "пилите Шура, пилите" :)
42 XpyM
 
31.10.06
08:46
(40) Мда... Блин, а по существу есть что сказать?
43 smaharbA
 
31.10.06
08:50
(42) Тебе проста нада знать есть 1С или нет, или именно в конкерентной базе ?
Для определения в конкерентной базе можна просто запустить по ОЛЕ и позырить есть кто или нет (в восьмерке есть средства вроде)
А процесс - методов до и более
select * Win32_process where name='1cv8.exe' - ну или как он там в восьмерке зовется...
44 XpyM
 
31.10.06
12:47
(43) Угу... Через OLE из скрипта... Подключится к уже работающей проге. Что-то не представляю я себе, как это сделать.
45 smaharbA
 
31.10.06
13:22
Лениво мне втельмяшивать пока, может кто другой возьмется.
(44) можешь поинтересоваться у народа коль не веришь в правдивость моих слов...
46 XpyM
 
31.10.06
17:49
Мдя... Очень сомневаюсь я, что ты реализовывал что-то подобное в реальности.
47 smaharbA
 
31.10.06
18:00
(46) Еще оди Фома-неверующий...
А зря ты так думаешь...
...
Могу сказать как определить ОЛЕ-неОЛЕ, без изменений конфы, для 7.7 и 8.0
...
Способ определять ПроцессИД из самой 1С тоже придуман Вашим покорным слугой...
Соединить 7.7/8.0 с опенофисом никто иноя как Ваш покорный слуга...
...
и многа еще чего...
(ладно - "и тут Остапа понесло..." (с) :) )
48 smaharbA
 
31.10.06
18:02
+ (47) чтение-запись бинарников, строк неимоверного размера и т.д. и т.п....
И заметьте, все без ВК...
49 smaharbA
 
31.10.06
18:05
+ запуск внешних обработок при старте без какихбыто нибыло изменений конфы (для 7.7) (причем можна из батника)
да многа еще чего, да не - больше...
50 Бертыш
 
31.10.06
18:30
(35) Зря ты тупишь про файлы
Если 1С ка упала файл удалится успешно и всего делов то
Но если тебе хочется людей подурачить дурачь
51 XpyM
 
01.11.06
11:29
(47) Не надо предлагать того, что не нужно. Я же тебе не пишу того, что я делал и того, что я могу.
Что, из того, что ты назвал мне пригодится для _МОЕЙ_ задачи? Чем мне поможет определение идентификатора процесса или запуск обработок не из конфы?
Ты мне просто скажи, как определить, что 1С уже запущена для этой базы на этом компе. Есть решение менее кривое, кроме как блокировка файла?
(50) Я не говорю, что он не удалится, а говорю, что это не совсем прямо. И думал, что (47), который столько всего придумал для 1С нашел что-то свое.
Тем более, что для случая десятка баз нужно придумывать где эти файлы хранить, а главное удалять при падении 1С - иначе они будут плодиться.
52 XpyM
 
01.11.06
11:56
Усе... Буду использовать COM. Через интерфейс IBConnections можно получить список пользователей системы, в том числе и через скрипт.
53 smaharbA
 
01.11.06
17:54
wmic /node:comp process where "name LIKE '1cv8%'" get commandline
...
А вот что я делал, дак врядли вы повторите...(еще посамохвалюсь)
54 smaharbA
 
01.11.06
17:55
"Чем мне поможет определение идентификатора процесса или запуск обработок не из конфы" какраз из конфы, минимум изменений и будешь знать кто где и чего запустил (базу)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн