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

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 Ответить
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)