Имя: Пароль:
1C
1С v8
Узнать, что установлена блокировка при завершении системы.
, ,
0 woland
 
03.09.15
08:13
Как узнать в процедуре ПередЗавершениемРаботыСистемы модуля обычного приложения что установлена блокировка начала сеансов?
1 Cyberhawk
 
03.09.15
08:15
А тебе зачем?
2 Брегорьян
 
03.09.15
08:16
(1) если Установлена() тогда Предупреждение("Мы больше не встретимся. Прощайте")
3 woland
 
03.09.15
08:18
(1) надо предупредить пользователя, что бы он сворачивал свою деятельность
4 woland
 
03.09.15
08:18
(1) а то, по умолчанию выходит предупреждение "Завершить работу?" и пользователь, естественно, жмет "нет".
5 ЧеловекДуши
 
03.09.15
08:21
(2) Бесполезное предупреждение. Блокировка на и блокировка, что бы всех выгнать и никого не пустить.

...
А если у вас бардак, то 1С тут ни причем :)
6 ЧеловекДуши
 
03.09.15
08:22
(4) Надо пользователя предупреждать с нарастающим времени интенсивности.

1. через 3 минуты
2. через 2 м.
3. через 1 м.
4. и по 10. через 30 сек
11. Усе, завершение всего без предупреждений :)
7 Брегорьян
 
03.09.15
08:24
+(6) или заставить загадки разгадывать для продолжения работы
8 Лефмихалыч
 
03.09.15
08:25
(0) (4) вломись в код, который показывает этот вопрос и в случае, если блокировка установлена, не показывай вопрос вообще
9 woland
 
03.09.15
08:25
(2) как применить в коде?
10 kosts
 
03.09.15
08:44
см. процедуру КонтрольРежимаЗавершенияРаботыПользователей()
11 kosts
 
03.09.15
08:45
(10) Процедура КонтрольРежимаЗавершенияРаботыПользователей() Экспорт

    // Получим текущее значение параметров блокировки
    ТекущийРежим = УправлениеСоединениямиИБ.ПараметрыБлокировкиСеансов();
    БлокировкаУстановлена = ТекущийРежим.Установлена;
    
    Если Не БлокировкаУстановлена Тогда
        Возврат;
    КонецЕсли;

...







Функция ПараметрыБлокировкиСеансов(Знач ПолучитьКоличествоСеансов = Ложь) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    ТекущийРежимИБ = ПолучитьБлокировкуСеансов();
    ТекущаяДата = ТекущаяДатаСеанса();
    ТекущийРежим = НовыеПараметрыБлокировкиСоединений();
    Если УстановленаБлокировкаСоединенийНаДату(ТекущийРежимИБ, ТекущаяДата) Тогда
        ТекущийРежим = ТекущийРежимИБ;
    ИначеЕсли ТекущийРежимИБ.Установлена Тогда
        ТекущийРежим = ТекущийРежимИБ;
    КонецЕсли;
    
    ПараметрыБлокировки = Новый Структура(
        "Установлена,Начало,Конец,Сообщение,ИнтервалОжиданияЗавершенияРаботыПользователей,КоличествоСеансов,ТекущаяДатаСеанса,ПерезапуститьПриЗавершении",
        ТекущийРежим.Установлена,
        ТекущийРежим.Начало,
        ТекущийРежим.Конец,
        ТекущийРежим.Сообщение,
        5 * 60, // 5 минут; интервал ожидания завершения пользователей после установки
                // блокировки информационной базы (в секундах).
        ?(ПолучитьКоличествоСеансов, КоличествоСеансовИнформационнойБазы(), 0),
        ТекущаяДатаСеанса(),
        Истина
    );
    
    УправлениеСоединениямиИБПереопределяемый.ЗаполнитьПараметрыБлокировкиСеансов(ПараметрыБлокировки, ТекущаяДата);

    Возврат ПараметрыБлокировки;
    
КонецФункции
12 woland
 
03.09.15
08:48
Спасибо большое. Все получилось.
13 Лефмихалыч
 
03.09.15
08:49
(9) Глобальный контекст.ПолучитьБлокировкуСеансов (Global context.GetSessionsLock)
Глобальный контекст (Global context)
ПолучитьБлокировкуСеансов (GetSessionsLock)
Синтаксис:

ПолучитьБлокировкуСеансов()
Возвращаемое значение:

Тип: БлокировкаСеансов.

Описание:

Получает объект, описывающий блокировку сеансов.

Доступность:

Сервер, толстый клиент, внешнее соединение.