Имя: Пароль:
1C
1С v8
Работа с веб-сервисами
0 mzelensky
 
27.09.11
16:11
Народ, подскажите, а то туплю ужасно!

Имеется веб-сервер, который обрабатывает определенные запросы, которые ему посылают и выдает в качестве ответа xml-файлы.

Вот тест сервера:

http://212.33.235.243/WebServer/Service1.asmx

Например, выбираем там "GetAllObjInfo" - далее там описаны примеры запросов и ответов на них. Как всю эту беду можно обработать из 1с-ки ??? т.е. послать запрос на этот сервер и получить ответ ???
1 mzelensky
 
27.09.11
16:12
вроде как прописать сам запрос - ничего сложного...в 1с-ке просто формируем нужные строку с параметрами...а что дальше?
2 Asmody
 
27.09.11
16:20
есть такой объект в 1С — WSСсылка называется
3 Asmody
 
27.09.11
16:21
можно ознакомиться Книга знаний: v8: Использование внешних web-сервисов в 1С:Предприятие 8 , правда она устарела несколько
4 mzelensky
 
27.09.11
16:25
а в чем устарела?!
5 mzelensky
 
27.09.11
16:35
(3) не совсем пойму где взять "URL импортируемого WSDL" ??? для создания "WS-ссылки"
6 Asmody
 
27.09.11
16:35
7 mzelensky
 
27.09.11
16:37
(6) уже пробовал - ошибка в 1С - неверный формат!
8 mzelensky
 
27.09.11
16:42
(6) ты пробовал эту ссылку у себя прописывать:

http://212.33.235.243/WebServer/Service1.asmx?WSDL
9 Asmody
 
27.09.11
16:45
попробовал. ошибка. значит, не судьба с этим сервисом по SOAP поработать.
пиши запросы через HTTPСоединение, благо через GET/POST там тоже какой-то интерфейс имеется
10 mzelensky
 
27.09.11
16:52
(9) ладно...как в этом случае будет организована работа? я через "HTTPСоединение" запрашиваю некий адрес с параметрами...а что получаю в ответ???
11 Asmody
 
27.09.11
17:05
(10) мне начать СП продавать по кускам?
HTTPСоединение (HTTPConnection)
Получить (Get)
Синтаксис:

Получить(<Источник>, <ИмяВыходногоФайла>, <Заголовки>)
Параметры:

<Источник> (обязательный)

Тип: Строка.
Адрес ресурса на сервере.
<ИмяВыходногоФайла> (обязательный)

Тип: Строка.
Имя файла, в который помещаются данные полученного ресурса.
<Заголовки> (необязательный)

Тип: Строка.
Указываются заголовки, добавляемые к запросу на сервер. Текстовые пары вида <Заголовок>:<Значение>, разделяемые комбинацией ВК + ПС.
Описание:

Получает ресурс из указанного адреса.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
12 mzelensky
 
27.09.11
17:20
(11) я умею читать СП...мне не понятно следующее - перед тем, как СКАЧАТЬ ФАЙЛ С СЕРВЕРА, его нужно сгенерировать. Чтобы сгенерировать файл, мне нужно послать запрос на этот сервер, потом дождаться формирования файла ,а уж потом его скачивать!!!

т.е. вопрос: как все это сделать?
13 Asmody
 
27.09.11
17:21
(12) что за бред? где написано, что тебе нужно скачать файл с сервера?
14 mzelensky
 
27.09.11
17:23
(13) читай (10). Я и пытаюсь узнатЬ .что я получу на выходе?!?!? Написано .что xml- файл, но как я этот xml получу нигде не сказано :(
15 aleks-id
 
27.09.11
17:23
делай через MSSoap.SoapClient30
на форуме куча примеров есть для работы
16 mzelensky
 
27.09.11
17:25
(15) да мне уж хоть как-нибудь...а то 10 вариантов, все говорят, что это работает, но почему-то когда начинаешь разбираться/вникать - выходит, что это не, что нужно!
17 Asmody
 
27.09.11
17:25
(14) где написано, что ты получишь xml-файл? ты получишь ответ с сервера в виде xml. 1Ска сохранит тебе его в файл, имя которого ты укажешь в методе Получить() (или ОтправитьДляОбработки() )
18 mzelensky
 
27.09.11
17:26
(16) + чуваки из тех. поддрежки (те чей это сервис) вообще ничего не говорят...тупо дали этот тестовый адрес непонятный и список возможных имен запросов - ВСЕ...больше ничего добиться не могу :(
19 mzelensky
 
27.09.11
17:27
(17) есть простенький рабочий пример с "HTTPСоединение"?
В "Я" искал ,но ничего путного пока не вижу.
20 Asmody
 
27.09.11
17:29
Файл=Новый Файл(ФайлСообщения);
   ЗаголовокСообщения="Content-Type: text/xml"+Символы.ВК+Символы.ПС+
                      "Content-length: "+Формат(Файл.Размер(),"ЧГ=0");
                     
   ФайлРезультата=ПолучитьИмяВременногоФайла("xml");
                     
   Соединение = Новый HTTPСоединение(Сервер);
   Соединение.Post(ФайлСообщения, URL, ФайлРезультата, ЗаголовокСообщения);
   
   ЧтениеXML=Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл(ФайлРезультата);
   
   Результат=РазобратьОтвет();
   ЧтениеXML.Закрыть();
   
   УдалитьФайлы(ФайлСообщения);
   УдалитьФайлы(ФайлРезультата);
21 mzelensky
 
27.09.11
17:34
(20) все-равно не догоняю пару моментов...что здесь "ФайлСообщения" ? откуда ты его взял и что в нем должно быть? В СП написано, что это "Адрес файла-источника." - что под этим подразумевают?
22 Asmody
 
27.09.11
17:41
ФайлСообщения — это файл с параметрами, который я отправляю на сервер для обработки. Что в нём будет, зависит от сервера. У тебя это будет скорее всего обычный текст вида:
ИмяПараметра=ЗначениеПараметра
23 Asmody
 
27.09.11
17:45
сразу всё прокомментирую:

Сервер — это адрес сервера, у тебя будет 212.33.235.243
URL — адрес ресурса без адреса сервера. Т.е. для http://212.33.235.243/WebServer/Service1.asmx?op=ConnectToServer будет равно /WebServer/Service1.asmx?op=ConnectToServer

РазобратьОтвет(ЧтениеXML) — это функция, которая разбирает полученный xml и возвращает некоторую структуру данных 1С
24 mzelensky
 
27.09.11
17:48
А вот то, что они пишут здесь для ПОСТА:

http://212.33.235.243/WebServer/Service1.asmx?op=GetAllObjects

"POST /WebServer/Service1.asmx/GetAllObjects HTTP/1.1
Host: 212.33.235.243
Content-Type: application/x-www-form-urlencoded
Content-Length: length

a=string"

???
25 mzelensky
 
27.09.11
17:50
(23) завтра буду пробовать конектиться :( сейчас уже голова кипит!

Спасибо за помощь!
26 Asmody
 
27.09.11
17:54
(24) первые две строки пропускаем, Content-Type и Content-Length передаем через ЗаголовокСообщения, а a=string и прочее кидаем в файл ФайлСообщения
27 oleg_km
 
27.09.11
18:46
(26) Content-Length не нужно IE умный сам формирует
28 Asmody
 
27.09.11
19:14
(27) у меня без него на стороне сервера ошибка вылезала