Имя: Пароль:
1C
1С v8
Тонкий клиент 8.3 - несколько сеансов в одном приложении?
0 vdeemer
 
21.04.16
09:47
Доброго времени суток!
Пытаюсь сделать запрет запуска нескольких сеансов одним пользователем  в тонком клиенте (конфигурация Документооборот, УФ). Делаю это в модуле сеанса:

// Проверка разрешения на запуск нескольких сеансов
ТекущийПользователь = ПользователиКлиентСервер.ТекущийПользователь();

//РеквизитыПользователя = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(ТекущийПользовательИБ, "РазрешатьЗапускНесколькихСеансов");

Если (НЕ ТекущийПользователь.РазрешатьЗапускНесколькихСеансов)  Тогда
    
    УникальныйИдентификаторПользователя = ТекущийПользователь.ИдентификаторПользователяИБ;
    ТекущийНомерСеанса = НомерСеансаИнформационнойБазы();
    
    // Нахождение текущего соединения
    //ТекущееСоединение = Неопределено;
    СеансыИБ = ПолучитьСеансыИнформационнойБазы();
    
    Для Каждого СеансИБ Из СеансыИБ Цикл
        
        Если ((СеансИБ.ИмяПриложения = "1CV8") ИЛИ (СеансИБ.ИмяПриложения = "1CV8C"))
           И (НЕ СеансИБ.НомерСеанса = ТекущийНомерСеанса)
           И (НЕ СеансИБ.Пользователь = неопределено)
           И (СеансИБ.Пользователь.УникальныйИдентификатор = УникальныйИдентификаторПользователя) Тогда
          
            ТекстСообщения = НСтр("ru = 'Пользователем с именем " + СокрЛП(СеансИБ.Пользователь.ПолноеИмя) + " уже выполнен вход в систему ("
             + СокрЛП(СеансИБ.ИмяКомпьютера) + "[" + Строка(СеансИБ.НомерСеанса) + "], " + Формат(СеансИБ.НачалоСеанса, "ДЛФ=DDT") + ")!
                |Создаваемый сеанс = [" + Строка(ТекущийНомерСеанса) + "], проверьте значок приложения 1С в трее.'");
            ВызватьИсключение ТекстСообщения;    
        КонецЕсли;
        
    КонецЦикла; // Для Каждого СоединениеИБ Из СоединенияИнформационнойБазы
    
КонецЕсли; // Если НЕ Пользователь.РазрешатьЗапускНесколькихСеансов


И все бы хорошо, но при запуске отчета "Задачи" создается НОВЫЙ СЕАНС!!! Вся система летит в тартараты... Как можно решить эту проблему? Спасибо.
1 Господин ПЖ
 
21.04.16
09:54
отчет выполняется в фоновом задании
2 vdeemer
 
21.04.16
10:05
(1) Афигеть... И как же понять, что это мой отчет? Сеанс-то новый
3 vdeemer
 
21.04.16
10:07
Если сохранить переменную "УжеУстанавливалиПараметрыСеанса" и проверять ее в модуле сеанса... Но там не видны переменные модуля управляемого приложения((
4 Pistol
 
21.04.16
10:16
А в чем беда-то? Ты честно реализовал свою хотелку - один сеанс на одного пользователя.
Тебе ж наверно не сеанс нужен, а интерактивное начало работы системы?
5 vdeemer
 
21.04.16
10:21
(4) в точку
6 Pistol
 
21.04.16
10:25
Ну там и проверяй, уже гарантировано на клиенте :)
7 vdeemer
 
21.04.16
10:31
(6) В модуле управляемого приложения функция НомерСеансаИнформационнойБазы() не видна((
8 Pistol
 
21.04.16
10:43
За вызов функции общего модуля тебя расстреляют?
9 vdeemer
 
21.04.16
10:50
(8) Не должны)) Пробую уже
10 vdeemer
 
21.04.16
10:59
Вышел каменный цветок! Спасибо, Данила-мастер))