Имя: Пароль:
1C
1С v8
Обмен мобильного приложения с базой 1с
,
0 IT_PROGRAMMIST
 
18.02.15
15:54
Добрый день.
Коллеги подскажите.
Написал простенькое мобильное приложение. Организовал обмен между мобильным приложением и базой 1с.
Задача следующая: из мобильного приложение выполнять поиск товара в основной базе по штрихкоду.
Задачу выполнил, но товар ищется около 1 минуты.
Вот код подключения к основной базе из мобильного приложения при поиске(именно на нем так долго думает):
    Определение         = Новый WSОпределения("http://10.0.2.2/mobileUt10_3/ws/ws1.1cws?wsdl";,ИмяПользователя,Пароль);
    URI                 = "http://localhost/ws1";;
    Прокси                = Новый WSПрокси(Определение,URI,"MyExchange","MyExchangeSoap");
    Прокси.Пользователь = ИмяПользователя;
    Прокси.Пароль        = Пароль;
Прокси.МояФункция(КодНоменклатуры)

Я что-то не так делаю? Поиск 1 минуту - это очень много. И так при каждом поиске. Сохранить прокси для последующего использования у меня не получилось. Где ее хранить можно?
1 Loki Evil
 
18.02.15
15:56
Попробуй использовать недефолтный порт
2 Loki Evil
 
18.02.15
15:58
Т.е. у нас за секунду-две в сторону базы вылетает с 10-ок заказов с 2-10 строками товаров, контрагентами, магазинами и проч, все это добро сопоставляется и загружается в базу и возвращается ответ, что да, мол, загружено

До смены порта было то 2 секунды то 10 минут
3 IT_PROGRAMMIST
 
18.02.15
15:59
(1) а как его поменять?
4 Loki Evil
 
18.02.15
16:05
(3)
1) в настройках апача (ini-файл, дефолт порт 80)
2) на мобильном приложении - после имени\адреса сервера ":55515"
3) в WS-ссылке - точно также после имени\адреса сервера добавляем порт, в нашем случае это ":55515"

пример ws-ссылки http://xx.xxx.x.xxx:55515/XXXX/ws/obmendan.1cws?wsdl
5 Широкий
 
18.02.15
16:06
минута на прокси или на работу твоей процедуры?
6 IT_PROGRAMMIST
 
18.02.15
16:10
(5) на прокси
7 Широкий
 
18.02.15
16:16
(6) Как определил?
8 Широкий
 
18.02.15
16:18
Навскидку:
Определение         = Новый WSОпределения("http://10.0.2.2/mobileUt10_3/ws/ws1.1cws?wsdl""; target="_blank" rel="nofollow" class="extralink">http://10.0.2.2/mobileUt10_3/ws/ws1.1cws?wsdl"; ;  <-- как это? ,ИмяПользователя,Пароль);
9 Широкий
 
18.02.15
16:21
АдресWS="http://10.0.2.2/mobileUt10_3/ws/ws1.1cws?wsdl";;
ПользовательWS=ИмяПользователя;
ПарольWS=Пароль;

Попытка
    WSОпределения=Новый WSОпределения(АдресWS,ПользовательWS,ПарольWS,,30);
    WSСервис=WSОпределения.Сервисы[0];
    
    WSПрокси=Новый WSПрокси(WSОпределения,WSСервис.URIПространстваИмен,WSСервис.Имя,WSСервис.Имя+"Soap",,30);
    WSПрокси.Пользователь=ПользовательWS;
    WSПрокси.Пароль=ПарольWS;
Исключение
    Возврат Новый Структура("ОписаниеОшибки",КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
10 Loki Evil
 
18.02.15
16:29
(4) на всякий случай добавлю - в настройках апача нужно тоже указывать порт, который вы выбрали, в нашем случае 55515
11 IT_PROGRAMMIST
 
18.02.15
16:31
(5) не чисто на прокси, скорее на полное выполнение операции.
(9) у меня адрес такой же.Это на форуме чего-то добавилось.
(10) под настройками апача имеется файл httpd?
12 IT_PROGRAMMIST
 
18.02.15
16:34
(2) перенастроил апач на другой порт. Все равно долго думает.
(9) сделал также -не помогло.

Для справки: Прокси.МояФункция(КодНоменклатуры) просто выполняется код
Ссылка = Справочники.Номенклатура.НайтиПоКоду(КОд);
Если Ссылка<> ПустаяСсылка тогда
Возврат Ссылка.Наименование;
КонецЕсли
ВОзврат "";
13 Loki Evil
 
18.02.15
16:36
(12) жаль, у нас решило проблему полностью
14 Широкий
 
18.02.15
16:37
А если переделать кода на
возврат "хей"

без поиской и т.д. = сколько выполняется?
15 Loki Evil
 
18.02.15
16:37
(11) httpd.conf - да
Listen 55515, в нашем случае
16 Широкий
 
18.02.15
16:39
(15) На кой ляд ему вешать все на 55515 порт?
17 IT_PROGRAMMIST
 
18.02.15
16:42
(16) я повесил на 1550

(14) сделал обычный код
возврат "давай работай"(без поиска);
По времени столько же.
18 Loki Evil
 
18.02.15
17:11
(16) это просто пример 100% свободного порта от всяких там других программ
19 IT_PROGRAMMIST
 
18.02.15
17:52
может нужно запоминать данные по Прокси, и в последующих поисках не проводить авторизацию заново?
20 DitriX
 
18.02.15
18:06
(0)Как я люблю, когда люди не дают вводных данных :)
Ну ладно:
1. Проверьте скорость подключения из стационарной 1С, и сделайте четкий замер.
2. Сделайте через http сервисы :)
21 IT_PROGRAMMIST
 
