Имя: Пароль:
1C
1С v8
web сервисы в 1С
,
0 tp_home
 
08.10.12
14:59
Здравствуйте!
Сразу скажу это моя первая обработка в этой тематике и RTFM не советовать, потому как скушал его много, прошу дать либо совет, либо направление куда двигаться.
Вот такая трабла:
В сети развернут web сервис на 89 порту одной из машин.
С помощью обработок, коих много в сети и на ИТС наморосил свою. При чем пробовал варианты когда WS-ссылка объект создан в конфигурации:

СервисПрокси = WSСсылки.BI.СоздатьWSПрокси(ПространствоИмен, ИмяСервиса, ИмяПорта);

, и вариант при котором определения вытягивают во временный объект

Определение = Новый WSОпределения(ПутьКWSDL);
СервисПрокси = Новый WSПрокси(Определение, ПространствоИмен, ИмяСервиса, ИмяПорта);

При создании объекта wsссылки в конфигураторе получаю подробное описание сервиса
Так же его можно видеть по ссылке http://81.23.4.250:89/User.asmx?WSDL
Начколько я понял имя сервиса UserService...

Так вот 1С говорит
Сервис не найден. {http://81.23.4.250:89}:UserService

Настройки параметров следующие

   ПутьКWSDL = "http://81.23.4.250:89/User.asmx?WSDL";
   ПространствоИмен = "http://81.23.4.250:89";
   ИмяСервиса = "UserService";
   ИмяПорта = "UserServiceSoap";

Как так? Где косяк?
1 Balonbl4
 
08.10.12
15:02
Попробуй добавить эту ws ссылку в дерево конфигурации и напиши,что получится
2 ProgAL
 
08.10.12
15:03
Определения = Новый WSОпределения("http://" + СокрЛП(СтрокаАдреса) + "/ws/ws/wsexchange.1cws?wsdl", "Администратор", "");
   Прокси = Новый WSПрокси(Определения, "http://www.yandex.ru/wsexchange", "WSExchange", "WSExchangeSoap");

   Прокси.Пользователь = "Администратор";
   Прокси.Пароль = "";
   
   ДанныеФайла = Прокси.GetDayData(ВыбДата);
   Если ДанныеФайла = Неопределено Тогда    
       Возврат;
   КонецЕсли;

   ДанныеФайла.Записать("D:\123456789.zip");
3 Mafoni
 
08.10.12
15:04
у меня была схожая проблема !
писал изначально вот так http://localhost/myDB3/wshello.1cws физически файло 1cws лежит в каталоге myDB3 - но выдавало ошибку.
Добрые люди посоветовали написать вот так - http://localhost/myDB3/ws/wshello.1cws - работает на УРА !
4 tp_home
 
08.10.12
15:06
(1) пробовал и с объектом в конфигурации (см пример выше, где объект в конфигурации называется BI) и без. и там и там ругается.

(2) а можно поподробнее по первой строке, что это за функционал?
5 tp_home
 
08.10.12
15:08
(3) насколько я понял 1cws нужен для версии 8.1
Прошу прощения, что не указал свою версию изначально: 8.2 (8.2.15.310)
6 Mafoni
 
08.10.12
15:10
5 - не совсем понял что значит нужен для версии 8.1 !!! Эт как ???
7 ProgAL
 
08.10.12
15:11
2 раза в строке адреса ws повторить если для 8-2.
8 Mafoni
 
08.10.12
15:12
(7) - у мну 8.2
9 Balonbl4
 
08.10.12
15:21
(0) Что-то вы темните, у меня ваша ссылка отлично подключилась: http://dl.dropbox.com/u/7720336/ws.png
10 tp_home
 
08.10.12
15:31
(9) у меня она тоже подключается))))
а вот когда метод СервисПрокси = WSСсылки.BI.СоздатьWSПрокси(ПространствоИмен, ИмяСервиса, ИмяПорта) делаешь, то получаю ошибку Сервис не найден. {http://81.23.4.250:89}:UserService

... с этим и борюсь... вроде как угадал все буквы, а слова произнести не могу...
11 tp_home
 
08.10.12
15:32
(8) на каком то из форумов вычитал.. к сожалению уже закрыл вкладку, потому как хром просто отказался работать от количества закладок))
12 Balonbl4
 
08.10.12
15:35
UserServiceSoap - и имя сервиса и имя порта
13 Fragster
 
