Проверка бланков строгой отчетности BISC.BY




Обработка предназначена для работы с вебсервисом электронного банка данных бланков документов и документов с определенной степенью защиты и печатной продукции (АС БДБ).

Статьей 22 Налогового кодекса Республики Беларусь для субъектов хозяйствования предусмотрена обязанность осуществлять проверку первичных учетных документов на предмет их соответствия требованиям законодательства, а в случае их оформления от имени белорусской организации или белорусского индивидуального предпринимателя проверять — кому принадлежит бланк и действителен ли он.

Обязанность проверять бланки строгой отчетности была описана ранее в Указе Президента РБ от 23.10.2012 № 488 "О некоторых мерах по предупреждению незаконной минимизации сумм налоговых обязательств": Субъекты хозяйствования обязаны проверять накладные на предмет их принадлежности отправителю товара и действительности бланка (в случае их оформления резидентом РБ). Теперь эта обязанность закреплена в налоговом кодексе Статья 22.

Эта обработка предназначена для связи с вебсервисом "Автоматизированная система ведения электронного банка данных бланков документов и документов с определенной степенью защиты и печатной продукции (АС БДБ)." — любят у нас очень важно называть простые вещи.

Обработка осуществляет вызов методов вебсервиса по протоколу HTTP и разбор ответа в ОбъектXDTO для последующей обработки в коде 1с.

Обработка является полуфабрикатом и полученные данные разбора можно увидеть в отладчике (см. скриншоты).

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

Так же обращаю внимание, что, в теории, приобретателем бланка может быть одна организация, а поставлять вам товар может другая. И это не всегда означает "криминал" — кроме списка реализаций следует проверять список признаний БСО недействительным, а так же список передач.

Техническое описание сервиса АС БДБ прилагается к публикации, оно у них почему-то чрезвычайно секретное и предоставляется по запросу, и ссылка одноразовая, действительная сутки. Хотя, по сути, это всего лишь техническое описание сервиса, который создан для обеспечения соблюдения законодательства. Сам документ не содержит грифов ограничивающих его распространение и является необходимым для понимания, как трактовать полученный результат. Поэтому файл doc находится в архиве с обработкой.

В обработке реализовано три метода вебсервиса:

  1. Метод FindBlankWS
    Предназначен для поиска информации о бланках первичных учетных документов и контрольных идентификационных знаках в подсистеме «Информационный портал АС БДБ» по коду типа БСО, серии БСО (регистр существенен) и номеру БСО (ведущие нули номера являются значащими).
  2. Метод FindBlankWSnTB
    Предназначен для поиска информации о бланках первичных учетных документов в подсистеме «Информационный портал АС БДБ» по серии бланка (регистр существенен) и номеру бланка (ведущие нули номера являются значащими).
  3. Метод GetTBListWS
    Предназначен для выдачи перечня типов БСО, имеющихся в подсистеме «Информационный портал АС БДБ».

Известные баги вебсервиса:

  1. При отправке некорректного запроса вебсервис отдает код состояния 200 и ответ
    <error>Некорректный запрос</error>

    не описанный в схеме XSD. И, по-хорошему, перед разбором следует проверить, что ответ не такой.

  2. Метод FindBlankWSnTB, если бланк не найден отдает неправильный объект ответа, отличный от документации. Должен отдавать WSAnswerList с набором записей WSAnswer.
    Ожидание:

    <WSAnswerList>
    <IsFound>0</IsFound>
    <Blanks>
    <WSAnswer>
    <IsFound>0</IsFound>
    <Rel />
    <Pas />
    <Sp />
    </WSAnswer>
    </Blanks>
    <BlanksTB/>
    </WSAnswerList>
    
    

    Реальность:

    <WSAnswer>
    <IsFound>0</IsFound>
    </WSAnswer>
  3. Ответы не содержат в себе определения пространства имен для корректного разбора по XSD схеме. Приходится "прикостыливать":
    ОтветСервера = СтрЗаменить(ОтветСервера,"<WSAnswer>","<WSAnswer xmlns=""http://www.bisc.by/webservices"">");
  4. Из-за совокупности багов описанных в 2 и 3 разбор ответа в случае отсутствия бланков вылетает с ошибкой, следует добавить дополнительную проверку перед разбором, что же там у нас в первой строке. Не исправлял, потому что это так же влияет на логику дальнейшей эксплуатации. И нужно будет проверять.

В остальном, она сэкономит ваши время и силы при интеграции.

Проверялось на релизе платформы 8.3.13, но, по идее, будет работать начиная с 8.3.3.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *