|
Проверить монопольный режим в bat файле | ☑ | ||
---|---|---|---|---|
0
Franchiser
гуру
17.05.18
✎
14:33
|
Как написать батник, который запускает базу только в сучае если не установлен монопольный режим?
Написал 2 варианта: 1.findstr \"IsMono\",\"Y\" d:\bd\syslog\links.tmp&&echo монопольно||echo не монопольно 2. CLS type d:\bd\syslog\links.tmp|find /I """IsMono"",""Y""" >nul && goto lab1 || goto lab2 :lab1 echo монопольно & pause & exit :lab2 echo не монопольно & pause & exit Pause Есть ли вариант без файла links.tmp, например обращением в sql ? |
|||
1
Волшебник
17.05.18
✎
14:34
|
Если монопольный режим установлен, то запуск не получится
|
|||
2
Franchiser
гуру
17.05.18
✎
14:36
|
(1) Ну мне и нужно запустить если монопольный режим не установлен, а если установлен ничего не делать
|
|||
3
Волшебник
17.05.18
✎
14:37
|
(2) Сразу запускай
|
|||
4
Franchiser
гуру
17.05.18
✎
14:39
|
в этом случае под регламентным пользователем возникает предупреждение "база занята" и постоянно висит пока не снимишь вручную
|
|||
5
Волшебник
17.05.18
✎
14:41
|
(4) Установи ограничение по времени выполнения задания.
|
|||
6
Franchiser
гуру
17.05.18
✎
14:42
|
я интересуюсь в познавательных целях.
У меня есть регламенты в монопольном режиме и не в монопольном, они могут пересекаться. |
|||
7
Волшебник
17.05.18
✎
14:55
|
(6) У монопольных регламентов первым делом подключайся к 1С серверу и выставляй запрет подключений
|
|||
8
Сияющий в темноте
17.05.18
✎
18:54
|
Попробуй из скрипта по оле цепануться,и если прошло,уже можно робота запускать,а потом рвать подключение,чтобы гарантированно никто монопольку не сделал
|
|||
9
vcv
17.05.18
✎
19:21
|
Есть отличная консольная утилита для такой надобности
R:\>1cusrmon.exe Монитор пользователей 1С:Предприятия 7.7. Параметры командной строки: R:\1cusrmon.exe [-Dn] [-En] [-W] <каталог базы> -D0 : не показывать список пользователей -D1 : показывать все режимы, кроме Монитора (по умолчанию) -D2 : показывать всех пользователей -En : установка errorlevel 1 -E0 : не устанавливать (по умолчанию) -E1 : если база открыта монопольно -E2 : если открыт конфигуратор -E3 : если открыто 1С:Предприятие или блокирующий данные конфигуратор -E4 : если открыт любой режим, кроме Монитора -E5 : если открыт любой режим -W : ждать освобождения базы по условию параметра -En Установка errorlevel: 0 - база свободна (условие параметра -En не выполняется) 1 - база занята (условие параметра -En выполняется) 2 - прервано ожидание или ошибка |
|||
10
Franchiser
гуру
17.05.18
✎
22:09
|
(9) на ИС пишет "файл не найден".
Написал батник с вызовом скрипта vbs, который подключается к скулю. |
|||
11
Franchiser
гуру
17.05.18
✎
22:10
|
Сейчас у меня я немного другая задача: нужно проверять дату актуальности , и если она в прошлом месяце, то запускать базу.
|
|||
12
trdm
17.05.18
✎
23:15
|
(9) Где взять? Можешь намылить?
|
|||
13
Garykom
гуру
17.05.18
✎
23:20
|
(12) Ищется по имени
|
|||
14
trdm
17.05.18
✎
23:54
|
куча ссылок на дырку от бублика
|
|||
15
Garykom
гуру
18.05.18
✎
00:03
|
||||
16
trdm
18.05.18
✎
00:08
|
(15) на ИС пишет "файл не найден".
Намыльте хоть исходник, нету стартманей. |
|||
17
Tateossian
18.05.18
✎
02:22
|
(0) Создаешь пустую базу 1С. Вообще без строчки кода. Батником запускаешь эту базу, примерно вот так:
START "" "%ProgramFiles%\1cv8\%CUR_VERSION_1C%\bin\1cv8.exe" "ENTERPRISE /F Q:\Файловые\Пустая /N "" /P "" /RunModeOrdinaryApplication /Execute "%ProgramData%\ОбработкаПередачиУправления.epf" /Debug -tcp" А вот тут ОбработкаПередачиУправления в инициализационном блоке Запускаешь нужную тебе базу, в блоке попытка/исключение. Если база откроется, завершаешь работу системы. Если нет - выводишь сообщение о факапе etc. |
|||
18
Tateossian
18.05.18
✎
02:25
|
(17) А если именно в бат файле нужен код возврата, то вот эта процедура глобального контекста ЗапуститьСистему(<ДополнительныеПараметрыКоманднойСтроки>, <ДождатьсяЗавершения>, <КодВозврата>) последним параметром передает код возврата, который будет 1 или 101 в случае неуспешного запуска.
|
|||
19
ildary
18.05.18
✎
02:59
|
(0) вы еще забыли отработать случай, когда база аварийно была закрыта после монопольной работы. Для этого надо попытаться удалить файл links.tmp - если он удалился, значит скорей всего надо заходить монопольно с переиндексацией.
|
|||
20
Franchiser
гуру
18.05.18
✎
10:17
|
(19) база SQL, какая переиндексация и аварийное завершение?
|
|||
21
1Сергей
18.05.18
✎
10:21
|
Речь про клюшки же?
|
|||
22
ildary
18.05.18
✎
10:40
|
(20) я узнал о SQL только в двадцатом сообщении, а не в нулевом.
|
|||
23
Franchiser
гуру
18.05.18
✎
10:49
|
(21) да
|
|||
24
Franchiser
гуру
18.05.18
✎
10:50
|
(22) последнее слово в сообщении (0) "SQL"
|
|||
25
Franchiser
гуру
19.05.18
✎
10:04
|
Скиньте 1cusrmon exe
Вот ещё тема: https://www.forum.mista.ru/topic.php?id=711338&page=2 Ждём Злопчинского и Епрст |
|||
26
Franchiser
гуру
19.05.18
✎
10:15
|
Хочу в скрипте vbs получить активных пользователей, не понял что там с хендлом со смещением 200000 в lck
|
|||
27
Franchiser
гуру
19.05.18
✎
10:54
|
Хендл=Враппер.CreateFileA(Файл,GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE, Пусто, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS + FILE_ATTRIBUTE_NORMAL, 0);
Для Сч=-ТЗ.КоличествоСтрок() По -1 Цикл Рез=Враппер.LockFile(Хендл, 2000000 - Сч, 0, 1, 0); Рез=Макс(Рез,-Рез); Враппер.UnlockFile(Хендл, 2000000 - Сч, 0, 1, 0); Если Рез=1 Тогда ТЗ.УдалитьСтроку(-Сч); КонецЕсли; КонецЦикла; |
|||
28
Franchiser
гуру
19.05.18
✎
10:59
|
Можете переписать на vbs этот код, нужна компонента dynwrapper как я понял
|
|||
29
trdm
21.05.18
✎
13:00
|
Так что, ни у кого не завалялась 1cusrmon.exe с исходником?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |