Небольшой класс для принудительного завершения сеансов пользователей 1С 7.7.
Для работы класса необходмы внешние компоненты (скопировать желательно последние версии ВК в каталог ИБ/1С):
1.
1С++2.
FormEx (Автор - Алексей Фёдоров aka АЛьФ)
Класс может применять в любой конфигурации 1С 7.7.
Для "встраивание" в конфигурацию достаточно в ГлобальныйМодуль в процедуру "ПриНачалеРаботыСистемы()" добавить строки:
//начало изменения
//Загрузка 1С++
Если ЗагрузитьВнешнююКомпоненту("1CPP.dll")=0 Тогда
Сообщить("Не удается загрузить внешнюю компоненту ""1CPP.dll""");
Иначе
//Загрузка FormEx
Если ЗагрузитьВнешнююКомпоненту("FormEx.dll")=0 Тогда
Сообщить("Не удается загрузить внешнюю компоненту ""FormEx.dll""");
Иначе
Выгонялка = СоздатьОбъект("ВыгонялкаПользователей");
//здесь можно настроить свойства класса
//Выгонялка.ВремяДоЖесткогоЗавершения = 0; //0 - не использовать жесткое завершение 1С
//Выгонялка.ФильтрПользователей = "АДМИНИСТРАТОР"; //не выгонять администратора
Если Выгонялка.Запустить() = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//конец изменения
Если в конфигурации уже используется 1С++ или «FormEx» - необходимо скорректировать вышеприведенный код.
У класса есть свойства, которые доступны для редактирования пользователю (желательно изменять из до метода "Запустить()"):
- ИнтервалТаймера - интервал таймера в мсек по умолчанию (5000мсек=5сек)
- ВремяПростояДоЗавершения - время простоя системы в сек, после которого будет отключен сеанс 1С (2часа) (если "0" - не используется)
- ВремяДоЗавершенияПоУмолчанию - время до завершения сеанса 1С в сек по умолчанию (60сек)
- ВремяДоЗавершения - текущее значение счетчика времени до завершения сеанса 1С (60сек)
- ВремяДоЖесткогоЗавершенияПоУмолчанию - время до жесткого завершения процесса 1С в сек по умолчанию (20сек)
- ВремяДоЖесткогоЗавершения - время до жесткого завершения процесса 1С в сек (если "обычное" завершение не срабатывает из-за модальных окон) (20сек) (если "0" - не используется)
- СообщениеПользователям - сообщение, которое выдается пользователям при завершении сеанса 1С
- ФильтрПользователей - фильтр по тем пользователям, которых НЕ надо выгонять из 1С
- ФильтрПользователейПростоя - фильтр по тем пользователям, которых НЕ надо выгонять из 1С по простою
- ИмяБазы - имя экземпляра 1С, чтобы было ясно о какой БД идет речь в сообщениях пользователям (имя БД из реестра)
Принцип действия:
1. В каталог ИБ копируем/переименовываем файл "stop1с.txt" со структурой:
Цитата: ВРЕМЯ ОЖИДАНИЯ: <время до завершения сеанса>
СООБЩЕНИЕ: <сообщение, которое будет выведено пользователям>
ИСКЛЮЧЕНИЕ ПОЛЬЗОВАТЕЛЕЙ: <фильтр по пользователям, которых НЕ надо выгонять из 1С>
2. У всех пользователей (за исключением указанных в фильтре) появяется информационное окно, на котором отображается таймер до завершения сеанса 1С и сообщение пользователю. Окно появляется в любом случае, даже при наличии модальных окон - с большой вероятностью пользователь увидит его. Окно можно закрыть только через меню "Окна".
3. При заверешнии отпущенного пользователю на сохранение данных времени, 1С закрывается БЕЗ СОХРАНЕНИЯ всех несохраненных данных. Если при этом активно системное модальное окно (к примеру "О программе"), 1С не закроется и будет ждать, пока пользователь не закроет его (модальное окно) вручную, после чего 1С закроется. Чтобы исключить такую ситуацию - существует возможность указать задержку (по умолчанию 20 секунд после неудачного "обычного" завершения сеанса 1С) для "жесткого" закрытия 1С (завершение текущего процесса 1С). При этом информационное окно изменит свое содержимое и начнется отсчет таймера для "жесткого" закрытия.
4. Пока в каталоге ИБ существует файл "stop1с.txt" - никто, кроме пользователей из фильтра, не сможет зайти в БД (им будет выведено информационное сообщение о запрете входа в 1С).
Кроме того, при простое системы в течении времени, заданного в свойстве "ВремяПростояДоЗавершения" (по умолчанию 2 часа) сеанс 1С будет так же завершен (кроме пользователей из фильтра "ФильтрПользователейПростоя").
При удалении/переименовании файла "stop1с.txt" из каталога ИБ у пользователей, которые еще не успели выйти, информационное окно закроется и пользователи продолжат работать в обычном режиме.
Для удобства администрирования можно написать отчет, который будет управлять созданием/удалением файла "stop1с.txt" в каталоге ИБ. Для программного управления классом в процессе работы необходимо переменную, в которой хранится экземляр класса (в нашем примере это переменная "Выгонялка") объявить как экспортную переменную в шапке ГМ ("Перем Выгонялка Экспорт;").
http://infostart.ru/public/262361/