Имя: Пароль:
1C
1С v8
Параметры при запуске 1С
0 SuKaS
 
07.02.12
15:44
Доброго времени суток, товарищи.
Неожиданно понадобилось определять, с какого компьютера пользователь зашел в 1С. Так как все работают терминально, то придумали для каждого пользователя создавать свой ярлык на запуск программы.
Хотели в ярлыке при запуске параметром передавать в 1С это имя, и даже нашли в описании подходящий параметр "/С", но не ясно как его обработать в 1С? Как его прочитать?

Буду благодарен за любую помощь...
1 pumbaEO
 
07.02.12
15:52
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) Прилепи в ПриНачалеРаботыСистемы, в модуле обычного приложения (про управляемое не знаю - не использовал там еще).

Ну и сделать запись в журнал регистрации - с какого компьютера зашли в терминал.