новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Владимир
Приватное сообщение

Определить mac-адрес сетевой карты под веб-клиентом

Новосибирск(Россия )
260230721
volosatov85
3 |  4
14 июня 2022 в 18:27:31 (2 года 23 недели 1 день назад)
Текст задания
Есть унф 1.6 под платформой 8.3.10.2580
При запуске системы срабатывает вот такой код
СетевыеПараметры = ПолучитьСетевыеПараметры(".");
Если ЗначениеЗаполнено(СетевыеПараметры.Mac) Тогда
Форма = ПолучитьФорму("ОбщаяФорма.ФормаЛогаМагазина", Новый Структура("ВидКоманды, АдресСтрока", 1, СетевыеПараметры.Mac));
КонецЕсли;

Функция ПолучитьСетевыеПараметры() определена следующим образом

Функция ПолучитьСетевыеПараметры(IP_Host) Экспорт
Попытка
Структура = Новый Структура("Host,Mac,User,IP");
ServicesSet = GetComObject("winmgmts:{impersonationLevel=impersonate}!\" + СокрЛП(IP_Host) + "rootcimv2");
// Host, UserName
Items = ServicesSet.ExecQuery("SELECT UserName,Name FROM Win32_ComputerSystem");
Для каждого Item Из Items Цикл
Структура.Host = СокрЛП(Item["Name"]);
Структура.User = СокрЛП(Item["UserName"]);
Прервать;
КонецЦикла;
Если ПустаяСтрока(Структура.Host) Тогда
Возврат Неопределено;
КонецЕсли;
// MACAddress
Items = ServicesSet.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter WHERE NetConnectionStatus=2");
Для каждого Item Из Items Цикл
Если СокрЛП(Item["MACAddress"]) <> "" Тогда
Структура.Mac = СокрЛП(Item["MACAddress"]);
Прервать;
КонецЕсли;
КонецЦикла;
// IPAddress
Items = ServicesSet.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress='" + Структура.Mac + "'");
Для Каждого objItem Из Items Цикл
Если ТипЗнч(objItem.IPAddress) = Тип("COMSafeArray") Тогда
Для Каждого Элем Из objItem.IPAddress Цикл
Структура.IP = Элем;
Прервать;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат Структура;
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции

Эта конструкция прекрасно работает под тонким и толстым клиентами. Но как только заходим под веб-интерфейсом - функция вываливается в исключение. Соответственно, ничего не возвращается.
Нужно либо сделать так, чтобы оно работало по веб-интерфейсу, либо показать, где написано, почему это невозможно
P.S. если вы хотите просто попробовать - лучше не пишите. Это я сам буду делать. Нужен человек с опытом в подобных задачах
0
Отклики (1)