Запрет запуска более одного сеанса на рабочем месте (Розница 2.2)

Доброго времени! Столкнулся с проблемой — при запуске более одного сеанса конфигурации «Розница 2.2» на одном рабочем месте возникают конфликты с подключенным оборудованием. Пришлось в быстром темпе это исправить — запретом повторных запусков.
Также, кому интересно, можно посмотреть, как обращаюсь из модуля управляемого приложения к серверным процедурам (описание примера).

Доброго времени!

Столкнулся с проблемой — при запуске более одного сеанса конфигурации "Розница 2.2" на одном рабочем месте возникают конфликты с подключенным оборудованием. А повторный запуск сеансов, как выяснилось, случается очень часто.

Пришлось в быстром темпе это исправить — запретом повторных запусков конфигурации на одном и том же рабочем месте.

Так же, кому интересно, можно посмотреть как обращаюсь из модуля управляемого приложения к серверным процедурам (описание примера).

Что мы имеем на текущий момент — Конфигурация "1С:Розница 2.2.12", Платформа 8.3.13.1865

Для внесения изменений, конфигурацию пришлось снять с "замка", поэтому, кто решит повторить данный пример, сделайте пожалуйста, копию базы.

Итак, первым шагом, добавляем 2 общих модуля в конфигурацию:

ПроверкаПользователей (Сервер, ВызовСервера, Привилегированный), ПроверкаПользователейКлиент (Клиент, Сервер, ВызовСервера). В скобках указаны настройки свойств модулей.

В модуль ПроверкаПользователей пишем такую функцию

 

Функция ПараметрыСоединенийПользователей() Экспорт


Колво = 0;

Для Каждого Стр11 ИЗ ПолучитьСоединенияИнформационнойБазы() Цикл

Если Врег(Стр11.ИмяКомпьютера) = Врег(ИмяКомпьютера()) И (Стр11.ИмяПриложения = "1CV8C" ИЛИ Стр11.ИмяПриложения = "1CV8") Тогда

Колво = Колво +1;

КонецЕсли;

КонецЦикла;

Возврат Колво;

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

 

В модуль ПроверкаПользователейКлиент добавляем такое:

&НаКлиенте
Функция ПараметрыСоединенийПользователейКлиент() Экспорт

Возврат ПроверкаПользователей.ПараметрыСоединенийПользователей();

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

&НаКлиенте
Процедура ПрекратитьРаботуСистемы1(Т) Экспорт
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

 

Далее, общий модуль управляемого приложения в конфигурации и в процедуре ПриНачалеРаботыСистемы() добавляем такие строчки в начале процедуры

 

Если ПроверкаПользователейКлиент.ПараметрыСоединенийПользователейКлиент() > 1 Тогда

Оп = Новый ОписаниеОповещения("ПрекратитьРаботуСистемы1",ПроверкаПользователейКлиент);
ПоказатьПредупреждение(Оп,"Количество пользователей на данном рабочем месте превысило 1 человека",5);

КонецЕсли; 

 

Собственно, это и есть все решение. Теперь, если пользователь случайно или специально запустит повторно конфигурацию — будет выскакивать вот такое сообщение "Количество пользователей на данном рабочем месте превысило 1 человека" и через 5 секунд программа закроет этот "второй" сеанс.

Буду рад, если кому-то поможет данное решение. Всем спасибо.

Так же, я прилагаю файлик — обработку для вышеуказанной конфигурации и платформы, которая, при нажатии кнопки, определяет количество запущенных сеансов на рабочем месте и завершает запущенный сеанс при условии >1 пользователя на рабочем месте.

5 Comments

  1. dj_tol

    Идея хорошая. Но может лучше через расширение?

    Reply
  2. aximo

    (1) это на ваше усмотрение — развитие.

    Reply
  3. aximo

    (1) ограничения общих модулей работающих через расширение — они не должны быть «привилегированными». один из модулей необходимо сделать «привилегированным», тк у пользователей (кассиров) права минимальны обычно

    Reply
  4. aspirator23

    Конфликт возникает при запуске двух рабочих мест на одном компьютере?

    Reply
  5. aximo

    (1) в оборудовании — в рознице

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *