Часто в работе программиста когда база работает в файловом варианте ( клиент-серверный вариант не берем там это возможно стандартными механизмами) возникает необходимость завершить работу некоторых пользователей которые например забыли выйти из программы.
Доработка дает возможность принудительно выгонять выбранных нами пользователей в указанную дату и время.
описание доработки:
1. Добавляем в План видов характеристик «ПраваПользователей» в предопределенные данные новый элемент «ЗавершатьРаботуПользователя» тип Булево. Эта настройка появится по каждому пользователю в «настройке дополнительных прав» с помощью этой настройки будем указывать необходимость завершения работы.
2. Добавляем константу «ДатаЗавершенияРаботы» тип Дата состав: Дата + время. В эту константу будем записывать когда необходимо завершить работу.
3. В модуль «Модуль обычного приложения» в процедуру «ПриНачалеРаботыСистемы» добавляем текст
//Проверяем необходимо ли завершать работу этого пользователя
ЗавершатьРаботу = УправлениеПользователями.ПолучитьЗначениеПраваДляТекущегоПользователя (ПланыВидовХарактеристик.ПраваПользователей.ЗавершатьРаботуПользователя,Неопределено);
Если ЗавершатьРаботу.Количество() = 0 Тогда
ВариантЗавершения = ложь;
Иначе
ВариантЗавершения = ЗавершатьРаботу[0].Значение;
КонецЕсли;
Если ВариантЗавершения Тогда
ПодключитьОбработчикОжидания(«ЗавершениеРаботыПользователей»,30);
КонецЕсли;
4. Добавляем процедуру
Процедура ЗавершениеРаботыПользователей() Экспорт
ДатаЗавершения = Константы.ДатаЗавершенияРаботы.Получить();
Если ЗначениеЗаполнено(ДатаЗавершения) Тогда
Если НачалоДня(ДатаЗавершения) = НачалоДня(ТекущаяДата()) Тогда
Если (Час(ТекущаяДата()))=(Час(ДатаЗавершения)) Тогда
ПрекратитьРаботуСистемы();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
5. Качаем прикрепленную внешнюю обработку для установки даты и времени завершения работы.
А имеющаяся в типовой УТ функция «Блокировка установки соединений с информационной базой» разве не делает уже именно то, что Вы написали? С единственным отличием: она выгоняет всех.
(1) kapustinag, А она работает для файлового варианта?
(2) borrman, да.
типовой вариант лучше
Очередной велосипед. Поздравляю.
(2) borrman, Да она как раз для файлового варианта
Ну собственно такой вариант отключения от базы использовался и на 7.7
В типовой обработке блокировки соединений в 8.2 видимо есть недоработки, поскольку не всех пользователей удается отключить (по крайней мере у нас), и все равно приходится обрывать соединение пользователей с тем компьютером, на котором лежит файловая база. А с приведеной выше обработкой завершение работы происходит на самом компьютере, который пользуется базой.
(1) kapustinag, Да, благодарю! Действительно не видел функционала «Блокировка установки соединений с информационной базой» поэтому было очень неудобно и пришлось допиливать самому. Действительно стандартный функционал лучше, но и этот вариант имеет место быть.
(8) Учите типовой функционал, дабы не изобретать велосипедов 🙂
В описании обработки указано, что она для УТ, а для БП или ЗУП её тоже можно использовать?
(10) Helleae, Идея останется та же, только необходимо будет использовать другой план видов характеристик (п.1 описания) и другую функцию получения значения из ПВХ (п.3) все остальное то же самое.
Спасибо.
спасибо! давно искал для файлового варианта, везде были только клиент серверные
Отключение пользователей в файловой варианте очень нужно. Спасибо
1) Доработка дает возможность принудительно выгонять — не выгонять а не дает зайти (если я правильно все понял)
2) Если у меня пользователей много мне тогда надо дописать что бы указать значение булево
3) если у пользователей на компах дата неправильная то работать небудет
4) по любому должен быть пользователь для которого данная переменная будет ложЬ и не дай бог случайно установить ее (а ну да можно обмануть датой)
5) а не проще тогда использовать в связке не при начале работы системы а обрадотке ожидания?
на сколько я понимаю ВЫГНАТЬ это значит вот мне сейчас надо что бы все прям сейчас вышли — а тут проверка только при входе в программу , много пользователей неделями не закрывают программу
(15) Tarlich, По пунктам:
п.1 — Вы от части правы: вы неправильно поняли. Доработка дает возможность ВЫГОНЯТЬ! пользователей, а не «не дает зайти».
п.2 — Если сложно руками проставить галочку по пользователям можете сделать обработку.
п.3 — Согласен. Но у такого пользователя мало что будет корректно работать.
п.4 — Желательно.
п.5 — При начале работы системы подключается обработка ожидания, если со мной не согласны объясните.
Вы правильно понимаете слово ВЫГНАТЬ и доработка как раз делает то, что вы описали: выключает пользователей тогда когда вам нужно.
Пожалуйста, читайте информацию внимательно и осмысленно если собираетесь писать комментарии.
Жалко, что типовыми средставми выгонять нельзя. Типовая обработка не работает, если у пользователя открыто модальное окно. Хорошо хоть восьмёрка позволяет делать динамическое обноление, если просто поменял форму или код, а иначе бы такой обработкой приходилось бы по чаще пользоваться.
А как войти в «Блокировку установки соединений с информационной базой»? Где она находится в УТ и в БП?
Интересное и простое решение.
Но я сейчас думаю над тем, что бы сначала вежливо попросить пользователя выйти, потом уже закрывать. Но тут нужно подумать над цикличностью запуска обработчика ожидания.
Плюс ещё нужно подумать над тем, что если вдруг пользователь действительно делает важные дела, перепроводит документы и т.д. Т.е. нужно как то может сначала мониторить активность, а не рубить сразу.
Спасибо за комментарий. Вы абсолютно правы, с плеча рубить при таком раскладе нельзя.