Имя: Пароль:
1C
1С v8
Обмен через web сервис
0 Забавный зверек
 
20.02.18
15:27
Добрый день!

Помогите пожалуйста.
Есть задача: сделать простенькое основное приложение с номенклатурой и в мобильном приложении по артикулу получить наименование.
Сразу скажу, что до этого с мобильным приложением дела не имел.
Делаю по книге Хрусталевой.

Проблема сейчас - не могу получить данные на мобильном приложении из "основного" приложения через web сервис -
Я не понимаю даже правильно ли я все организовал.
На своей рабочей машине поставил апач. На нем же разрабатываю "мобильное приложение" и "основное". Сами базы данных лежат на sql сервере в сети.
В "основном приложении"сделал web сервис ZaprosOstatok с одной операцией ПолучитьДанные. Сделал публикацию на веб сервере.
Но в "мобильном приложении" не получается создать описание сервиса:
{Обработка.ПроверкаОстатка.Форма.Форма.Форма(34)}: Ошибка при вызове конструктора (WSОпределения):
"При создании описания сервиса произошла ошибка. URL сервиса: http://192.168.1.167/ws/wsExchange.1cws?wsdl
Код ответа сервера: 404"

я не очень понимаю как убедиться что нормально опубликовал web сервис?
1 Джинн
 
20.02.18
15:31
Браузером проверьте. Или с помощью SoapUI.
2 бомболюк
 
20.02.18
15:32
1. перед "ws" в адресе сервиса должно еще кое что быть - имя, под которым на сервисе база опубликована
2. адрес у сервиса локальный, а инет мобильного устройства конечно же 3G? ;-)
3 Забавный зверек
 
20.02.18
15:35
(1) проверить что апач работает? браузером проверяю работает.
или можно как то проверить что вебсервис появился?
4 Забавный зверек
 
20.02.18
15:36
(2) 2. инет мобильного устройства - вайфай той же сети
5 Джинн
 
20.02.18
15:37
(3) Вебсервис и проверяется браузером. Данные не получите конечно, но описание вернет. А данные можно SoapUI проверять. Только в последних версиях они что-то с авторизацией намутили - я старьем пользуюсь обычно.
6 Забавный зверек
 
20.02.18
15:39
(3) это как? "адрес сервера/имя сервиса" ?
7 Забавный зверек
 
20.02.18
15:41
открывается папка о имени сервиса - в ней один файл default.vrd
8 Забавный зверек
 
20.02.18
15:43
При публикации сервиса в структуре сервера появляется так:
C:\Server\data\htdocs\wsExchange\default.vrd

Содержимое файла:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; base="/wsExchange" ib="Srvr="SQL:1741";Ref="MobilOP";">
<ws publishExtensionsByDefault="true">
<point name="ZaprosOstatok" alias="wsExchange" enable="true" reuseSessions="autouse" sessionMaxAge="20" poolSize="10" poolTimeout="5"/>
</ws>
<standardOdata enable="true" reuseSessions="autouse" sessionMaxAge="20" poolSize="10" poolTimeout="5"/>
</point>
9 бомболюк
 
20.02.18
15:44
10 Забавный зверек
 
20.02.18
15:47
Я не понимаю почему такой адрес в книге

http://192.168.1.167/wsExchange.1cws?wsdl

у меня же нет файлов "*.1cws"
11 Забавный зверек
 
20.02.18
15:49
тоже самое
{Обработка.ПроверкаОстатка.Форма.Форма.Форма(34)}: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. URL сервиса: http://192.168.1.167/wsExchange/ws/wsExchange.1cws?wsdl
Код ответа сервера: 404
12 бомболюк
 
20.02.18
15:49
а ты браузером
13 Забавный зверек
 
20.02.18
15:52
Not Found
The requested URL /wsExchange/ws/wsExchange.1cws was not found on this server.
14 hhhh
 
20.02.18
16:39
15 hhhh
 
20.02.18
16:42
(13) что-то вы фигней какой-то страдаете. Данные между мобильным сервером и мобильным клиентом ходят сами. Не надо придумывать каких-то своих доморощенных сервисов.
16 Забавный зверек
 
20.02.18
17:00
Не понял. Мобильный сервер это что - Мобильное приложение на компе?
Мне нужно веб сервисом считать данные с основной базы
17 ptiz
 
20.02.18
17:11
(15) "Данные между мобильным сервером и мобильным клиентом ходят сами" - можно подробнее для чайников?
На компе делаю конфигурацию, публикую из неё мобильное приложение.
С телефона запускаю 1cem-arm.apk, подключаю базу, всё работает.
А как данные сами будут бегать между базой на компе и телефоном?
18 Забавный зверек
 
20.02.18
17:25
рестартанул апач, продвинулся вперед! теперь говорит
Прокси = Новый WSПрокси(Определения, URI, "ZaprosOstatok", "ZaprosOstatok");
по причине:
Порт не найден. {http://192.168.1.167/wsExchange}:ZaprosOstatok:ZaprosOstatok
19 ptiz
 
20.02.18
17:36
(18)
Я так делаю:

Функция ПолучитьНовыйПроксиВебСервисаЦБ(ТекстОшибки = "") Экспорт
    
    Пользователь = "Obmen";
    Пароль = "1";
    
    ОпределениеСервиса = Неопределено;
    
    АдресСервераСПортом = Константы.АдресОбменаЦБ.Получить();
    Если Прав(АдресСервераСПортом, 1) <> "/" Тогда
        АдресСервераСПортом = АдресСервераСПортом + "/";
    КонецЕсли;
    
    ТекстОшибки = "";
    Попытка
        ОпределениеСервиса = Новый WSОпределения("http://"; + АдресСервераСПортом + "ws/MobileExchange.1cws?wsdl", Пользователь, Пароль, , 300);
    Исключение
        ТекстОшибки = ОписаниеОшибки();
        ОпределениеСервиса = Неопределено;
    КонецПопытки;
    
    Если ОпределениеСервиса = Неопределено Тогда
        ТекстОшибки = ТекстОшибки + ?(ТекстОшибки = "", "", Символы.ПС) + "Не удалось получить определение веб-сервиса";
        Возврат Неопределено;
    КонецЕсли;
    
    Попытка
        Сервис = ОпределениеСервиса.Сервисы[0];
        Прокси = Новый WSПрокси(ОпределениеСервиса, Сервис.URIПространстваИмен, Сервис.Имя, Сервис.ТочкиПодключения[0].Имя, , 300);
        Прокси.Пользователь = Пользователь;
        Прокси.Пароль = Пароль;
    Исключение
        ТекстОшибки = ОписаниеОшибки();
        ОпределениеСервиса = Неопределено;
        Прокси = Неопределено;
    КонецПопытки;

    Если Прокси = Неопределено Тогда
        ТекстОшибки = ТекстОшибки + ?(ТекстОшибки = "", "", Символы.ПС) + "Не удалось получить прокси веб-сервиса";
        Возврат Неопределено;
    КонецЕсли;
    
    Возврат Прокси;
    
КонецФункции
20 Забавный зверек
 
20.02.18
17:54
(19) спасибо, так сработало!