Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 6
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )

> Получить IP машины от Веб Сервиса          
Gigi Подменю пользователя
сообщение 09.04.19, 14:15
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 376
Спасибо сказали: 5 раз
Рейтинг: 2

Привет всем!
Вопрос такой...
Дело в том, что то о чем тема это можно сделать разными путями.
Вот несколько способов которую вызывает тестовая функция:
 Функция Получить_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;
КонецФункции

Который че то не срабатывает. и это на первой же линии. Пишет что не может найти сервис.
Я просто не сильно дружу с разными веб сервисными штучками ... не приходилось сталкиваться.
Поэтому кто нибудь не может побыстрому дать инфу почему нет соединения?
Может адрес сервиса не тот ... или в коде ошибка..
Буду признателен!

Petre Подменю пользователя
сообщение 09.04.19, 14:44
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2551
Из: Київ, Україна
Спасибо сказали: 666 раз
Рейтинг: 632.8

Первые способы дают локальный айпи клиента.
Последний - внешний айпи сервера (и, видимо, пользователю сервера 1с доступ туда прикрыт).


Signature
Допрацьовую:
- "Бухгалтерія для України 1.2";
- "Бухгалтерія для України 2.0";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 09.04.19, 14:55
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 376
Спасибо сказали: 5 раз
Рейтинг: 2

Petre @ Сегодня, 14:44 * ,
Да ... думаю так...
Но ладно... тогда вопрос в другом стиле. Тем более что мне нужно получить не айпи сервера, а локальной машины.
и как говорил все работает и не нужно через веб сервис, но работает только для тонкого, а веб клиент сом-объект че то не терпит.
И та форма где есть вызов первой или второй функции вовсе не открывается и выдает ошибку.
Поэтому вопрос в том, как получить АйПи локальной машины клиента и так что бы это РАБОТАЛО И ДЛЯ ВЕБ-КЛИЕНТА.
Вот в чем вопрос.
Если не трудно... буду признателен!

Gigi Подменю пользователя
сообщение 09.04.19, 16:22
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 376
Спасибо сказали: 5 раз
Рейтинг: 2

Gigi @ Сегодня, 14:55 * ,
Ответа нет ... видимо с этим опять гем.
Короче ... в таком случае вынужден сделать так..
Функция Получить_IP() Экспорт
Попытка Возврат winmgmts_Получить_IP() Исключение Возврат Неопределено КонецПопытки;    
КонецФункции

И точка... т.е. для веб клиента придется отказаться от определения IP. Что бы под него записывать индивидуальные настройки тех пользователей которые через веб клиент.
Но ладно ... хрен с ним ... с этим еще париться...
Но в случае если будут предложение и разные выходы буду признателен!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 26.06.19, 5:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне