По заданию планировщика ночью запускается пакетный режим с обработкой. Если в базе в это время имеется загруженная 1с монопольно, то сеанс который запускался с пакетного режима остается висеть с надписью "Ошибка блокировки данных. Возможно данные используются другой задачей." Что можно сделать, чтобы оно не висело, а просто если ошибка блокировки, то все закрывалось.
-D0 : не показывать список пользователей
-D1 : показывать все режимы, кроме Монитора (по умолчанию)
-D2 : показывать всех пользователей
-En : установка errorlevel 1
-E0 : не устанавливать (по умолчанию)
-E1 : если база открыта монопольно
-E2 : если открыт конфигуратор
-E3 : если открыто 1С:Предприятие или блокирующий данные конфигуратор
-E4 : если открыт любой режим, кроме Монитора
-E5 : если открыт любой режим
-W : ждать освобождения базы по условию параметра -En
Установка errorlevel:
0 - база свободна (условие параметра -En не выполняется)
1 - база занята (условие параметра -En выполняется)
2 - прервано ожидание или ошибка
(7)
Вы хотели бороться со следствием, не видеть ""Ошибка блокировки данных. Возможно данные используются другой задачей."", как итог Ваша обработка не отработает.
предлагаю бороться с причиной, убрать пользователей из базы и сделать обработку.
ранее уже говорилось об выкидывании пользователей из базы
как вариант предлагалось убирать шару, будет выкидывать открытых пользователей.
а если поиграться вот так:
NET STOP NETLOGON
NET START NETLOGON
а затем уже запускать пакетник(монопольно, ибо может быть нужна переиндексация) и Вашу обработку.
(9) Пользователи в терминалах.
Я так понимаю, такой способ будет работать если пользователи подключены через сеть.
Но я попробовала, на первой строчке пишет что служба не запущена, на второй что ошибка 5 и недостаточно прав )
Я думаю можно использовать Killtask с указанием процесса и пользователя, предварительно сделать пользователя специально для этой процедуры.
сеансы можно завершать при простое. но это закроет и Ваш сеанс, если вдруг что-то программировали и оставили в ожидании выхода всех из программы чтоб сохранить к примеру вечером.
В
(3) подсказка про Консольный монитор пользователей 1cusrmon.exe - http://infostart.ru/public/15471/ Бесплатная(!) консольная утилита, которая при правильном подборе параметров вернёт в errorlevel занята база монопольно или нет.
а если поиграться вот так: NET STOP NETLOGON && NET START NETLOGON || NET START NETLOGON
то при некотором невезении можно остаться и без базы.
В конце концов если база под RDP/RemoteApp , то можно настроить автозавершение сеансов удаленных рабочих столов.
А если базы не жалко, то есть OPENFILES /Disconnect /OP
(10) То и значит. Пример дай чистого *.bat, без использования сторонних утилит, который закроет окно по тексту сообщения.
(9) Пользователей-то оно выкинет, а вот LCK, останется, так что не выход, 1С все равно не даст монопольно запуститься.
Проще настроить автозавершение терминальных сеансов, например на завершение после 2-х часов неактивности. Можно через административную политику или через конфигурацию сервера терминалов в свойствах RDP-Tcp, тогда выкидывает гарантированно, но затрагивает всех пользователей, включая админа. Можно в "локальных пользователях" персонально в настройках каждого пользователя на закладке "сеансы" выставить завершение отключенного и ограничение бездействующего сеанса по 2 часа и выбрать "завершить сеанс", но такое сработает при условии, что пользователи уходя выключают компы.
(12) Проверять утилитой надо до запуска пакетного режима, тогда не надо будет ничего закрывать. Хоть банальным способом - попробовать удалить lck, если удалится или если его нет, то вперёд.
(15) А это последняя версия (информация файла не заполнена)?
Обещали по -d2 список пользователей медетирующих на окно логина.
Или этого так и не было реализовано?