19.02.15
11:10
начал делать замер производительности.
Проверка работы мобильного приложения осуществлялась на
1) Эмуляторе Android sdk
2) Мобильном устройстве

Вобщем в этой строке кода, система задумывается на 1 минуту:
WSОпределения=Новый WSОпределения(АдресWS,ПользовательWS,ПарольWS,,30);
Остальное работает моментально(прокси)

В чем подвох??
22 IT_PROGRAMMIST
 
19.02.15
11:12
+(21)
ПользовательWS = "Федоров (администратор)";
ПарольWS         = "";
    АдресWS = "http://10.0.2.2:1550/mobileUt10_3/ws/ws1.1cws?wsdl";;
23 Широкий
 
19.02.15
11:13
(21) Ну значит конфигурация тяжелая.
Долго загружается.
24 IT_PROGRAMMIST
 
19.02.15
11:14
(23)
Данные для мобильного устройства тяну из конфигурации УТ 10.3(демо база)
25 IT_PROGRAMMIST
 
19.02.15
11:26
+(24) сама конфигурация типовая - доработки лишь по web сервисам
26 AquaMan
 
19.02.15
11:29
Замени WSОпредление на WSСсылку
27 IT_PROGRAMMIST
 
19.02.15
11:32
(26) можете пример показать.
Просто с этим объектом работаю впервые.
28 AquaMan
 
19.02.15
11:40
(27)Под рукой нету, создаешь в конфигурации объект WSСсылка и WSПрокси создавать по другому нужно будет: Прокси = WSСсылки.ТвояСсылка.СоздатьWSПрокси()
29 DitriX
 
19.02.15
22:32
(27) В дереве конфигурации - ищешь wsссыку, объект такой, в общих лежит, жмешь добавить, указываешь урл такой же как и тут, или без wsdl, не помню уже, и все.
А дальше читай справку, там особой разницы работы с ним нет, просто ты еще сейчас создаешь программно, а там можно будет пару шагов пропустить. Но учти, каждый раз изменяя веб-сервис - прийдется обновлять и вс-ссылку
30 IT_PROGRAMMIST
 
21.02.15
00:19
Ребят не получается, чтобы заработала WSСсылка.
Что я делаю не так?

Описываю процесс(проверка осуществляется на эмуляторе Андроид сдк на localhost(из андроида подключаюсь к ip 10.0.2.2)):
Создал веб сервис в базе УТ 10.3, сделал публикацию(http://localhost/mobile).
После этого добавил wsссылку в конфигурации мобильного приложения.Ссылка добавилась - все ок.
Делаю вызов функции через WSСсылку.
Пишу следующий код:
    Сервис = WSСсылки.WSСсылкаНаМоюБазу.СоздатьWSПрокси("http://localhost/ws1","MyExchange","MyExchangeSoap";);
    Ответ = Сервис.ПолучитьИнформациюОТоваре("1");

На мобильном устройстве пишет ошибку:
Ошибка работы с Интернет:Connection to http://localhost refused.
пробовал вместо localhost/ws1 писать 10.0.2.2/mobile(ip к которому подключается андроид сдк ) результат:
Сервис не найден:{http://10.0.2.2/...
31 Либерал
 
21.02.15
01:18
как минимум нильзя локалхост писать, на мобиле свой локалхост (если андроид вообще такой псевдоним понимает)
и проверь название/путь веб-сервиса в публикации, наверняка не то пишеш
надо наверное как то типа http://10.0.2.2/ws/ws1 ?? не ??
32 Либерал
 
21.02.15
01:21
вот же у тебя вначале
http://10.0.2.2/mobileUt10_3/ws/ws1.1cws
так и пиши
33 Злопчинский
 
21.02.15
01:57
(0)  ищется обычно собака когда у нее блохи
34 rphosts
 
21.02.15
05:47
(0) отладчиком проверьте сколько времени производится непосредственно поиск на стороне стационарной базы.
35 IT_PROGRAMMIST
 
21.02.15
12:07
в мобильном приложении для доступа к веб сервису писал следующие ip
http://10.0.2.2/mobile/ws/ws1.1cws?wsdl
http://10.0.2.2/mobile/ws
http://10.0.2.2/mobile

пишет Сервис не найден, блин что я пропустил?
36 Либерал
 
21.02.15
13:26
попробуй так
http://10.0.2.2/mobile/ws/ws1?wsdl
если у тебя база опубликована под именем mobile
а веб-сервис опубликован под именем ws1.1cws
и веб-сервис в дереве как MyExchange
37 Либерал
 
21.02.15
13:29
а вообще сам себя путаешь - если MyExchange так и публикуй его как MyExchange а не как ws1
38 rphosts
 
21.02.15
13:33
(35) будь мужиком, начни отлаживать в эмуляторе !