(2) проще можно
WshShell = Новый COMОбъект("WScript.Shell");
Exec=WshShell.Exec("ipconfig");
Сообщить(Exec.stdout.readall());
а потом можно рекэкспом \b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b
на самом деле не очень кошерно
есть такие способы если нужен Ip шлюза, то можно обратится к какому-нибудь сервису, в остальных случаях - можно значение в реестре прочитать (в настройках сетевой карты), либо через WMI что тоже самое, наверное...и был способ - через com к какому-то классу, winsocket что ли называется, не помню...
strComputer = ".";
objWMIService = ПолучитьCOMОбъект("winmgmts:\\" + strComputer + "\root\CIMV2");
colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE",,48);
Для Каждого objItem Из colItems Цикл
Сообщить("----------------------------------- ");
Сообщить("Win32_NetworkAdapterConfiguration");
Сообщить("----------------------------------- ");
Для Каждого Стр Из objItem.IPAddress Цикл
Сообщить("IPAddress: " + Стр);
КонецЦикла;
КонецЦикла;
(9) Вот, чисто для интереса, как и говорил есть com объект, - у себя в шаблонах нашел, -
rcb = Новый COMОбъект("rcbdyctl.setting");
Сообщить(rcb.GetIpAddress);
(к слову этот же способ хорошо гуглится http://help1c.com/faq/view/819.html )
Функция ПолучитьIPПК()
strComputer = ".";
SWBemlocator = Новый COMОбъект("WbemScripting.SWbemLocator");
objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2");
IPConfigSet = objWMIService.ExecQuery("Sel ect IPAddress fr om Win32_NetworkAdapterConfiguration where ipenabled = true");
Для Каждого Строка in IPConfigSet Цикл
Для Каждого Стр Из Строка.IPAddress Цикл
Возврат Стр;
КонецЦикла;
КонецЦикла;
КонецФункции