1C-Company / DirectBank

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

SendPack, GetPack и выписка #53

Closed TrunovS closed 1 year ago

TrunovS commented 4 years ago
  1. Делаем запрос выписки с SendPack и получаем некий ID.
<Success>
        <SendPacketResponse>
        <ID>02d6e5c9-6728-4dae-a414-12292bae793b</ID>
        </SendPacketResponse
    </Success>

Однако, запрашивать по этому ID с GetPack насколько мы поняли неправильно: Всегда при таком запросе возвращается

   <Error>
    <Code>1010</Code>
    <Description>Не удалось получить подготовленный пакет</Description>
  </Error>

В документации по SendPacketResponse однако сказано https://github.com/1C-Company/DirectBank/blob/master/doc/common-section/type-tables.md#edo-SendPacketResponseType ID - идентификатор транспортного контейнера (GUID), который был ему назначен на стороне банка

  1. Делаем GetPackList, и в списке сначала появляется новый uuid, не совпадающий с ID выданным SendPack. GetPack по этому uuid возвращает статус «Принят».
  2. Спустя время появляется еще один uuid, также не совпадающий с ID выданным SendPack GetPack по новому uuid возвращает выписку.

Подскажите:

  1. Для чего нужен ID выдаваемый методом SendPack?
  2. Как связать ID SendPack cо статусом и сформированной выпиской?
SevDmitry commented 4 years ago

Для чего нужен ID выдаваемый методом SendPack?

Из банка может прийти извещение о состоянии пакета, в котором будет этот идентификатор

Как связать ID SendPack cо статусом и сформированной выпиской?

Никак, в выписке есть идентификатор запроса, который лежит внутри этого пакета.

TrunovS commented 4 years ago

т.е. в сформированной выписке есть какой-то идентификатор запроса, который есть и в извещении о статусе? или этот идентификатор есть в запросе на формирование выписки при формировании пакета SendPack? Подскажите название этого идентификатора пожалуйста?

Правильно ли я понимаю, что ID от SendPack не есть ID который должен вернуться в GetPackList ? Если это так, то в документации желательно написать об этом?

SevDmitry commented 4 years ago

В запросе выписки это StatementRequest.id В выписке это Statement.ExtIDStatementRequest

Правильно ли я понимаю, что ID от SendPack не есть ID который должен вернуться в GetPackList ?

Правильно

sergeyshapov commented 4 years ago

При получении контейнеров готовых на выдачу 1С шлёт текущую дату и время компьютера пользователя. Хотя в документации сказано что

Если в запросе из «1С:Предприятия 8» о готовых к передаче транспортных контейнерах указать «Отметку времени» (указывается значение даты и времени сервера Банка с точностью до секунды), то именно с этого момента времени будет формироваться список уникальных идентификаторов (в формате GUID), подготовленных к передаче в хронологическом порядке.

При обмене данными с 1С сервис шлёт свою дату/время- эта дата и время по гринвичу. Таким образом при получении списка готовых контенеров из 1С передаётся дата/время без учёта временной зоны а точнее со смещением +6 и соответственно готовых контейнеров нет, так как они готовы на время -6.

SevDmitry commented 4 years ago

При запросе дата берется из ответа банка на запрос GetPackList. Это дата не должна содержать информации о часовом поясе. Требование здесь

sergeyshapov commented 4 years ago

Да я в курсе про требования по дате но проблема в другом- если сервис возвращает дату например 20.04.2020 06-15-49 то с 1с дата прилетает 20.04.2020 12-15-55 таким образом 1с игнорит дату сервера.

SevDmitry commented 4 years ago

Значит сервис возвращает дату с часовым поясом, а должен возвращать без него

sergeyshapov commented 4 years ago

Спасибо разобрался. Дата от сервера возвращалась с миллисекундами, не доглядел.