Related Posts
- Получение логина и пароля техподдержки 1С из базы
- Класс для вывода отчета в Excel
- Счет-фактура для УПП
- Библиотека классов для создания внешней компоненты 1С на C#
- Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
- Прайс-лист с артикулом в отдельной колонке
Не знаю про какие «много вариантов», но лично я уже 5 лет назад такое сделал 🙂 привязку настроек ТО в терминальной сессии к локальному компьютеру, т.к. 3 терминальных сервера с 1 локального компа …
видел на этом форуме такие варианты:
1. мИмяКомпьютера = ВРег(ИмяКомпьютера()+»\»+ИмяПользователя())
2. WshShell = Новый COMОбъект(«WScript.Network»); мИмяКомпьютера = ВРег(ИмяКомпьютера()+»\»+WshShell.UserName)
считаю их менее удачными
осталось уточнить — возвращается имя компа, ПРИКОННЕКТИВШЕГОСЯ к сессии (например оборванной день назад)..?
(3) похоже именно так 🙂 не проверял, но подобные ситуации (незакрытая терминальная сессия) решаются другими способами, обычно на уровне администрирования терминального сервера, например установкой предельного времени жизни неактивной сессии
Да, еще один момент: обнаружил что на некоторых компах локально выдает не пустое значение WshSysEnv.Item(«ClientName») а «CONSOLE». Причинно следственной связи между настройками ОС, ее версией и прочим не уловил :), одним словом для корректной работы в тексте приведенной ф-ции необходимо изменить:
ПустаяСтрока(ИмяКомпьютераТО) на ПустаяСтрока(ИмяКомпьютераТО) ИЛИ ВРег(ИмяКомпьютераТО) = «CONSOLE»
у меня взлетел такой вариант:
///////Имя клиента и компьютера запустившего сеанс
всШелл = Новый COMОбъект(«WScript.Shell»);
ИмяСеанса = всШелл.ExpandEnvironmentStrings(«%SESSIONNAME%»);
ИмяКлиента = всШелл.ExpandEnvironmentStrings(«%CLIENTNAME%»);
Сообщить(?(нрег(ИмяСеанса) = «console», ИмяКомпьютера(), ИмяКлиента));