|
v7: Получить имя клиента при работе на терминале. | ☑ | ||
---|---|---|---|---|
0
planod
19.05.14
✎
04:38
|
Всем привет. База 1с крутится на терминале, можно ли программно получить имя машины, с которой было осуществлено подключение к терминалу и пользователь зашел в базу? Заранее спасибо.
|
|||
1
maip1
19.05.14
✎
04:55
|
посмотрите здесь Определить IP компьютера средствами 1С 77
|
|||
2
skunk
19.05.14
✎
06:17
|
||||
3
VladZ
19.05.14
✎
06:45
|
(0) Для каких целей?
|
|||
4
planod
19.05.14
✎
07:34
|
(3) для меня был написан программистом свой лог изменений определенных документов и справочников, помимо имени пользователя хочу туда добавить, с какого ПК произошло действие. ИмяКомпьютера() не подходит, так как он показывает имя терминального сервера.
|
|||
5
DrZombi
гуру
19.05.14
✎
07:48
|
(0) Да можно
|
|||
6
DrZombi
гуру
19.05.14
✎
07:51
|
Держи...
лкUsername = ""; лкClientname = ""; лкLogonServer = ""; лкSessionName = ""; лкUSERDOMAIN = ""; Если ЕстьДжава = 1 Тогда Попытка scrptCtrl=0; scrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl"); scrptCtrl.language="vbscript"; scrptCtrl.AddObject("WSHShell",глWshShell); scrptCtrl.addcode(" |Function GetTheParametr(Param) |Set WshSysEnv = WSHShell.Environment(""Process"") |if Param = 1 then GetTheParametr = WshSysEnv(""Username"") |if Param = 2 then GetTheParametr = WshSysEnv(""Clientname"") |if Param = 3 then GetTheParametr = WshSysEnv(""LogonServer"") |if Param = 4 then GetTheParametr = WshSysEnv(""SessionName"") |if Param = 5 then GetTheParametr = WshSysEnv(""USERDOMAIN"") |End Function |"); //scrptCtrl.Reset(); //Сообщить("Тип "+ТипЗначенияСтр(scrptCtrl)); //OLE.IScriptControl Исключение глСообщить("Компонента ""MSScriptControl.ScriptControl"" не загружена! | Описание: "+ОписаниеОшибки(),"!"); ЕстьДжава = 0; КонецПопытки; //Получим нужные параметры! Если ЕстьДжава = 1 Тогда Попытка лкUsername = scrptCtrl.run("GetTheParametr",1); Исключение КонецПопытки; Попытка лкClientname = scrptCtrl.run("GetTheParametr",2); Исключение КонецПопытки; Попытка лкLogonServer = scrptCtrl.run("GetTheParametr",3); Исключение КонецПопытки; Попытка лкSessionName = scrptCtrl.run("GetTheParametr",4); Исключение КонецПопытки; Попытка лкUSERDOMAIN = scrptCtrl.run("GetTheParametr",4); Исключение КонецПопытки; Попытка scrptCtrl.Reset(); Исключение КонецПопытки; КонецЕсли; scrptCtrl=0; КонецЕсли; |
|||
7
DrZombi
гуру
19.05.14
✎
07:52
|
+ Держи, как получить номер Сессии на SQL сервере :)
SPIP = ПолучитьSPIP(); Функция ПолучитьSPIP() Перем ЗапросSQL, ТекстЗапроса; Перем Рез; Перем ТЗ_Результ; Рез = ""; //Пустое поле ЗапросSQL = 0; ЗапросSQL = СоздатьОбъект("ODBCRecordSet"); //ЗапросSQL.УстБД1С(); Если глОтладкаSQL=1 Тогда ЗапросSQL.Отладка(1); КонецЕсли; ТекстЗапроса=" |set nocount on |set LANGUAGE russian |SELECT @@SPID [SPID $Строка] |set nocount off |"; Если ЗапросSQL.Подготовить(ТекстЗапроса)=0 Тогда Сообщить("Запрос не прошел "+ЗапросSQL.ПолучитьОписаниеОшибки()+" |"+ТекстЗапроса,"!"); Возврат Рез; КонецЕсли; ТЗ_Результ = 0; ТЗ_Результ = СоздатьОбъект("ТаблицаЗначений"); Попытка ЗначСпс = ЗапросSQL.ВыполнитьИнструкцию(,ТЗ_Результ,1); Исключение Сообщить("ВыполнитьИнструкцию: "+ОписаниеОшибки()); КонецПопытки; Попытка ЗапросSQL.Закрыть(); Исключение Сообщить("Закрыть SQL запрос: "+ОписаниеОшибки()); КонецПопытки; Если ТипЗначенияСтр(ТЗ_Результ) <> "ТаблицаЗначений" Тогда Сообщить("Нет нужного параметра!","!"); ИначеЕсли ТЗ_Результ.КоличествоКолонок() = 0 Тогда Сообщить("Запрос не выполнен: |"+ТекстЗапроса,"!"); ИначеЕсли ТЗ_Результ.КоличествоСтрок() = 0 Тогда Сообщить("Запрос не вернул сточку!"); Иначе Рез = СокрЛП(ТЗ_Результ.ПолучитьЗначение(1,"SPID")); КонецЕсли; Возврат Рез; КонецФункции // ПолучитьSPIP() |
|||
8
planod
19.05.14
✎
12:33
|
(6) Большое спасибо, только один вопрос: а как находятся значения переменных ЕстьДжава и глWshShell?
|
|||
9
necro
19.05.14
✎
13:17
|
(8) не надо всё переусложнять
|
|||
10
necro
19.05.14
✎
13:18
|
в (6) же написали:
WshSysEnv = WSHShell.Environment("Process") GetTheParametr = WshSysEnv("Clientname") |
|||
11
necro
19.05.14
✎
13:20
|
конечно нужно добавить что-то вроде
WSHShell = СоздатьОбъект("WScript.Shell"); и если это WshSysEnv("Clientname") не заработает, тогда WshSysEnv.Item("Clientname") |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |