Имя: Пароль:
1C
1С v8
Пользователь зашел в базу с двух компьютеров
0 Fomania
 
23.03.12
10:32
Здравствуйте! Обнаружили, что пользователь может зайти в базу под своим именем одновременно с двух компьютеров, работая в двух сеансах одновременно. Можно как-то отключить эту функцию, чтобы под одним именем пользователя можно было заходить в базу только с одного компьютера, запускать только один сеанс?
1 vis_tmp
 
23.03.12
10:33
Начинаем телепатировать...
1С 7.7 или 8?
Какая конфа?
2 Fomania
 
23.03.12
10:33
(1) УТ 10.3 в 8.2. собственно, в названии темы видно что 1С v8
3 Amra
 
23.03.12
10:34
Без фото не взлетит
4 Maxus43
 
23.03.12
10:37
(0) можно
5 Maxus43
 
23.03.12
10:37
в УПП это в настройках пользователя - запуск нескольких сеансов
6 MaxS
 
23.03.12
10:38
Рыбак может взять на рыбалку две удочки? Почему тогда нельзя с двух мест работать в 1С базе?  Эти ограничения обычно настраиваются в самой конфигарации.
7 Maxus43
 
23.03.12
10:38
а он реально между разными компами бегает? или свой пароль слил кому-то?
8 Grobik
 
23.03.12
10:39
(3) гугиль на фоманию находит http://farm6.static.flickr.com/5015/5564827690_c218a42e77.jpg
Я бы вдул ;)
9 Maxus43
 
23.03.12
10:39
(5)+ точнее "Запретить открытие нескольких сеансов", в "Другие настройки"
10 Fomania
 
23.03.12
10:43
(5) не нашла в УТ такого
11 Fomania
 
23.03.12
10:46
(7) там пользователи иногда почему-то перемещаются между компами, могут забыть что уже вошли под своим именем в другом месте и войти в базу снова. я не знаю, почему это кажется им проблемой, но они хотят чтобы каждый пользователь мог запустить только один сеанс.
12 Hazer79
 
23.03.12
10:46
(8) у неё сиськи отмороженные, наверняка.
куда там вдувать ?
13 YFedor
 
23.03.12
10:47
(11) А на разные компьютеры они заходят под разными учетками или под одной?
14 Grobik
 
23.03.12
10:48
(12) Явно не в сиськи.
15 Fomania
 
23.03.12
10:49
(13) в том то и дело, что под одной учеткой пользователь может войти много раз с разных компов одновременно
16 acsent
 
23.03.12
10:51
(14) в сиськи тоже интересно
17 YFedor
 
23.03.12
10:51
(15) Повторяю вопрос: на разные компьютеры пользователи заходят под разными учетками (учетки Виндовс)
18 Fomania
 
23.03.12
10:53
(17) учетки винды у каждого свои, вроде... там нет сервака, база лежит на одном из сетевых компов.
19 salvator
 
23.03.12
10:53
20 probably
 
23.03.12
10:54
(17) ты хочешь допытать, есть ли там домен? и потом наказать админу, чтобы запретил множественный вход? а потом предложить даме сделать виндовую аутентификацию?
21 YFedor
 
23.03.12
10:55
(18) Пропиши у пользователей 1С авторизацию Виндовс ...
22 Fomania
 
23.03.12
10:57
(21) не совсем подойдет, домена нет, а пользователь иногда может сидеть на другом рабочем месте
23 Alex375
 
23.03.12
10:57
Не знаю как в УТ реализовано, а мы у себя делали такой запрет. Довольно таки все просто там. Связано это было с нехваткой лицензий
24 Alex375
 
23.03.12
10:58
Fomania ты из Красноярска? Я Красноярский :)
25 Fomania
 
23.03.12
11:02
(23) как вы делали запрет? в какой конфе?
(24) и бессмысленно приписывать мне левые аккаунты и фотки :)
26 Alex375
 
23.03.12
11:03
(25) прописали при старте системы проверку.
Ну я на самом деле не приписывал ничего, а спросил только ;)
27 Fomania
 
23.03.12
11:06
(26) проверку при запуске 1с? где это можно сделать?
28 КМ155
 
23.03.12
11:06
(25) возьми 20 строчек кода из УПП 1.3/1.2
29 YFedor
 
23.03.12
11:07
(27) В обработке, которая стартует при запуске клиента 1с
30 Alex375
 
23.03.12
11:17
(27) в "ПриНачалеРаботыСистемы"
31 Fomania
 
23.03.12
11:21
(28),(29),(30) Спасибо, постараюсь разобраться :)
32 Alex375
 
23.03.12
11:22
Если что надо подсказать по этому вопросу можешь в аську писать
33 Fomania
 
23.03.12
11:23
(32) Я учту, спасибо :)
34 Nick_to
 
23.03.12
13:55
В процедуре ПроверитьВозможностьРаботыПользователя() в модуле Общие.УправлениеПользователями дописываем

   МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
   НомерТекущегоСоединения = НомерСоединенияИнформационнойБазы();
   ИмяТекущегоКомпьютера = ИмяКомпьютера();
   
   Для Каждого Соединение ИЗ МассивСоединений Цикл                    
       Если Соединение.ИмяПриложения <> "Designer"    //Конфигуратор не считаем
           И Соединение.НомерСоединения <> НомерТекущегоСоединения    //Иначе блокирует любой сеанс (он же уже существует)
           И Соединение.ИмяКомпьютера = ИмяТекущегоКомпьютера    //Актуально только для сервера терминалов
           И Соединение.Пользователь.Имя = ПараметрыСеанса.ТекущийПользователь.Наименование Тогда //Подразумевается, что ПользовательИБ и Пользователь называются одинаково
           Отказ = Истина;
           #Если Клиент Тогда
           Предупреждение("Пользователь с таким именем уже работает в системе.", 10, "Запрет доступа");
           #КонецЕсли
           Прервать;
       КонецЕсли;        
   КонецЦикла;
35 Nick_to
 
23.03.12
14:20
Сорри, ошибочка


   МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
   НомерТекущегоСоединения = НомерСоединенияИнформационнойБазы();
   ИмяТекущегоКомпьютера = ИмяКомпьютера();
   
   Для Каждого Соединение ИЗ МассивСоединений Цикл                    
       Если Соединение.ИмяПриложения <> "Designer"  
           И Соединение.НомерСоединения <> НомерТекущегоСоединения
           И Соединение.Пользователь.Имя <> Null //Могут висеть окна с вводом пароля и пользователь еще не определился
           И Соединение.ИмяКомпьютера = ИмяТекущегоКомпьютера
           И Соединение.Пользователь.Имя = ПараметрыСеанса.ТекущийПользователь.Наименование Тогда
           Отказ = Истина;
           #Если Клиент Тогда
           Предупреждение("Пользователь с таким именем уже работает в системе.", 10, "Запрет доступа");
           #КонецЕсли
           Прервать;
       КонецЕсли;        
   КонецЦикла;
36 КМ155
 
23.03.12
14:34
(35)а теперь правильный код:
Функция ЗапретитьОткрытиеНесколькихСеансов() Экспорт
   
   ЗапретитьОткрытиеНесколькихСеансов = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ЗапретитьОткрытиеНесколькихСеансов");
   
   Если НЕ ЗапретитьОткрытиеНесколькихСеансов Тогда
       Возврат Ложь;
   КонецЕсли;
   
   ТекущийНомерСоединения = НомерСоединенияИнформационнойБазы();
   УникальныйИдентификаторПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
   
   МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
   Для Каждого ТекСоединение Из МассивСоединений Цикл
       Если (ТекСоединение.ИмяПриложения = "1CV8")
          И (НЕ ТекСоединение.НомерСоединения = ТекущийНомерСоединения)
          И (НЕ ТекСоединение.Пользователь = неопределено)
          И (ТекСоединение.Пользователь.УникальныйИдентификатор = УникальныйИдентификаторПользователя) Тогда
         
           Возврат Истина;
           
       КонецЕсли;
   КонецЦикла;    
   
    Возврат Ложь;
   
КонецФункции //
37 Nick_to
 
23.03.12
15:08
Спасибо за поправки, некоторые взял на вооружение. Писать функцию отдельно не вижу смысла, ЗапретитьОткрытиеНесколькихСеансов - в правах не прописывал, ИИмяТекущегоКомпьютера для меня актуально
38 КМ155
 
23.03.12
15:16
(37) бу га га,
это же код типовой УПП
39 Nick_to
 
23.03.12
15:31
В вопросе была УТ
AdBlock убивает бесплатный контент. 1Сергей