Имя: Пароль:
1C
1С v8
Определить пользователя в WEB клиенте
0 sound
 
13.11.14
15:30
Как определить имя пользователя домена, от имени которого был запущен web-клиент для текущей сессии, видимо без использования COM?
1 sound
 
13.11.14
15:32
вот такая штука проходит в тонком клиенте:

&НаКлиенте
Функция ПолучитьЗначениеПеременнойОкружения(Имя) Экспорт
    Попытка    
        Ctrl = Новый COMObject("MSScriptControl.ScriptControl");
        Ctrl.Language = "vbscript";
        Ctrl.AddCode("
        |Function SpecialFolders(Name)
        |Set Shell = CreateObject(""Wscript.Shell"")
        |SpecialFolders = Shell.ExpandEnvironmentStrings(Name)
        |End Function");
        ИмяПапки = Ctrl.Run("SpecialFolders", "%" + СокрЛП(Имя) + "%");
    Исключение
        ИмяПапки = Неопределено;
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Возврат ИмяПапки;
КонецФункции // ПолучитьЗначениеПеременнойОкружения()


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
        Объект.Автор = ПолучитьЗначениеПеременнойОкружения("USERNAME");
    КонецЕсли;
КонецПроцедуры
2 sound
 
13.11.14
15:32
А вот в Веб клиенте ругается :(
3 H A D G E H O G s
 
13.11.14
15:33
Новый COMObject доступен только в IE
4 sound
 
13.11.14
15:34
(3) Не, надо без привязки к IE.
5 sound
 
13.11.14
15:41
Чото тишина
6 H A D G E H O G s
 
13.11.14
15:46
Выполнить команду
set username >c:\username.txt

и прочитать файл.

Не знаю, покатит ли в веп-клиенте, но должно
7 sound
 
13.11.14
15:48
(6) Спасибо за ответ, о существовании SET знаю, но имхо как то проще должно быть чем файл расколупывать
8 sound
 
13.11.14
15:55
Блин засада (
9 Лефмихалыч
 
13.11.14
16:28
Если авторизация виндовая, то можно через
ПользователиИнформационнойБазы.ТекущийПользователь().ПользовательОС
10 sound
 
13.11.14
16:30
(9) Не, в том то и дело что в базе вообще нет пользователей
11 sound
 
13.11.14
16:32
И такая штука проходит в тонком клиенте:

wshShell = Новый COMОбъект("WScript.Shell");
strUserName =  wshShell.ExpandEnvironmentStrings("%USERNAME%");
Сообщить(strUserName);    


А вот в веб не хочет (
12 Лефмихалыч
 
13.11.14
16:39
(10) чо-то я не понимаю тогда, чего ты хочешь:
>в дазе нет пользвоателей
>хочу знать, какой пользователь в базе

одно из этих условий надо исключить, иначе задача решения не имеет по причинам, на которые ты уже наступил выше
13 H A D G E H O G s
 
13.11.14
16:45
(12) Имеет.
14 Лефмихалыч
 
13.11.14
16:48
(13) да затрахаешься его иметь, это решение, - браузеров, как собак на помойке, кроме того ОС может быть ЛЮБОЙ.
Если нет авторизации, значит все клиенты одинаковы для системы, а значит нефиг пытаться их идентифицировать. Для идентификации клиентов есть авторизация, а все велосипеды - нах.
15 H A D G E H O G s
 
13.11.14
16:50
(14) Смотрю я на вас и фигею.
Вы зациклены на универсальности, на которую надо забить.
95% имеют винду и браузер из "большой тройки" (IE, FF, GH), живут и не жужжат.

1С, кстати, разрешила ComОбъект в ВебКлиенте (который только для IE) и не парится.
16 Лефмихалыч
 
13.11.14
16:54
(15) это я смотрю на вас и фигею. Есть стандартный, хороший, красивый и годный маханизм, который будет работать ВЕЗДЕ, зачем вместо него из*бываться и использовать какие-то гнилые костыли? Чтобы потом когда-нибудь рассказывать клиенту, что на его какой-нить магбуг не рассчитывали?..
17 sound
 
14.11.14
09:01
(15),(16) Товарисчи не ссорьтесь ) Никаких клиентов нету, это чисто своя хотелка. Понятно что если это веб клиент, то и ОС может быть любой и браузер и все такое и домены и рабочие группы и еще хрен знает что. Но в моем конкретном случае у всех винда (минимум ХР), все заходят под своими доменными учетками, но вот с браузерами конечно не понятно, есть и эксплореры и хромы наверно. И вот при таких раскладах задача сводится к получению на клиенте строки вида "Domain\Login". Вопрос в том разрешима ли она. Ком объекты как то не канают, может я просто их готовить не умею ). Есть мыслишки?
18 sound
 
14.11.14
09:30
Чо у всех пятница что-ли уже блин? )
19 sound
 
14.11.14
10:49
Неужели задача не имеет решения?
20 sound
 
14.11.14
11:47
ну вот даже если начать извращаться:

    #Если ВебКлиент Тогда
        Если Не ПодключитьРасширениеРаботыСФайлами() Тогда
            УстановитьРасширениеРаботыСФайлами();
            ПодключитьРасширениеРаботыСФайлами();
        КонецЕсли;
    #КонецЕсли


    Врем = ПолучитьИмяВременногоФайла("txt");
    КомандаСистемы("set > " + Врем, КаталогВременныхФайлов());
    Текст = Новый ТекстовыйДокумент;
    Текст.Прочитать(Врем);
    ВсегоСтрок = Текст.КоличествоСтрок();
    Для Н = 1 По ВсегоСтрок Цикл
        Стр = Текст.ПолучитьСтроку(Н);
        Если Найти(ВРег(Стр), "USERNAME=") >0 Тогда
            Логин = Прав(Стр, СтрДлина(Стр) - Найти(Стр, "="));
            Прервать;
        КонецЕсли;
    КонецЦикла;
    УдалитьФайлы(Врем);
    Сообщить(Логин);


То 1 хрен всплывают ошибки, связанные с безопасностью браузеров, хрен его знает у кого там что можно в них какие настройки менять
21 sound
 
14.11.14
12:08
22 sound
 
14.11.14
12:29
Я тут сам с собой пообщаюсь, ладно? :)
23 ChiginAV
 
14.11.14
12:33
В журнале регистрации при входе есть данные о пользователе ОС. Может оттуда как-то можно получить
24 sound
 
14.11.14
12:38
(23) К сожалению там нету ничего, там только пишется ImplAppID, Веб-клиент и т.д. и все, нечего информативного
25 ChiginAV
 
14.11.14
12:46
(24) Возможно потому, что не заведено ни одного пользователя.
У меня при входе пользователя с аутентификацией 1с, появляется запись в ЖР об ошибке аутентификации с указанием пользователя ОС, а потом записи об успешной аутентификации пользователя 1с. ЖР настроен регистрировать все, кроме примечаний.
Может завести единого пользователя для всех без пароля?
26 sound
 
14.11.14
12:50
(25) Спасибо за идею, но не получилось
27 sound
 
14.11.14
15:01
Пичалька #zaplakal
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан