Также, кому интересно, можно посмотреть, как обращаюсь из модуля управляемого приложения к серверным процедурам (описание примера).
Доброго времени!
Столкнулся с проблемой — при запуске более одного сеанса конфигурации "Розница 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 пользователя на рабочем месте.
Идея хорошая. Но может лучше через расширение?
(1) это на ваше усмотрение — развитие.
(1) ограничения общих модулей работающих через расширение — они не должны быть «привилегированными». один из модулей необходимо сделать «привилегированным», тк у пользователей (кассиров) права минимальны обычно
Конфликт возникает при запуске двух рабочих мест на одном компьютере?
(1) в оборудовании — в рознице