M_Volkov
Gold Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Цитата: Может кто подскажет как написать функцию ПолучитьСписокПользователейДомена(ИмяДомена)? | Без нее обошелся: Код: Функция АутентификацияWindows(Пользователь = Неопределено, ИмяДоменаПользователяОС = "", Ошибка = "") Экспорт ИмяДоменаПользователяОС = СокрЛП(мвДоработкиНаСервере.ПользовательИБ(Пользователь).ПользовательОС); Если Не мвДоработкиНаСервере.ПользовательИБ(Пользователь).АутентификацияОС Или ПустаяСтрока(ИмяДоменаПользователяОС) Или Найти(Сред(ИмяДоменаПользователяОС, 3), "\") = 0 Тогда Возврат Ложь; КонецЕсли; ИмяПользователяОС = СтрЗаменить(ИмяДоменаПользователяОС,"\","/"); Попытка ПользовательОС = ПолучитьCOMОбъект("WinNT:" + ИмяПользователяОС + ",user"); // http://catalog.mista.ru/1c/articles/22314/ // Сообщить("Найден пользователь домена: " + Сред(ИмяДоменаПользователяОС, 3, Найти(Сред(ИмяДоменаПользователяОС, 3), "\")) + ПользовательОС.FullName + " с ОС-аутентификацией: " + ИмяДоменаПользователяОС, СтатусСообщения.Внимание); Возврат Истина; Исключение Ошибка = "Пользователь домена: " + ИмяДоменаПользователяОС + " не найден."; // Сообщить(Ошибка, СтатусСообщения.Внимание); КонецПопытки; Возврат Ложь; КонецФункции // АутентификацияWindows() | А еще вставил проверку на правильность имени домена\пользователя ОС, совпадет ли с ТекущийПользовательОС. А то встречаются неправильные, устаревшие записи (например, имя домена или учетки сменилось). Код: Функция ПервоначальнаяИнициализация(ЕстьПраваАдминистратора,ОбнаруженПервыйЗапуск,НеобходимоОбновлениеБазыДанных) Экспорт Пользователь = ПараметрыСеанса.Пользователь; ИмяПользователя = ИмяПользователя(); ПолноеИмяПользователя = ПолноеИмяПользователя(); // Переопределим текущий компьютер (в клиентской сессии пользователя он может // отличным от того что был определен в УстановкаПараметровСеанса) Состояние("Обновляем информацию о компьютере ..."); Имя = мвДоработки.ПолучитьИмяКомпьютераТО(); //+МВ 10.10.2017 Если Не ПустаяСтрока(Имя) Тогда Ошибка = ""; ИмяДоменаПользователяОС = ""; АутентификацияОС = мвДоработки.АутентификацияWindows(Пользователь, ИмяДоменаПользователяОС, Ошибка); ЗаписьЖурналаРегистрации("Терминальный вход пользователя: " + СокрЛП(Пользователь.Код), УровеньЖурналаРегистрации.Информация, ?(ТипЗнч(Пользователь) = Тип("СправочникСсылка.Пользователи"), Пользователь.Метаданные(), Неопределено), Пользователь, "с компьютера: " + Имя + ", " + ?(ПустаяСтрока(Ошибка), ?(АутентификацияОС, "ОС", "1С") + "-аутентификация", Ошибка)); //+МВ 02.11.2020 //+МВ 05.11.2020 Проверим правильность имени домена\пользователя ОС, совпадет ли с ТекущийПользовательОС Если АутентификацияОС Тогда СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы(); Фильтр = Новый Структура("Событие", "_$Session$_.Authentication"); ТЗ = Новый ТаблицаЗначений; ВыгрузитьЖурналРегистрации(ТЗ, Фильтр, "Сеанс, Данные, Дата", , 200); ТЗ.Сортировать("Дата Убыв"); ТекущийПользовательОС = Неопределено; Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл НайденнаяСтрока = ТЗ.Найти(Соединение.НомерСеанса, "Сеанс"); Если НайденнаяСтрока <> Неопределено Тогда ДанныеСобытия = НайденнаяСтрока.Данные; Если ДанныеСобытия.Свойство("ТекущийПользовательОС") Тогда Если Соединение.Пользователь.Имя = СокрЛП(Пользователь.Код) Тогда ТекущийПользовательОС = ДанныеСобытия.ТекущийПользовательОС; // Сообщить(СокрЛП(Пользователь.Код) + " - " + ТекущийПользовательОС); Прервать; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Если ТекущийПользовательОС <> Неопределено И СокрЛП(ТекущийПользовательОС) <> Сред(ИмяДоменаПользователяОС, 3) Тогда ЗаписьЖурналаРегистрации("Для пользователя: " + СокрЛП(Пользователь.Код), УровеньЖурналаРегистрации.Предупреждение, ?(ТипЗнч(Пользователь) = Тип("СправочникСсылка.Пользователи"), Пользователь.Метаданные(), Неопределено), Пользователь, "неверно указана учетная запись ОС: " + ИмяДоменаПользователяОС + ", не соответствует пользователю ОС: " + СокрЛП(ТекущийПользовательОС)); КонецЕсли; КонецЕсли; //-МВ | Может можно попроще ТекущийПользовательОС получить? Написал по примеру. | Всего записей: 5783 | Зарегистр. 23-06-2008 | Отправлено: 16:38 05-11-2020 | Исправлено: M_Volkov, 14:48 06-11-2020 |
|