Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 09:59

Запрет двойного запуска.

Автор Vitalik54, 04 фев 2015, 09:14

0 Пользователей и 1 гость просматривают эту тему.

Vitalik54

Всем привет! Подскажите, в каком модуле в УТ11 необходимо прописать код, для запрета двойного запуска под одним пользователем?

LexaK

в Модуле управляемого приложения
обрабатываете такое событие


Процедура ПередНачаломРаботыСистемы(Отказ)

ДопустимоеКолСеансов = 2;
лкИмя = СокрЛП(ИмяПользователя());
Отказ = ОМ.ПроверкаСеанса(лкИмя, ДопустимоеКолСеансов);

Если Отказ Тогда
Предупреждение(
"У пользователя: "
+ лкИмя
+ " уже запущен(о) "
+ ДопустимоеКолСеансов
+ " сеанс(ов) 1С!",30);
КонецЕсли;


КонецПроцедуры


в сервермом модуле размещаете такую функцию

&НаСервере
Функция ПроверкаСеанса(лкИмя, ДопустимоеКоличество)Экспорт

лкВсеСоединения = ПолучитьСоединенияИнформационнойБазы();
лкКоличество = 0;
Для каждого лкСтр Из лкВсеСоединения Цикл
Если Найти(лкСтр.имяПриложения,"1CV8")=1
   И лкСтр.Пользователь <> Неопределено
   И СокрЛП(лкСтр.Пользователь.Имя) = лкИмя Тогда
   лкКоличество = лкКоличество + 1;
   КонецЕсли;
   Если лкКоличество > ДопустимоеКоличество Тогда
   Возврат Истина;
   КонецЕсли;
КонецЦикла;

   Возврат Ложь;

КонецФункции



Через переменную (или в константы можно вынести) можно рулить допустимым количеством сеансов, а еще лучше в настройки каждого пользователя вынести, кому-то можно 1 сеанс в базе, а главбуху, например - 5 сеансов! Красота!
если помогло нажмите: Спасибо!

Vitalik54

Цитата: LexaK от 04 фев 2015, 19:03Отказ = ОМ.ПроверкаСеанса(лкИмя, ДопустимоеКолСеансов);

А можете пояснить, что значит ОМ?

has

Цитата: Vitalik54 от 05 фев 2015, 09:27
Цитата: LexaK от 04 фев 2015, 19:03Отказ = ОМ.ПроверкаСеанса(лкИмя, ДопустимоеКолСеансов);

А можете пояснить, что значит ОМ?
Наименование Общего Модуля

Vitalik54

Цитата: LexaK от 04 фев 2015, 19:03
в сервермом модуле размещаете такую функцию

&НаСервере
Функция ПроверкаСеанса(лкИмя, ДопустимоеКоличество)Экспорт

лкВсеСоединения = ПолучитьСоединенияИнформационнойБазы();
лкКоличество = 0;
Для каждого лкСтр Из лкВсеСоединения Цикл
Если Найти(лкСтр.имяПриложения,"1CV8")=1
   И лкСтр.Пользователь <> Неопределено
   И СокрЛП(лкСтр.Пользователь.Имя) = лкИмя Тогда
   лкКоличество = лкКоличество + 1;
   КонецЕсли;
   Если лкКоличество > ДопустимоеКоличество Тогда
   Возврат Истина;
   КонецЕсли;
КонецЦикла;

   Возврат Ложь;

КонецФункции



А как попасть в этот серверный модуль?

LexaK

можете сами создать, или использовать имеющийся, в конфигураторе посмотрите свойство общего модуля Сервер = Истина
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск