Проблема с пакетным режимом

1. Alochka 21.11.16 09:38 Сейчас в теме
По заданию планировщика ночью запускается пакетный режим с обработкой. Если в базе в это время имеется загруженная 1с монопольно, то сеанс который запускался с пакетного режима остается висеть с надписью "Ошибка блокировки данных. Возможно данные используются другой задачей." Что можно сделать, чтобы оно не висело, а просто если ошибка блокировки, то все закрывалось.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. vcv 89 21.11.16 12:57 Сейчас в теме
(1) Существует, например, такая консольная утилита. Можно проверять, что творится в базе и соответственно реагировать.
Монитор пользователей 1С:Предприятия 7.7.
Параметры командной строки:
C:\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 - прервано ожидание или ошибка
Показать
2. S.V.Y 17 21.11.16 10:45 Сейчас в теме
У меня в кроне раз в 5 минут выполняется вот такой скрипт:

BEGIN
WIN-EXIST: "1С:Предприятие" WIN-EXIST: "Регистрация Информацион*" OR


WHILE
FOR-CHILD-WINDOWS: "Ошибка блокировки*"
WIN-CLICK: "%FOUND-WINDOW%" "OK"
S" Lord_click -- Ошибка блокировки данных" CRON-LOG
;FOR-CHILD-WINDOWS

FOR-WINDOWS: "Регистрация Информацион*"
WIN-CLICK: "%FOUND-WINDOW%" "OK"
S" Lord_click_OK" CRON-LOG
;FOR-WINDOWS

FOR-CHILD-WINDOWS: "Каталог пользователя занят!*"
WIN-CLICK: "%FOUND-WINDOW%" "OK"
S" Lord_click_ok -- Каталог пользователя занят!" CRON-LOG
;FOR-CHILD-WINDOWS

REPEAT

закрывает сам все лишнее раз в 5 минут
Alochka; корум; +2 Ответить
4. Alochka 22.11.16 09:59 Сейчас в теме
Спасибо большое за ответы.
Со скриптом поиграюсь, а утилита только для просмотра? Сделать в ней ничего нельзя?
5. Alochka 22.11.16 10:03 Сейчас в теме
Крон ведь под Линуксы? А как такое обычным батником сделать под винду? Мне нужно только "Ошибка блокировки".
6. S.V.Y 17 22.11.16 10:16 Сейчас в теме
(5) Не только :) - тынц

Оставьте только то, что нужно -
BEGIN
WIN-EXIST: "1С:Предприятие" WIN-EXIST: "Регистрация Информацион*" OR

WHILE
FOR-CHILD-WINDOWS: "Ошибка блокировки*"
WIN-CLICK: "%FOUND-WINDOW%" "OK"
S" Lord_click -- Ошибка блокировки данных" CRON-LOG
;FOR-CHILD-WINDOWS

REPEAT
22. Shevon 1 20.05.18 03:50 Сейчас в теме
(5)
А как такое обычным батником сделать под винду?


tskill *1cv7* /a /v в начале батника, запускаемого планировщиком.
7. Alochka 22.11.16 10:53 Сейчас в теме
А батником никак? Просто мне проблематично будет еще какие-то программы туда поставить, я не админ.
9. Shreki2015 2 22.11.16 16:49 Сейчас в теме
(7)
Вы хотели бороться со следствием, не видеть ""Ошибка блокировки данных. Возможно данные используются другой задачей."", как итог Ваша обработка не отработает.
предлагаю бороться с причиной, убрать пользователей из базы и сделать обработку.

ранее уже говорилось об выкидывании пользователей из базы
как вариант предлагалось убирать шару, будет выкидывать открытых пользователей.

а если поиграться вот так:
NET STOP NETLOGON
NET START NETLOGON

а затем уже запускать пакетник(монопольно, ибо может быть нужна переиндексация) и Вашу обработку.

P.S.:NETLOGON - это "Сетевой вход в систему"
11. Alochka 22.11.16 17:39 Сейчас в теме
(9) Пользователи в терминалах.
Я так понимаю, такой способ будет работать если пользователи подключены через сеть.
Но я попробовала, на первой строчке пишет что служба не запущена, на второй что ошибка 5 и недостаточно прав )

