Запрещаем пользователю запускать больше одного сеанса 1С

В технологической платформе 1С 8 отсутствует по умолчанию возможность запрета запуска более одного сеанса 1С. Связано это с тем, что система может самостоятельно от имени текущего пользователя создавать дополнительные сеансы для выполнения фоновых задач, формирования отчетов и обработок. Если же мы посмотрим в список активных пользователей то увидим, как появляются дополнительные строки. Однако как известно — это болезнь многих пользователей запускать одну и туже базу под многими окнами. Эту проблему можно решить только программными методами при помощи функции ПолучитьСоединенияИнформационнойБазы(). Суть заключается в том, что при помощи указанной функции мы получаем массив данных, в котором каждая строка отвечает за сеанс. Перебирая в цикле количество строк мы можем соответственно регулировать возможность запуска дополнительных сеансов. Рассмотри на примере :

&НаСервере
Функция АнализОткрытогоСеансаПользователя() Экспорт
  User= ПользователиИнформационнойБазы.ТекущийПользователь();
  Соединения = ПолучитьСоединенияИнформационнойБазы();
  СеансОткрыт = Ложь;

       Для каждого Соединение Из Соединения Цикл
           Если Найти(Соединение.ИмяПриложения, «1CV8») = 0  Тогда
            Продолжить;
          КонецЕсли;

         Если Соединение.Пользователь.УникальныйИдентификатор = User.УникальныйИдентификатор Тогда
          Если СеансОткрыт Тогда
           Возврат Истина;
         Иначе
          СеансОткрыт = Истина;
         КонецЕсли;
       КонецЕсли;

   КонецЦикла;
Возврат Ложь;
КонецФуккции

 

Таким образом мы проверяем запущено ли уже окно с точно таким же идентификатором ИБ или нет. Кстати нужно искать имена приложений  только 1CV8 (толстый клиент) или 1CV8C (тонкий клиент).Если такие существуют, то мы далее запрещаем запуск, если нет то разрешаем(в данной функции данные методы не описаны).

Поделитесь своим мнением

Свежие записи
Советы и помощь программиста в 1с © 2018 ·   Войти   · Наверх