Вход | Регистрация



Проверить монопольный режим в bat файле

Проверить монопольный режим в bat файле
Я
   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
Если монопольный режим установлен, то запуск не получится
   Franchiser
 
2 - 17.05.18 - 14:36
(1) Ну мне и нужно запустить если монопольный режим не установлен, а если установлен ничего не делать
   Волшебник
 
3 - 17.05.18 - 14:37
(2) Сразу запускай
   Franchiser
 
4 - 17.05.18 - 14:39
в этом случае под регламентным пользователем возникает предупреждение "база занята" и постоянно висит пока не снимишь вручную
   Волшебник
 
5 - 17.05.18 - 14:41
(4) Установи ограничение по времени выполнения задания.
   Franchiser
 
6 - 17.05.18 - 14:42
я интересуюсь в познавательных целях.
У меня есть регламенты в монопольном режиме и не в монопольном, они могут пересекаться.
   Волшебник
 
7 - 17.05.18 - 14:55
(6) У монопольных регламентов первым делом подключайся к 1С серверу и выставляй запрет подключений
   Сияющий в темноте
 
8 - 17.05.18 - 18:54
Попробуй из скрипта по оле цепануться,и если прошло,уже можно робота запускать,а потом рвать подключение,чтобы гарантированно никто монопольку не сделал
   vcv
 
9 - 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 - прервано ожидание или ошибка
   Franchiser
 
10 - 17.05.18 - 22:09
(9) на ИС пишет "файл не найден".
Написал батник с вызовом скрипта vbs, который подключается к скулю.
 
 Рекламное место пустует
   Franchiser
 
11 - 17.05.18 - 22:10
Сейчас у меня я немного другая задача: нужно проверять дату актуальности , и если она в прошлом месяце, то запускать базу.
   trdm
 
12 - 17.05.18 - 23:15
(9) Где взять? Можешь намылить?
   Garykom
 
13 - 17.05.18 - 23:20
(12) Ищется по имени
   trdm
 
14 - 17.05.18 - 23:54
куча ссылок на дырку от бублика
   Garykom
 
15 - 18.05.18 - 00:03
   trdm
 
16 - 18.05.18 - 00:08
(15) на ИС пишет "файл не найден".
Намыльте хоть исходник, нету стартманей.
   Tateossian
 
17 - 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.
   Tateossian
 
18 - 18.05.18 - 02:25
(17) А если именно в бат файле нужен код возврата, то вот эта процедура глобального контекста ЗапуститьСистему(<ДополнительныеПараметрыКоманднойСтроки>, <ДождатьсяЗавершения>, <КодВозврата>)  последним параметром передает код возврата, который будет 1 или 101 в случае неуспешного запуска.
   ildary
 
19 - 18.05.18 - 02:59
(0) вы еще забыли отработать случай, когда база аварийно была закрыта после монопольной работы. Для этого надо попытаться удалить файл links.tmp - если он удалился, значит скорей всего надо заходить монопольно с переиндексацией.
   Franchiser
 
20 - 18.05.18 - 10:17
(19) база SQL, какая переиндексация и аварийное завершение?
   1Сергей
 
21 - 18.05.18 - 10:21
Речь про клюшки же?
   ildary
 
22 - 18.05.18 - 10:40
(20) я узнал о SQL только в двадцатом сообщении, а не в нулевом.
   Franchiser
 
23 - 18.05.18 - 10:49
(21) да
   Franchiser
 
24 - 18.05.18 - 10:50
(22) последнее слово в сообщении (0) "SQL"
   Franchiser
 
25 - 19.05.18 - 10:04
Скиньте 1cusrmon exe
Вот ещё тема: https://www.forum.mista.ru/topic.php?id=711338&page=2
Ждём Злопчинского и Епрст
   Franchiser
 
26 - 19.05.18 - 10:15
Хочу в скрипте vbs получить активных пользователей, не понял что там с хендлом со смещением 200000 в lck
   Franchiser
 
27 - 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 Тогда
            ТЗ.УдалитьСтроку(-Сч);
        КонецЕсли;
    КонецЦикла;
   Franchiser
 
28 - 19.05.18 - 10:59
Можете переписать на vbs этот код, нужна компонента dynwrapper как я понял
   trdm
 
29 - 21.05.18 - 13:00
Так что, ни у кого не завалялась 1cusrmon.exe  с исходником?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует