|
Параметры при запуске 1С | ☑ | ||
---|---|---|---|---|
0
SuKaS
07.02.12
✎
15:44
|
Доброго времени суток, товарищи.
Неожиданно понадобилось определять, с какого компьютера пользователь зашел в 1С. Так как все работают терминально, то придумали для каждого пользователя создавать свой ярлык на запуск программы. Хотели в ярлыке при запуске параметром передавать в 1С это имя, и даже нашли в описании подходящий параметр "/С", но не ясно как его обработать в 1С? Как его прочитать? Буду благодарен за любую помощь... |
|||
1
pumbaEO
07.02.12
✎
15:52
|
Посмотри как вариант http://forum.infostart.ru/forum24/topic51293/message571293/#message571293
|
|||
2
Maxus43
07.02.12
✎
15:52
|
т.е. в терминале у юзеров на 1с свой ярлык? как это поможет? из 1с можно узнать имя юзера, в т.ч. и виндового
|
|||
3
n koretsky
07.02.12
✎
15:58
|
(2) вот зачем сразу карты на стол?
так интересно все начиналось... |
|||
4
pumbaEO
07.02.12
✎
15:59
|
(3) Ну SuKaS вроде как не девушка, на фото не буду разводить.
|
|||
5
SuKaS
07.02.12
✎
16:25
|
ТО 2: В 1С можно узнать имя пользователя, если есть аутентификация Windows, а пользователи заходят под своим паролем.
Не надо делать каждому юзверю свой ярлык, достаточно прописать в батнике ...\1cv81.exe /C%username% |
|||
6
Maxus43
07.02.12
✎
16:29
|
(5) в 1с достаточно простого кода чтоб узнать юзера винды. имхо это универсальней чем батник... ну смотрите сами
|
|||
7
SuKaS
07.02.12
✎
16:35
|
(6) Если в 1С стоит галка "аутентификация Windows", то да.
ПользовательОС (OSUser) Использование: Чтение и запись. Описание: Тип: Строка. Содержит строку, идентифицирующую пользователя Windows при установленном свойстве АутентификацияОС. |
|||
8
Maxus43
07.02.12
✎
16:35
|
я имею ввиду что-то типа
NetWork=Новый COMObject("wscript.network"); User= Сеть.Username; |
|||
9
Maxus43
07.02.12
✎
16:37
|
(8) + т.е.
Сеть=Новый COMObject("wscript.network"); User= Сеть.Username; ну думаю понятно |
|||
10
SuKaS
07.02.12
✎
16:42
|
(8) Спасибо большое, понятно сразу. Имя пользователя получил, имя ПК - нет (( В терминалке получаю имя сервера, на который зашел...
|
|||
11
Maxus43
07.02.12
✎
16:44
|
(10) да, текущая инфа. но ведь пользователь виндовый нужен был? он есть
|
|||
12
PVV65
07.02.12
✎
16:44
|
По поводу получения параметра.
Глобальный контекст (Global context) ПараметрЗапуска (LaunchParameter) Использование: Только чтение. Описание: Тип: Строка. Используется для доступа к параметру запуска, передаваемому через ключ командной строки /C. Доступность: Тонкий клиент, веб-клиент, толстый клиент. |
|||
13
Maxus43
07.02.12
✎
16:45
|
в винде можеш определить с какого компа зашли в терминал? если да - то виндовыми скриптами можно всё вытащить, надо покопаться
|
|||
14
Maxus43
07.02.12
✎
16:45
|
смотри что удобней, но я против батников, не по феншую как то)
|
|||
15
SuKaS
07.02.12
✎
16:51
|
(14) Спасибо большое.
Про батник, админы вообще предлагали писать файлик в корень С: Чуть со стула не упал. Так что это еще куда не шло. |
|||
16
PVV65
07.02.12
✎
16:54
|
А в терминале посмотри переменную окружения CLIENTNAME.
|
|||
17
SuKaS
08.02.12
✎
11:29
|
Большое спасибо всем.
Задачу удалось решить без имени компьютера, только именем пользователя. Хотя как получить имя компа в терминальном режиме до сих пор загадка... |
|||
18
Vladal
08.02.12
✎
11:52
|
(17) Так чем всё закончилось?
Расскажи народу и сочувствующим. оставь память для потомков. |
|||
19
SuKaS
08.02.12
✎
12:15
|
(18) Закончилось все тем, что при помощи (8) я получил имя пользователя в терминальном режиме. Далее админы жестко привязали логины к ПК. Таким образом, получив при старте системы логин, по регистру соответствия получаю текущую торговую точку. И независимо под каким пользователем вошли в 1С.
Как то так. |
|||
20
Vladal
08.02.12
✎
12:39
|
(19) У меня был алгоритм получения именно имени компьютера, с которого вошли на терминал. Остался на прошлой работе, могу связаться, если дадут, покажу.
|
|||
21
SuKaS
08.02.12
✎
13:21
|
(20) Было бы здорово. Можно будет не привязывать имя пользователя к компу.
|
|||
22
PVV65
08.02.12
✎
14:36
|
WshShell = Новый COMОбъект("WScript.Shell");
WshSysEnv = WshShell.Environment("Process"); ИмяКомпа = WshSysEnv.Item("CLIENTNAME"); Сообщить("Это имя компа, с которого вошли в терминал - " + ИмяКомпа); |
|||
23
Vladal
08.02.12
✎
15:02
|
Оно. Для семерки я использовал
ПриНачалеработыСистемы() ... WshShell = СоздатьОбъект("WScript.Shell"); WshSysEnv = WshShell.Environment("Process"); ComputerName = СокрЛП(WshSysEnv.Item("CLIENTNAME")); ЗаписьЖурналаРегистрации("Вход в систему с компьютера " + ComputerName,,,,3); ... |
|||
24
SuKaS
08.02.12
✎
16:08
|
Спасибо. Пригодиться.
|
|||
25
Vladal
08.02.12
✎
16:28
|
Вот для восьмерки еще один пример:
// Функция возвращает строку c именем компьютера. // // Возвращаемое значение: // Строка - имя компьютера для торгового оборудования. // Функция ПолучитьИмяКомпьютера() Экспорт Если мИмяКомпьютера = Неопределено Тогда WSS = Новый COMОбъект("WScript.Shell"); WSSE = WSS.Environment("Process"); мИмяКомпьютера = ВРег(WSSE.Item("ClientName")); Если ПустаяСтрока(мИмяКомпьютера) Тогда мИмяКомпьютера = ВРег(ИмяКомпьютера()); КонецЕсли; КонецЕсли; Если мИмяКомпьютера = "CONSOLE" Тогда мИмяКомпьютера = ВРег(ИмяКомпьютера()); КонецЕсли; Возврат мИмяКомпьютера; КонецФункции // ПолучитьИмяКомпьютера() |
|||
26
SuKaS
09.02.12
✎
10:51
|
(25) Спасибо. Я в табло объект открыл, посмотрел уже. Так еще кучу всего можно выловить, вплоть до версии и сборки операционной системы. Так что взял на заметку.
|
|||
27
БалбесВ1с
09.02.12
✎
10:57
|
(25)А куда это прилепить чтобы я из другого сеанса мог видеть с какого компа зашли в терминальную 1с8?
|
|||
28
Vladal
13.02.12
✎
16:23
|
(27) Прилепи в ПриНачалеРаботыСистемы, в модуле обычного приложения (про управляемое не знаю - не использовал там еще).
Ну и сделать запись в журнал регистрации - с какого компьютера зашли в терминал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |