Имя: Пароль:
1C
 
Web сервис не срабатывает на один определенный пакет из многих
0 bvb
 
23.03.20
14:43
У меня стоит Web сервис на прием входящих пакетов от ВМС системы.
Пакеты приходя на IIS, который их переправляет в 1С

В 1С в Web описана одна процедура, которая принимает все входящие пакеты преобразует их из base64 в XML и далее отправляет на обработку

Функция LoadDoc(Data)
СтрокаXML = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(Data),КодировкаТекста.ANSI);
РезультатРазборки =  ОбработатьFlasBack (СтрокаXML);
    

Сделали новый вид пакета и именно он не долетает до 1С.
ВМС видит что он обработан, в логах Веб сервера он виден тоже, а до 1С он не долетает.

Мистика какя то то

КАк быть ?

Где его ловить и как проследить куда он девается?
1 arsik
 
гуру
23.03.20
14:59
(0) "Сделали новый вид пакета" - это что значит?
2 palsergeich
 
23.03.20
15:39
(0) между в модуле веб сервиса и приемом пакета 1с - есть вшитое библиотечное преобразование XML в XDTO.
возьми этот пакет из логов и прочитай его руками в коде - скорее всего или нелегальные символы там есть или покет не соответствует формату
3 bvb
 
23.03.20
15:52
(1)
вот корректно прилетает и корректно обрабатывается
<?xml version="1.0" encoding="windows-1251"?>
<DOC>
  <DOC_OUT>
    <NUMBER>SHIP-7626481</NUMBER>

Вот не прилетает вообще
<?xml version="1.0" encoding="windows-1251"?>
<cwms:STOCK xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle_v3"; xmlns:ce="http://fsrar.ru/WEGAIS/CommonV3"; xmlns:cwms="cwms3000.ru">
< FD >23.03.2020 09:15:00</ FD >
< CONTRAGENT_N >7</ CONTRAGENT_N >
<REC>….


(2) Где этот лог брать. У меня точка входа в процедуру веб сервиса - текст в base 64
Вот в первом случае он не долетает а в втором нет.
4 arsik
 
гуру
23.03.20
16:03
(3) В журнале регистраций 1С смотреллли?
5 palsergeich
 
23.03.20
17:09
(3) "Вот не прилетает вообще

<?xml version="1.0" encoding="windows-1251"?>

<cwms:STOCK xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle_v3";; xmlns:ce="http://fsrar.ru/WEGAIS/CommonV3";; xmlns:cwms="cwms3000.ru">

< FD >23.03.2020 09:15:00</ FD >

< CONTRAGENT_N >7</ CONTRAGENT_N >"
Вот он же у тебя есть.
Просто возьми и в коде его прочитай XDTO
Смущает <cwms:STOCK xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle_v3";; xmlns:ce="http://fsrar.ru/WEGAIS/CommonV3";; xmlns:cwms="cwms3000.ru">
6 bvb
 
23.03.20
19:21
(5)понял
Если я его гружу процедурой обработки минуя веб сервис XDTO разбирает его нормально
7 Сияющий в темноте
 
23.03.20
23:43
используйте лучше http-сервис
он все,что пришло,в функцию обработки отсылает.
8 bvb
 
25.03.20
11:02
Судя по сообщению об ошибке в передающей системе пакет гибнет гдето в недрах IIS
https://yadi.sk/i/SL2hKXjiA7MMfQ
или я не прав ?
9 arsik
 
гуру
25.03.20
11:29
(8) Мне кажется не знает iis ничего про структуру данных, разборкой 1С занимается.
10 palsergeich
 
25.03.20
11:34
(8) Что я и говорил - что то не то со схемой или есть нелегальный символ.
ИИС тут не причем - он получает на вход и отдает в dll 1с, это уже ответ 1с ДО инициации модуля веб сервиса.
Для чистоты эксперимента - нужно сообщение сохранить в файл, не скоприовать из лога, и именно сдампить в файл и прочитать его XDTO руками в 1с.
Хотя возможен еще вариант - что что то не так в фунции соап - например миссклик по параметру и выбран не тот тип, который приходит в пакете.
Сравни еще входные параметры в файле и в пакете XDTO - там может быть ошибка
11 bvb
 
25.03.20
11:59
(10)
1. Схемы нет и не ипользую
2. Ни до каких пакетов XDTO дело не доходит
3. Все остальные пакеты, построенные по той же схеме валятся нормально
4. ВМСники отправляют искомый XML обернуты в base64 обернутый,  а base64  в свою очередь обернут в XML

При отправке из ВМС это выглядит так :

<?xml version="1.0" encoding="windows-1251"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"; xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/"; xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsd1="Polini.com" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:tns="Polini.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
  <SOAP-ENV:Body>
    <tns:LoadDoc>
      <tns:XML>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUxIj8+CjxT
VE9DSyB4bWxuczp3Yj0iaHR0cDovL2ZzcmFyLnJ1L1dFR0FJUy9UVE5TaW5nbGVf
djMiIHhtbG5zOmNlPSJodHRwOi8vZnNyYXIucnUvV0VHQUlTL0NvbW1vblYzIiB4
bWxuczpjd21zPSJjd21zMzAwMC5ydSI+CiAgPEZEPjI0LjAzLjIwMjAgMTI6NTI6
NDM8L0ZEPgogIDxDT05UUkFHRU5UX04+NjwvQ09OVFJBR0VOVF9OPgogIDxSRUM+


Я получаю  строку base64 в модуль веб сервиса :
VE9DSyB4bWxuczp3Yj0iaHR0cDovL2ZzcmFyLnJ1L1dFR0FJUy9UVE5TaW5nbGVf
djMiIHhtbG5zOmNlPSJodHRwOi8vZnNyYXIucnUvV0VHQUlTL0NvbW1vblYzIiB4
bWxuczpjd21zPSJjd21zMzAwMC5ydSI+CiAgPEZEPjI0LjAzLjIwMjAgMTI6NTI6
NDM8L0ZEPgogIDxDT05UUkFHRU5UX04+NjwvQ09OVFJBR0VOVF9OPgogIDxSRUM+


Но он должен прилетать ПОЛЮБОМУ.
А он не прилетает...