- В этой теме 1 ответ, 2 участника, последнее обновление 4 часа, 2 минуты назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как написать процедуру 1С для ограничения запуска более одного сеанса на ПК?
напиши процедуру, по которой можно запустить только один сеанс в одной базе на одном компьютере, пользователь не имеет значения
Вот пример процедуры на 1С, которая запрещает запускать более одного сеанса в одной базе на одном компьютере, независимо от пользователя. Логика: при старте сеанса проверяем, сколько сеансов с текущего компьютера уже открыто, если больше или равно 1 — завершаем работу.
Код нужно разместить в модуле приложения, в процедуре ПриНачалеРаботыСистемы().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Процедура ПриНачалеРаботыСистемы() Экспорт ИмяКомпьютераТекущегоСеанса = ИмяКомпьютера(); СписокСоединений = ПолучитьСоединенияИнформационнойБазы(); КоличествоСеансовСТекущегоКомпьютера = 0; Для Каждого Соединение Из СписокСоединений Цикл Если Соединение.ИмяКомпьютера = ИмяКомпьютераТекущегоСеанса Тогда КоличествоСеансовСТекущегоКомпьютера = КоличествоСеансовСТекущегоКомпьютера + 1; Если КоличествоСеансовСТекущегоКомпьютера > 1 Тогда Предупреждение("Запуск более одного сеанса с одного компьютера запрещен. Работа будет завершена."); ЗавершитьРаботуСистемы(Ложь); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
Объяснение:
— Получаем имя компьютера текущего сеанса через функцию ИмяКомпьютера().
— Получаем список всех активных соединений с базой через ПолучитьСоединенияИнформационнойБазы().
— Считаем, сколько сеансов уже открыто с этого компьютера.
— Если больше одного — выводим предупреждение и завершаем работу.
Этот код не зависит от пользователя, только от имени компьютера.
Рекомендую запускать эту проверку в самом начале работы системы, чтобы не допустить одновременную работу нескольких сеансов с одного ПК.