1C-Company / DirectBank

DirectBank (прямой обмен с банком) – новая технология системы "1С:Предприятие 8"
51 stars 22 forks source link

Алгоритм получения выписки, есть вопросы. #83

Open IgorA100 opened 3 years ago

IgorA100 commented 3 years ago

Отправляем запрос на получение выписки (с ID=0C9A09B2-8B4F-47C9-855C-3D2E39338187) и в ответ получаем:

<?xml version="1.0" encoding="UTF-8"?>
<ResultBank xmlns="http://directbank.1c.ru/XMLSchema" formatVersion="2.1.1">
   <Success>
      <SendPacketResponse>
         <ID>7606707</ID>
      </SendPacketResponse>
   </Success>
</ResultBank>

Запрашиваем список GUID и получаем:

<?xml version="1.0" encoding="UTF-8"?>
<ResultBank xmlns="http://directbank.1c.ru/XMLSchema" formatVersion="2.1.1">
   <Success>
      <GetPacketListResponse TimeStampLastPacket="2021-03-10T16:52:54">
         .....       
         <PacketID>0e8f11f2-cb80-4ad8-8d46-1fd0ec70da9e</PacketID>
         <PacketID>16a8b1b0-14e5-4249-a98b-e3ea4330ab65</PacketID>
         <PacketID>5ce9493e-b5c4-43f3-9a53-842081125215</PacketID>
      </GetPacketListResponse>
   </Success>
</ResultBank>

Делаем запросы документов по GUID, с последенего 5ce9493e-b5c4-43f3-9a53-842081125215 Здесь мы получили ответ, что статус документа 01=ПРИНЯТ, далее видим IDResultSuccessResponse = ID 7606707 полученному при отправке запроса выписки. Все понятно.

<?xml version="1.0" encoding="UTF-8"?>
<StatusPacketNotice xmlns="http://directbank.1c.ru/XMLSchema" id="3a65ceba-f039-4033-aeb5-430e7185ff8c" formatVersion="2.1.1" creationDate="2021-03-10T16:52:09">
   <Sender>
      <Bank bic="044525201"/>
   </Sender>
   <Recipient>
      <Customer id="ХХХХХХХХХХ"/>
   </Recipient>
   <IDResultSuccessResponse>7606707</IDResultSuccessResponse>
   <Result>
      <Status>
         <Code>01</Code>
      </Status>
   </Result>
   <ExtIDPacket>CDA752AC-89A3-408A-BA3D-FF0B3578AABD</ExtIDPacket>
</StatusPacketNotice>

Далее предпоследний 16a8b1b0-14e5-4249-a98b-e3ea4330ab65 Здесь мы видим изменение статуса 02=ИСПОЛНЕН, но КАК связать этот ответ с запросом выписки или с предыдущим ответом статуса документа 01=ПРИНЯТ ??? Не прослеживается никакой взаимосвязи....

<?xml version="1.0" encoding="UTF-8"?>
<StatusDocNotice xmlns="http://directbank.1c.ru/XMLSchema" id="b8a3fad7-1b3a-48b1-af0a-b5b58b116e70" formatVersion="2.1.1" creationDate="2021-03-10T16:52:09">
   <Sender>
      <Bank bic="044525201"/>
   </Sender>
   <Recipient>
      <Customer id="ХХХХХХХХХХ"/>
   </Recipient>
   <ExtID>71CA2CEC-23D1-437E-A948-FCAC415134A3</ExtID>
   <Result>
      <Status>
         <Code>02</Code>
      </Status>
   </Result>
</StatusDocNotice>

И далее смотрим 0e8f11f2-cb80-4ad8-8d46-1fd0ec70da9e ExtIDStatementRequest = ID документа запроса выписки 0C9A09B2-8B4F-47C9-855C-3D2E39338187. Тут тоже вроде понятно.

<?xml version="1.0" encoding="UTF-8"?>
<Statement xmlns="http://directbank.1c.ru/XMLSchema" id="7c001fa6-73b6-4e39-b327-fab96de9b404" formatVersion="2.1.1" creationDate="2021-03-10T16:52:09">
   <Sender bic="044525201"/>
   <Recipient id="2437544284"/>
   <Data>
      <StatementType>0</StatementType>
      <DateFrom>2021-03-09T00:00:00</DateFrom>
      <DateTo>2021-03-10T16:52:08</DateTo>
      <Account>ХХХХХХ</Account>
      <Bank>
         <BIC>044525201</BIC>
         <Name>ПАО АКБ &quot;АВАНГАРД&quot;</Name>
         <City>г. МОСКВА</City>
         <CorrespAcc>30101810000000000201</CorrespAcc>
      </Bank>
      <OpeningBalance>ХХХХХХ.ХХ</OpeningBalance>
      <TotalDebits>0</TotalDebits>
      <TotalCredits>0</TotalCredits>
      <ClosingBalance>ХХХХХХ.ХХ</ClosingBalance>
   </Data>
   <ExtIDStatementRequest>0C9A09B2-8B4F-47C9-855C-3D2E39338187</ExtIDStatementRequest>
</Statement>

И если я хочу выполнить "Запрос состояния электронного документа", для ранее произведенного запроса выписки, то какой необходимо указывать? Какие бы номера не вводил, получаю такой ответ:

<?xml version="1.0" encoding="UTF-8"?>
<StatusDocNotice xmlns="http://directbank.1c.ru/XMLSchema" id="504b43fb-85ef-4c4b-aa26-3c6d71f6ba02" formatVersion="2.1.1" creationDate="2021-03-10T17:45:45">
   <Sender>
      <Bank bic="044525201"/>
   </Sender>
   <Recipient>
      <Customer id="ХХХХХХХХХХ"/>
   </Recipient>
   <ExtID>7c001fa6-73b6-4e39-b327-fab96de9b404</ExtID>
   <Result>
      <Error>
         <Code>2207</Code>
         <Description>Отсутствует электронный документ с запрашиваемым ИД</Description>
         <MoreInfo>Не удалось определить состояние электронного документа, т.к. документ с таким идентификатором не найден</MoreInfo>
      </Error>
   </Result>
   <ExtIDStatusRequest>EC894013-2F06-4BC5-8DDA-BCC7868C02F4</ExtIDStatusRequest>
</StatusDocNotice>

Можно ли СИНХРОННО получить состояние документа или только в асинхронном виде?

SevDmitry commented 3 years ago

Далее предпоследний 16a8b1b0-14e5-4249-a98b-e3ea4330ab65 Здесь мы видим изменение статуса 02=ИСПОЛНЕН, но КАК связать этот ответ с запросом выписки или с предыдущим ответом статуса документа 01=ПРИНЯТ ??? Не прослеживается никакой взаимосвязи....

Здесь должен быть идентификатор запроса. Похоже на ошибку на стороне банка.

И если я хочу выполнить "Запрос состояния электронного документа", для ранее произведенного запроса выписки, то какой необходимо указывать?

В типовых конфигурациям запрашиваются только состояния платежных документов. Думаю поэтому со стороны банка также нет возможность получения состояния запроса выписки.

Можно ли СИНХРОННО получить состояние документа или только в асинхронном виде?

Нет, только асинхронно.