Имя: Пароль:
1C
1C 7.7
v7: Отправка документа в EDI
,
0 maestro-72
 
24.02.16
17:51
Народ, может кто сталкивался. Требуется отправить подтверждение заказа на EDI платформу: примерно так реализовано
Парам="<?xml version=""1.0"" encoding=""utf-8""?>
    |<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""; xmlns:xsd=""http://www.w3.org/2001/XMLSchema""; xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">;
      |    <soap12:Body>
    |        <Send xmlns=""http://www.comarch.com/"">;
    |              <Name>" + Login + "</Name>
    |              <Password>" + Password + "</Password>
    |              <PartnerIln>" + PartnerIln + "</PartnerIln>
    |              <DocumentType>" + DocumentType + "</DocumentType>
    |              <DocumentVersion>" + DocumentVersion + "</DocumentVersion>
    |              <DocumentStandard>" + DocumentStandard + "</DocumentStandard>
    |              <DocumentTest>" + DocumentTest + "</DocumentTest>
    |              <ControlNumber>" + ControlNumber + "</ControlNumber>
    |              <DocumentContent>" + DocumentContent + "</DocumentContent>
    |              <Timeout>" + Timeout + "</Timeout>
    |        </Send>
    |  </soap12:Body>
    |</soap12:Envelope>";

    url = "https://www.ecod.pl/webserv2/EDIservice.asmx?WSDL";;
    x = CreateObject("Microsoft.XMLHTTP");
    
    x.Open("POST", url, 0);
    x.SetRequestHeader("Content-Type", "text/xml; charset=utf-8");  
    x.send(Парам);  

В DocumentContent содержится строка вида:
<Document-OrderResponse><OrderResponse-Header><OrderResponseNumber>ПСР0019831</OrderResponseNumber><OrderResponseDate>2016-02-24</OrderResponseDate>.....

После посылки приходит пустой ответ... Ничего не случается на платформе, при этом если воспользоваться сервисом EDIWebService и отправить туже скопированную строку DocumentContent то все прекрасно доходит до веб портала и документ появляется где надо. Непойму что не так. Может кто ткнет носом в ошибку?...
1 Serginio1
 
24.02.16
17:55
У каждой EDI обычно есть .Net клиент для вэб или HTTP сервиса. Их можно использовать через Использование классов .Net в 1С для новичков
2 totparen
 
24.02.16
20:34
(0) Не могли бы поделиться парой десяткой файлов заказов на XML от COMARCH ?
3 totparen
 
24.02.16
20:36
Или это тот же самый корус?
4 zippygrill
 
24.02.16
20:57
(3) он самый)
5 zippygrill
 
24.02.16
20:57
мучал его тоже сегодня своими запросами
6 zippygrill
 
24.02.16
20:59
взяли бы пример у ФСРАРа как xsd схемы своих файлов создавать..
7 maestro-72
 
25.02.16
08:50
(2) Вот тут я не понял вопроса (3) Да, это действительно корус. А по существу вопроса чтото есть?
8 maestro-72
 
25.02.16
10:32
Если процедуре в качестве документа передавать пустое значение, то процедура отрабатывает правильно. Из этого можно сделать вывод, что передавать надо определенным образом закодированный XML. Т.е. как бы правильно выразится, чтобы запрос не принимал этот xml документ за свое тело. Как это сделать, есть у кого пример?
9 maestro-72
 
25.02.16
10:38
Вот тут ктото чтото похожее спрашивал, как сделал непонятно http://www.cyberforum.ru/xml-xsl/thread1439622.html
10 Serginio1
 
25.02.16
10:58
Берешь в руки фиддлер и сравниваешь
11 Serginio1
 
25.02.16
11:01
Кстати а подписывать документ разве не нужно?
12 maestro-72
 
25.02.16
11:46
(10) вот не совсем понял о чем речь
13 Serginio1
 
25.02.16
12:40
14 Serginio1
 
25.02.16
12:49
Смотри вкладку inspectors и вкладки RAW итд
15 maestro-72
 
25.02.16
14:33
я тут подумал, наверное я неправильно сохраняю строку XML. Я делаю ПредставлениеXML. А надо как-то по другому. Скорее всего его надо сохранить в строку с кодировкой типа XMLencode, но как это сделать в 1с я не знаю...
16 maestro-72
 
25.02.16
14:34
(11) Подписывается счетфактура. Это можно сделать на портале. Или заморочится в 1с, но сначала надо документ на портал выгрузить...
17 Serginio1
 
25.02.16
14:37
(16) Фиддлер использовал? Сравнивал запросы?
18 Serginio1
 
25.02.16
14:38
Вообще у тебя вэб сервис. Используй 1. Наверняка есть примеры и библиотек.
19 Serginio1
 
25.02.16
14:39
Я сам для 7 ки использую. В том числе сериализацию десериализацию. Но с другим EDI
20 maestro-72
 
25.02.16
14:42
(18) Требуется время на изучение... Поверхностно пока просмотрел, мало что понял.
21 Serginio1
 
25.02.16
14:55
(20) Запросы сравнивал?
22 maestro-72
 
25.02.16
20:59
Короче документxml  надо кодировать (заменять знаки < и > на &iln; и т.д.) Тогда документ уходит без проблем. Кодировка достаточно простая, можно самому написать. Конечно хотелось бы иметь что-то встроенное, но я пока не нашел в 1с
23 Serginio1
 
26.02.16
10:26
Ну в .Net для этого есть HttpUtility.HtmlEncode

врап=новый COMОбъект("NetObjectToIDispatch45");
        HttpUtility=Врап.ПолучитьТипИзСборки("System.Web.HttpUtility","System.Web.dll");
        СтрОриг = "<Document-OrderResponse><OrderResponse-";
        Стр=HttpUtility.HtmlEncode(стрОриг);
        Сообщить(стр);
24 Serginio1
 
26.02.16
10:27
Можно попробовать отправить через HTTPClient

    uriSources ="https://www.ecod.pl/webserv2/EDIservice.asmx?WSDL";;
    HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll");
    Клиент=Врап.СоздатьОбъект(HttpClient);

    Encoding=Врап.ПолучитьТип("System.Text.Encoding");
    Контент=Врап.СоздатьОбъект("System.Net.Http.StringContent",СтрОриг, Encoding.UTF8, "application/xml");
    резулт=Клиент.PostAsync(uriSources, Контент).Result;

    Сообщить(резулт.IsSuccessStatusCode);
    Сообщить(Врап.Встроку(резулт.StatusCode));
    Сообщить(резулт.Content.ReadAsStringAsync().Result);
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой