Имя: Пароль:
1C
 
Проверить монопольный режим в 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  с исходником?
Основная теорема систематики: Новые системы плодят новые проблемы.