Привет всем!
Вопрос такой...
Дело в том, что то о чем тема это можно сделать разными путями.
Вот несколько способов которую вызывает тестовая функция:
Функция Получить_IP() Экспорт
// ========= Способ 1
//Возврат winmgmts_Получить_IP();
// ========== Способ 2
Возврат IP_Получить_MACAddress();
// ========== Способ 3 == Определение ip через веб сервис
//Возврат IP_ПолучитьОтВебСервиса();
КонецФункции
Способы 1/2: Хотя они почти одни и те же.
&НаКлиенте
Функция winmgmts_Получить_IP() Экспорт
//Определение ip адреса через "winmgmts"
COMОбъект = ПолучитьCOMОбъект("winmgmts:\\.\root\CIMV2");
Результат = COMОбъект.ExecQuery("SELECT * FROM
|Win32_NetworkAdapterConfiguration
|WHERE IPEnabled = TRUE");
Для каждого Строка Из Результат Цикл
Для каждого ПодСтрока Из Строка.IPAddress Цикл
Возврат ПодСтрока;
КонецЦикла;
КонецЦикла;
КонецФункции
&НаКлиенте
Функция IP_Получить_MACAddress() Экспорт
ServicesSet = GetComObject("winmgmts:{impersonationLevel=impersonate}!\\" + СокрЛП(".") + "\root\cimv2");
Items = ServicesSet.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter WHERE NetConnectionStatus=2");
Для каждого Item Из Items Цикл
Если СокрЛП(Item["MACAddress"]) <> "" Тогда
Mac = СокрЛП(Item["MACAddress"]);
Прервать;
КонецЕсли;
КонецЦикла;
Items = ServicesSet.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress='" + Mac + "'");
Для Каждого objItem Из Items Цикл
Если ТипЗнч(objItem.IPAddress) = Тип("COMSafeArray") Тогда
Для Каждого Элем Из objItem.IPAddress Цикл
IP = Элем;
Прервать;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат IP;
КонецФункции
Ну таким маккаром можно, но одна проблема. Дело в том, что все это работает если 1С предприятие в режиме тонкий клиент.
Но если Веб клиент то выдает ошибку... говорит что терпеть не может COMОбъект.
А раз так то тогда вот третий способ:
&НаСервере
Функция IP_ПолучитьОтВебСервиса() Экспорт
Описание= Новый WSОпределения("http://develplatform.ru/SynIP.asmx?wsdl");
Прокси = Новый WSПрокси(Описание, "http://www.develplatform.com/", "SynIP", "SynIPSoap");
Тип = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.develplatform.com/").Получить("GetClientIP");
ФабрикаВебСервис = Прокси.ФабрикаXDTO.Создать(Тип);
Возврат Прокси.GetClientIP(ФабрикаВебСервис).GetClientIPResult;
КонецФункции
Который че то не срабатывает. и это на первой же линии. Пишет что не может найти сервис.
Я просто не сильно дружу с разными веб сервисными штучками ... не приходилось сталкиваться.
Поэтому кто нибудь не может побыстрому дать инфу почему нет соединения?
Может адрес сервиса не тот ... или в коде ошибка..
Буду признателен!