Имя: Пароль:
1C
1С v8
Сторонний Web сервис
0 Zixxx
 
29.04.14
11:29
Есть сторонний сервис, на который тупо нужно отправить xml, если перейти по ссылке в браузере, то можно будет увидеть следующий текст.

Message Servlet is in Status OK
Status information:
Servlet com.sap.aii.adapter.soap.web.MessageServlet (Version $Id: //tc/xpi.adapters/NW731EXT_10_REL/src/_soap_application_web_module/webm/api/com/sap/aii/adapter/soap/web/MessageServlet.java#5 $) bound to /MessageServlet
Classname ModuleProcessor: null
Lookupname for localModuleProcessorLookupName: localejbs/ModuleProcessorBean
Lookupname for remoteModuleProcessorLookupName: null
ModuleProcessorClass not instantiated
ModuleProcessorLocal is Instance of com.sun.proxy.$Proxy541
ModuleProcessorRemote not instantiated

Разработчики с той стороны говорят, что это всего лишь результат, что адрес правильный, и SAP PI слушает и ждет WS.

Пробовал конечно же как-то умудриться отправить средствами 1с, но ничего не вышло, еще кинули wsdl его можно посмотреть по ссылку http://yadi.sk/d/xcpDOhG6Nd3Dm. Из него выдергивал методы, но все безуспешно, говорит нет такого сервиса.

При создании определения, везде пустота

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

Может кто в курсе что делать, куда копать, как это все работает?
1 Serginio1
 
29.04.14
11:43
Сохрани этот WSDL и загрузи в конфигуратор указав путь на этот файл. Либо

ОпределениеТ=Новый WSОпределения(ПутьКФайлу_wsdl);
    WSСервис=ОпределениеТ.Сервисы[0];
    прокси=Новый WSПрокси(ОпределениеТ, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя);
2 Zixxx
 
29.04.14
12:26
(1) Вот что пишет...

ОпределениеТ=Новый WSОпределения("e:\SI_TransactionalDataFrom1CService.wsdl");
по причине:
Неверный формат.
3 Serginio1
 
29.04.14
12:37
(2) VS 2013 прекрасно его прочитала. Как альтернатива
v8: Подскажите хорошую статью как в С# создать веб-сервис и прикрутить к 1С 8.2?
4 Zixxx
 
29.04.14
12:54
(3) У меня vs тоже нормально прочитать, но 1с по моему не читает какие-то типы массивов или чего-то там, может по этому :(.
А есть пример обработки и компоненты, а то вообще не понятно с чего там начинать, куда что заворачивать и чем оборачивать
5 Serginio1
 
29.04.14
13:02
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=142&lid=9569

здесь компонента и описание.

Здесь обсуждение v8: v8: Использование сборок .NET в 1С 7.x и 8.x

и пример использования конфигурационного файла
6 Serginio1
 
29.04.14
13:04
Там внутри архива есть NetObjectToIDispatch.docx

Нужные DLL. Запускаем РегистрацияКомСервера.exe и выбираем NetObjetToIDispatch45.dll которая лежит в DLLNetObjetToIDispatch45

Затем запускаем толстого клиента и ТестNetObjectToIDispatch.epf

Для  тестов вэб сервисов (кнопки  «Тест вызова сервиса» и «Вызов сервиса используя config file») нужно выбрать Сборку ФайлыNetObjectToIDispatch\СборкиДляТестов\ NestNet45.dll
Для тестов событий применяется (кнопка «Тест отслеживания изменений в директории»)
Нужно Выбрать Сборку ФайлыNetObjectToIDispatch\СборкиДляТестов\ ПроектИспользованияДелегатов.dll

В поле Каталог для отслеживания изменений Выбрать путь для отслеживания изменений в текстовых файлах

Для тестов загрузки без регистрации, информации о типе кнопки («Загрузка com объекта Без ПрогИД», «Загрузка com объекта Без ПрогИД», «Тест expando object»)
Выбираем Имя Файла сборки
ФайлыNetObjectToIDispatch\СборкиДляТестов\ЗагрузкаCOMОбъектаБезРегистрации.dll
Выбираем НадписьКаталогОтличнойОтТекущейВерсии1с
нужный каталог




Для тестирования обмена сообщениями по TCP/IP COM порта кнопки
(«ЗапуститьСерверTCPIP», «Отправить команду», «Открыть порт сканера»)
Файл NetObjectToIDispatch\СборкиДляТестов\ОбменПоTCPIP.dll
Только там пример нужно запускать из разных приложений.
Я и кнопку отправить команду сделал невидимой.
Если из одного приложения сделать, то посылающий ждет ответ
и как сервер не может принять событие. Такой дид лок получается. Я этот сервер в свое время для КПК делал с WiFi для плохой связи. Поэтому данные сжимаются и декодируются в AANSI
7 Zixxx
 
29.04.14
14:51
А чем этот файл не устраивает 1с, может в файле есть еще какие-нибудь ссылки которых не хватает?
8 Адинэснег
 
29.04.14
15:01
САП отстой
9 Serginio1
 
29.04.14
15:11
Там на Policy ругается и порт.
10 Zixxx
 
29.04.14
15:33
(9) А где видно что на Policy и порт ругается? В wsdl только визуально увидел что policy там ссылка на что-то еще есть
11 Serginio1
 
29.04.14
15:43
Я неправильно Policy вырезал. Поэтому на порт и ругался.
У 1С проблемы со спецификаций WS-* 1С.
Например Ws-Security Ws-Reliable и др
12 Zixxx
 
29.04.14
20:36
В общем сделал следующим образом, поправил wsdl, подгрузил его из файла. Отправил данные. С той стороны получил ответ.

вы отправляете данные, так:
<MT_1C_MasterData>

А нам нужно так:
<ns0:MT_1C_MasterData xmlns:ns0="http://1C_master_data">;

Что означают эти приставки ns0: почему хотят получать именно так, если в wsdl этого нигде нет. И можно ли х как-то добавить?
13 Zixxx
 
30.04.14
09:52
ап
14 Zixxx
 
30.04.14
10:54
fg
15 Serginio1
 
30.04.14
11:10
(12) По схеме у тебя xmlns:p1
А из .Net не пробовал отправлять?
16 Zixxx
 
30.04.14
11:31
(15) Через Net. пока не пробовал, не вывезу остальные задачи по времени, пока пошел по протоптанной дорожке, если что будет время на праздниках с net по разбираться.

А к чему эти приставки относятся p1? И должна ли 1С была отправить p1, так как мне пишут что вроде этих приставок вообще нет. Я так понимаю что это указание типа (явное не явно по аналогу с записью xml), а при отправке это как-то указывается или это совсем другое?
17 Serginio1
 
30.04.14
11:40
(16) Там делов то. Создал приложение, прописал ссылку.
Подключился вызвал метод. Делов на пару минут.
Наверняка у них и примеры есть. Как правило все тестируют на Net.

В ЗаписьXML есть метод
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance";);

А вот как это это к твоей задаче прикрутить не знаю.
18 Zixxx
 
30.04.14
12:06
(17) А при создании ОбъектаXDTO из фабрики, можно как-то указать тип самому если там anyType по умолчанию получается?
19 Serginio1
 
30.04.14
12:21
Нет у тебя в схеме прописано. По уму это должно быть в WSОпределения но там нет никакого СоответствиеПространстваИмен
20 Zixxx
 
30.04.14
13:58
Может есть возможность прописать эти данные в wsdl или создать свой пакет с нужными параметрами а потом уже полученный из пакета объект поместить в объект из wsdl.

Смотрели Fiddler-ом что отправляется:

1С:
[code]
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">;
    <soap:Header/>
    <soap:Body> <MT_1C_MasterData xmlns="http://1C_master_data";
        xmlns:xs="http://www.w3.org/2001/XMLSchema";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
    <Header/>
    <MasterData>
        <Header/>
        <Code>000000076</Code>
        <SearchTerm/>
        <Name>COFACE SA SWISS BRANCH</Name>
        <Address>Rue Belle-Fontaine 18, CP 431, CH-1001, Lausanne, Swiss</Address>
        <INN/>
        <OKPO/>
        <KPP/>
        <Telephone>+41 21 331 00 40</Telephone>
        <Code_Group/>
    </MasterData>
</MT_1C_MasterData></soap:Body>
</soap:Envelope>
[/code]

SoapUI:
[code]
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:c="http://1C_master_data">;
   <soapenv:Header/>
   <soapenv:Body>
      <c:MT_1C_MasterData>
         <Header>
            <Message_ID></Message_ID>
            <Number></Number>
            <TimeStamp></TimeStamp>
            <System_ID></System_ID>
         </Header>
         <MasterData>
            <Header>
              <Message_ID></Message_ID>
               <Number></Number>
               <TimeStamp></TimeStamp>
               <System_ID></System_ID>
            </Header>
            <Code>000000076</Code>
            <SearchTerm></SearchTerm>
            <Name>COFACE SA SWISS BRANCH</Name>
            <Address>Rue Belle-Fontaine 18, CP 431, CH-1001, Lausanne, Swiss</Address>
            <INN></INN>
            <OKPO></OKPO>
            <KPP></KPP>
            <Telephone>+41213310040</Telephone>
            <Code_Group></Code_Group>
         </MasterData>
      </c:MT_1C_MasterData>
   </soapenv:Body>
</soapenv:Envelope>
[/code]
21 Serginio1
 
30.04.14
14:17
Вообще то этот вопрос нужно задавать разработчикам
У тебя в заголовке прописано соответствие пространства имен
MT_1C_MasterData xmlns="  без указания соответствия.
То есть все что без префикса должно соответствовать http://1C_master_data
22 Zixxx
 
30.04.14
14:27
(21) Это в ручную самому можно как-то прописать в wsdl?
23 Zixxx
 
30.04.14
14:49
Через SoapUI же с префиксом отправляет, может где в пакете что указать чтобы тоже префикс появился, но не соображу где и что именно
24 Zixxx
 
30.04.14
16:25
ап
25 Zixxx
 
30.04.14
17:44
ап