гуру
08.10.12
15:37
Определение = Новый WSОпределения(СсылкаНаОпределение);
   //Для каждого Сервис Из Определение.Сервисы Цикл
   //    Сообщить(Сервис.Имя);
   //    
   //    Для каждого ТочкаПодключения Из Сервис.ТочкиПодключения Цикл
   //        Сообщить(ТочкаПодключения.Имя, СтатусСообщения.БезСтатуса);
   //        Для каждого Операция Из ТочкаПодключения.Интерфейс.Операции Цикл
   //            ВозвращаемоеЗначение = Операция.ВозвращаемоеЗначение;
   //            Сообщить(Операция.Имя + " " + ВозвращаемоеЗначение.Тип + " " + ВозвращаемоеЗначение.ВозможноПустое + " " + ВозвращаемоеЗначение.Документация);
   //            Для каждого Параметр Из Операция.Параметры Цикл
   //                Сообщить(Символы.Таб + Параметр.Имя + " " + Параметр.НаправлениеПараметра + " " + Параметр.Тип + " пустой: " + Параметр.ВозможноПустой);
   //            КонецЦикла;
   //        КонецЦикла;
   //    КонецЦикла;
   //    
   //КонецЦикла;
   
   Сервис = Определение.Сервисы[0];
   ТочкаПолключения = Сервис.ТочкиПодключения[0];
   Прокси = Новый WSПрокси(Определение, "http://shop.n-l-e.xsd", Сервис.Имя, ТочкаПолключения.Имя);
   
   Фабрика = Определение.ФабрикаXDTO;
   Если Ложь Тогда Фабрика = ФабрикаXDTO КонецЕсли;
   
         ,,,,,,,,,,,,,,,,
14 Fragster
 
гуру
08.10.12
15:40
у тебя почему-то в байндинге операции на боссинформер ссылаются что не верно, ИМХО
15 tp_home
 
08.10.12
15:43
(14) думаешь сразу написать туда 81.23.4.250?
16 tp_home
 
08.10.12
15:48
(13) воткнул
Определение = Новый WSОпределения(ПутьКWSDL);
Для каждого Сервис Из Определение.Сервисы Цикл
 Сообщить(Сервис.Имя);
КонецЦикла;

СервисПрокси = Новый WSПрокси(Определение, ПространствоИмен, ИмяСервиса, ИмяПорта);


Вывел в сообщения 1 строку и потом опять еррор... попробую через обращение к 0-вому элементу сейчас..
17 Fragster
 
гуру
08.10.12
16:11
(15) ну и порт, хотя по логике сам веб сервис должен правильный генерить.
(16) то, что у меня закомменчено - ошибок не выдает, если раскомментить и wsdl правильный.
18 tp_home
 
08.10.12
16:32
(17) ага, не выдает ;)
ТочкаПоЛключения  в ТочкаПолключения = Сервис.ТочкиПодключения[0];

Ну это мелочь))
19 tp_home
 
08.10.12
16:38
СервисПрокси = Новый WSПрокси(Определение, ПространствоИмен, Определение.Сервисы[0].Имя, Определение.Сервисы[0].ТочкиПодключения[0].Имя);


Не помогло..
20 tp_home
 
08.10.12
16:49
нда...
раскоментил..
UserService
UserServiceSoap
Get {http://www.bossinformer.com/}UserResponse Да
   UserRequest Входной {http://www.bossinformer.com/}UserRequest пустой: Да
GetReport {http://www.bossinformer.com/}UserResponse Да
   UserRequest Входной {http://www.bossinformer.com/}UserRequest пустой: Да
Put {http://www.bossinformer.com/}UserResponse Да
   UserRequest Входной {http://www.bossinformer.com/}UserRequest пустой: Да
UserServiceSoap12
Get {http://www.bossinformer.com/}UserResponse Да
   UserRequest Входной {http://www.bossinformer.com/}UserRequest пустой: Да
GetReport {http://www.bossinformer.com/}UserResponse Да
   UserRequest Входной {http://www.bossinformer.com/}UserRequest пустой: Да
Put {http://www.bossinformer.com/}UserResponse Да
   UserRequest Входной {http://www.bossinformer.com/}UserRequest пустой: Да


Видимо действительно дело в ссылке на http://www.bossinformer.com/

Было ПространствоИмен = "http://81.23.4.250:89";
Стало ПространствоИмен = "http://www.bossinformer.com/"

И все заработало!!!

Спасибо всем, прошу прощения если что, удачи!
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший