|
пользователи | ☑ | ||
---|---|---|---|---|
0
Vasus55
27.01.12
✎
08:58
|
как и где в 1с запретить заходить в программу под одним и тем же пользователем???
|
|||
1
Fish
27.01.12
✎
08:59
|
А зачем?
|
|||
2
Vasus55
27.01.12
✎
09:00
|
в целях безопасности)))
|
|||
3
миша122062
27.01.12
✎
09:02
|
(0)настройки пользователя
|
|||
4
миша122062
27.01.12
✎
09:02
|
+(3)только продвинутый сможет включить
(2) доменная аудентификация ))) |
|||
5
Healer
27.01.12
✎
09:02
|
Можно в модуль сеанса добавить проверку на имя компа или IP.
|
|||
6
golden-pack
27.01.12
✎
09:03
|
в УПП реализовано в (3)
|
|||
7
Healer
27.01.12
✎
09:03
|
...или проверять, нет ли уже такого пользователя среди активных...
|
|||
8
Vasus55
27.01.12
✎
09:19
|
(7) как именно проверить?
|
|||
9
Vasus55
27.01.12
✎
09:38
|
в получается в модуле сеанса необходимо написать некую процедуру, которая будет проверять является ли данный пользователь активным, елси нет выдавать предупреждение??
|
|||
10
Vasus55
27.01.12
✎
10:08
|
сделал так
Процедура ОбновитьСоединения() Попытка МассивСоединений=ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из МассивСоединений Цикл Если Соединение.Пользователь<>Неопределено Тогда Предупреждение("Данный пользователь уже работает в системе"); КонецЕсли; КонецЦикла; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры Процедура ПередНачаломРаботыСистемы(Отказ) ОбновитьСоединения(); КонецПроцедуры но,условие не правильно работает((( |
|||
11
Vasus55
27.01.12
✎
10:19
|
подскажите, где косяки???
|
|||
12
Wobland
27.01.12
✎
10:29
|
Если Соединение.Пользователь=ТекущийПользователь()
|
|||
13
Wobland
27.01.12
✎
10:30
|
но зачем-то же придумали множественный вход
|
|||
14
Vasus55
27.01.12
✎
10:44
|
терь, если с разных пк заходить под одним пользователем, то все равно впускает и предупреждение не выдает((((
|
|||
15
Vasus55
27.01.12
✎
10:45
|
а ниче что я код пишу в модуле обычного приложения и
Процедура ПередНачаломРаботыСистемы(Отказ) ОбновитьСоединения(); КонецПроцедуры ??? |
|||
16
Vasus55
27.01.12
✎
10:57
|
сделал нужно было код перенести во внешнее соединение, так как ПолучитьСоединенияИнформационнойБазы() Доступность:
Сервер, толстый клиент, внешнее соединение. |
|||
17
Wobland
27.01.12
✎
10:58
|
(16) хм... а в каких случаях оно тебе пойдёт во внешнее соединение? в чём отличие отсервера?
|
|||
18
Vasus55
27.01.12
✎
11:05
|
хотя нет, не работает терь если с одного пк сидит пользователь, то если новый пользователь захочет войти под своим именем, то он уже не зайдет
|
|||
19
Vasus55
27.01.12
✎
11:06
|
причем с этого же пк
|
|||
20
Vasus55
27.01.12
✎
11:11
|
а мне нужно чтобы с разных пк пользователи не могли одновременно зайти под одним именем
|
|||
21
Fish
27.01.12
✎
11:12
|
(20) смотри (12)
|
|||
22
Vasus55
27.01.12
✎
11:19
|
ну вот сдела так
Процедура ОбновитьСоединения() Попытка МассивСоединений=ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из МассивСоединений Цикл Если Соединение.Пользователь = ТекущийПользователь() Тогда Предупреждение("Данный пользователь уже работает в системе"); КонецЕсли; КонецЦикла; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры Процедура ПриНачалеРаботыСистемы() ОбновитьСоединения(); КонецПроцедуры все равно пускает |
|||
23
Wobland
27.01.12
✎
11:21
|
а вот у ПередНачаломРаботыСистемы есть Отказ
|
|||
24
Vasus55
27.01.12
✎
11:22
|
а где тогда писать этот весь код в модуле чего?
|
|||
25
Vasus55
27.01.12
✎
11:27
|
потому что в модуле внешнего соединения такой процедуры нет
|
|||
26
Fish
27.01.12
✎
11:27
|
(23) В модуле обычного приложения отладчик пишет: Процедура или функция с указанным именем не определена (ТекущийПользователь)
|
|||
27
Fish
27.01.12
✎
11:29
|
+(26) А вот параметрысеанса.ТекущийПользователь определён
|
|||
28
Vasus55
27.01.12
✎
11:32
|
а если через модуль обычного приложения ПользователиИнформационнойБазы.ТекущийПользователь()
|
|||
29
Fish
27.01.12
✎
11:34
|
(28) Вот и сравнивай
|
|||
30
Fish
27.01.12
✎
11:35
|
Если Соединение.Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь() Тогда
|
|||
31
Wobland
27.01.12
✎
11:36
|
(27) ну не проверял, подумаешь ;)
|
|||
32
Vasus55
27.01.12
✎
11:37
|
нет не в модуле обычного, внешнего он не пашет
|
|||
33
Vasus55
27.01.12
✎
11:42
|
может в коде что то не так?((
|
|||
34
Vasus55
27.01.12
✎
11:49
|
даже в модуле сеанса заходит(((
|
|||
35
Vasus55
27.01.12
✎
11:54
|
если ты находишься в конфигураторе а потом в преприятие не пускает, если кто уже сидит по этим именем
|
|||
36
Fish
27.01.12
✎
11:55
|
(35) Так проверяй еще и приложение - конфигуратор или предприятие :)))
|
|||
37
Vasus55
27.01.12
✎
11:59
|
(36)ниче не понял
|
|||
38
Fish
27.01.12
✎
12:01
|
(37) Блин посмотри, чему у тебя равно Соединение.ИмяПриложения . или в отладчике забанили? :)))
|
|||
39
Vasus55
27.01.12
✎
12:09
|
{(1)}: Значение не является значением объектного типа (ИмяПриложения)
в табло проверил |
|||
40
Vasus55
27.01.12
✎
12:21
|
(38) и че же делать((
|
|||
41
Jaffar
27.01.12
✎
12:24
|
(4) "аудентификация" - от слова "аудио"? :-)
|
|||
42
Vasus55
27.01.12
✎
13:07
|
даже так не хочет((
ЗапретитьОткрытиеНесколькихСеансов = ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ЗапретитьОткрытиеНесколькихСеансов"); Если ЗапретитьОткрытиеНесколькихСеансов Тогда ТекущийНомерСоединения = НомерСоединенияИнформационнойБазы(); УникальныйИдентификаторПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор; МассивСоединений = ПолучитьСоединенияИнформационнойБазы(); Для Каждого ТекСоединение Из МассивСоединений Цикл Если (ТекСоединение.ИмяПриложения = "1CV8") И (НЕ ТекСоединение.НомерСоединения = ТекущийНомерСоединения) И (НЕ ТекСоединение.Пользователь = неопределено) И (ТекСоединение.Пользователь.УникальныйИдентификатор = УникальныйИдентификаторПользователя) Тогда Предупреждение("Пользователем с таким именем уже выполнен вход в систему"); ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
43
Jaffar
27.01.12
✎
13:08
|
(42) а типовую какую-то смотрел?
|
|||
44
Vasus55
27.01.12
✎
13:16
|
это стиповой
|
|||
45
Vasus55
27.01.12
✎
14:56
|
ниче не помогает((9
|
|||
46
Xsander
31.01.12
✎
19:18
|
Написал следующим образом:
// конроль возможности однократного входа в 1С ФлПодключенияПользователя=0; МассивСоединений = ПолучитьСоединенияИнформационнойБазы(); Для Каждого ТекСоединение Из МассивСоединений Цикл Если СокрЛП(ПараметрыСеанса.ТекущийПользователь)=СокрЛП(ТекСоединение.Пользователь.ПолноеИмя) Тогда ФлПодключенияПользователя=ФлПодключенияПользователя+1; КонецЕсли; КонецЦикла; Если ФлПодключенияПользователя>1 Тогда Если СокрЛП(ТекСоединение.Пользователь.ПолноеИмя)<>"Администратор" Тогда Предупреждение("Пользователем с таким именем уже выполнен вход в систему"); ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; КонецЕсли; Да выдает ощибку - но ведь не тем, кто входит только один раз и администратору возможность оставил (конфигуратор/предприятие) + написал в "Процедура ПроверитьВозможностьРаботыПользователя(Отказ) Экспорт" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |