Имя: Пароль:
1C
1С v8
Oracle соединение с 1с8.2 через Web-сервис
0 Leonidikus
 
14.11.12
11:27
Здравствуй IT-Сообщество!

Имеется:
Oracle 11g на компьютере А.
1с 8.2.15.294 на компьютере Б.

Задача: Отправить данные с Oracle на 1с.

Решение: (предполагаемое решение)

Действия на машине Б
В компьютере Б установлен Apache, на 1с поднят и опубликован Web-сервис ( имя => reqvest, Создана операция => Open, в которой обозначен входящий параметр Parametr)


Действия на машине А

В Оракле запускается PL/SQL

Declare

req utl_http.req;
resp utl_http.resp;
request_env varchar2(2000) := '';

Begin
 //формирования SOAP для вызова операции Open
 request_env:=request_env||'<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema">';
 request_env:=request_env||'<soap:Header>';
 request_env:=request_env||'<soap:Body>';
 request_env:=request_env||'<web:Open>';
 request_env:=request_env||'<web:Parametr>test<web:Parametr>';
 request_env:=request_env||'</web:Open>';
 request_env:=request_env||'</soap:Body>';
 request_env:=request_env||'</soap:Envelope>';

 req := utl_http.begin_request('http://<host 1s>/SKL/ws/reqvest?wsdl', 'POST', utl_http.HTTP_VERSION_1_0);
 utl_http.set_authentication(r => req, username => 'Administrator');
 utl_http.set_header(req, 'Content-Type', 'value=text/xml; charset=utf-8');
 utl_http.write_text(req,request_env);
 resp := utl_http.get_response(req);
 dbms_output.put_line(resp.status_code);

end;

Итог:
В Oracle возвращается статус 200.
В 1с в журнале регистрации появляется 3 записи, Аутентификация, Начало сеанса, Конец Сеанса (все три происходят в течении 1 сек), но действия описанные в операции Open не выполняются.

Для проверки сделал в модуле сеанса и в операции Open создание строки в справочнике. Строка из Модуля сеанса появляется а из Web-сервиса нет.

Вопрос: Как запустить функции в 1с?
1 Leonidikus
 
14.11.12
11:34
Прошу прощение но что-то не понятное вставилось в utl_http.begin_request
правильно
req := utl_http.begin_request('http://<host 1c>/SKL/ws/reqvest?wsdl', 'POST', utl_http.HTTP_VERSION_1_0);
2 Balonbl4
 
14.11.12
11:38
Подключитесь к веб сервису на 1С с помощью soapUI и посмотрите,как он строит запросы. По аналогии сделайте и в Оракле.
3 Leonidikus
 
14.11.12
12:26
(2) Я конечно гляну, но я больше грешу на неправильный метод передачи данных
4 Leonidikus
 
15.11.12
15:11
Проблема решена.
Ошибка заключалась в неправильном SOAP структуре.

Сделал как предлагал товарищ Balonbl4, установил soapUI и он мне показал структуру которую от меня ждала 1с