Так как у меня клиент-серверный вариант и авторизация стоит по ОС, то веб-сервис соответственно возвращает мне учётку, под которой выполняется веб-сервис на сервере.
Shell = Новый COMОбъект("WScript.Shell");
УчётнаяЗапись= Shell.ExpandEnvironmentStrings("%USERPROFILE%");
Знает ли кто, как можно получить учётку клиента, вызывающего веб-сервис?
Если рассмотреть, из статьи, функцию CheckInfoBases(ClientID, InfoBasesCheckCode, InfoBaseChanged, URL) то не совсем понял где формируются параметры для этого веб-сервиса. Возможно задача элементарна и нужно просто в параметр добавить переменную учётной записи.
Этим клиентом может быть вообще андроид, который про твою винду с учетками ничего не знает.
Если есть возможность повлиять на вызвающего, чтобы тот передавал на веб-сервер текущие кредишнлы ОС со своей стороны, то можно попробовать настроить веб сервер так, чтобы авторизацией и имперсонализацией занимался он. Тогда на уровне входа в 1С запрос будет поступать от имен нужной учетки. Изнутри 1С, с использованием авторизации ОС, он скорей всего превратится в правльного пользователя 1С. Но текущий пользователь винды все равно будет пользователем, под которым запущен рабочий процесс 1С.
Так что ты можешь получить только характеристики текущего пользователя 1С, под которым был выполнен вход в информационную базу. И все.
(2) так характеристики текущего пользователя и так получаю. Но это не то.
В статье расписано что создаётся анонимный пользователь и под ним первоначально запускается анонимный веб-сервис. Но решение так себе, так как под тем же самым компьютером я могу несколько раз авторизоваться и иметь разный UID, который записывается каждый раз как "новый пользователь".
Сейчас буду пробовать включить авторизацию по ОС в веб-сервисе IIS. Но как это будет работать, пока не знаю.