Я думаю можно использовать Killtask с указанием процесса и пользователя, предварительно сделать пользователя специально для этой процедуры.
18. Shreki2015 2 06.12.16 17:44 Сейчас в теме
(11) в терминале не сработает.
killtask помогло?

сеансы можно завершать при простое. но это закроет и Ваш сеанс, если вдруг что-то программировали и оставили в ожидании выхода всех из программы чтоб сохранить к примеру вечером.
10. v3rter 22.11.16 17:25 Сейчас в теме
(7)
(8) Что значит "батником нельзя"??

В
(3) подсказка про Консольный монитор пользователей 1cusrmon.exe - http://infostart.ru/public/15471/
Бесплатная(!) консольная утилита, которая при правильном подборе параметров вернёт в errorlevel занята база монопольно или нет.

Вот пример ожидания освобождения базы: http://forum.infostart.ru/forum24/topic21304/message225023/#message225023
( предполагается, что 1cusrmon.exe скопирован в c:\program files\1cv77\bin )

(9)
а если поиграться вот так: NET STOP NETLOGON && NET START NETLOGON || NET START NETLOGON
то при некотором невезении можно остаться и без базы.

В конце концов если база под RDP/RemoteApp , то можно настроить автозавершение сеансов удаленных рабочих столов.
А если базы не жалко, то есть OPENFILES /Disconnect /OP
12. S.V.Y 17 23.11.16 10:52 Сейчас в теме
(10) То и значит. Пример дай чистого *.bat, без использования сторонних утилит, который закроет окно по тексту сообщения.
(9) Пользователей-то оно выкинет, а вот LCK, останется, так что не выход, 1С все равно не даст монопольно запуститься.
13. v3rter 23.11.16 10:54 Сейчас в теме
Проще настроить автозавершение терминальных сеансов, например на завершение после 2-х часов неактивности. Можно через административную политику или через конфигурацию сервера терминалов в свойствах RDP-Tcp, тогда выкидывает гарантированно, но затрагивает всех пользователей, включая админа. Можно в "локальных пользователях" персонально в настройках каждого пользователя на закладке "сеансы" выставить завершение отключенного и ограничение бездействующего сеанса по 2 часа и выбрать "завершить сеанс", но такое сработает при условии, что пользователи уходя выключают компы.

(12) Проверять утилитой надо до запуска пакетного режима, тогда не надо будет ничего закрывать. Хоть банальным способом - попробовать удалить lck, если удалится или если его нет, то вперёд.
20. Shreki2015 2 06.12.16 17:47 Сейчас в теме
(13) в локальных пользователях будет лучше. чтоб админов не выкидывать, а только нерадивых бухгалтеров или менеджеров.
19. Shreki2015 2 06.12.16 17:45 Сейчас в теме
(10) для сохранности базы сделать архивацию базы в том же "пакетнике", или перевести в SQL, меньше шансов порушить.
8. S.V.Y 17 22.11.16 10:55 Сейчас в теме
Батником точно никак, скриптом наверное можно, но я тут не силен.
14. Jill 17 25.11.16 13:28 Сейчас в теме
Товарищи, раз уж зашла речь: поделитесь, плз, 1cusrmon.exe, у кого имеется.
В публикации ссылка померла, а из исходников собирать жуть как не хочется.
15. vcv 89 25.11.16 13:41 Сейчас в теме
(14)
Прикрепленные файлы:
1cusrmon.exe
v3rter; Jill; +2 Ответить
16. Jill 17 25.11.16 13:45 Сейчас в теме
17. Jill 17 25.11.16 13:53 Сейчас в теме
(15) А это последняя версия (информация файла не заполнена)?
Обещали по -d2 список пользователей медетирующих на окно логина.
Или этого так и не было реализовано?
21. trdm 19.05.18 23:38 Сейчас в теме
(15) Файло не качается. А можно с исходником выложить? Спасибо!
user591953; Cthulhu; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот