Статьей 22 Налогового кодекса Республики Беларусь для субъектов хозяйствования предусмотрена обязанность осуществлять проверку первичных учетных документов на предмет их соответствия требованиям законодательства, а в случае их оформления от имени белорусской организации или белорусского индивидуального предпринимателя проверять — кому принадлежит бланк и действителен ли он.
Обязанность проверять бланки строгой отчетности была описана ранее в Указе Президента РБ от 23.10.2012 № 488 "О некоторых мерах по предупреждению незаконной минимизации сумм налоговых обязательств": Субъекты хозяйствования обязаны проверять накладные на предмет их принадлежности отправителю товара и действительности бланка (в случае их оформления резидентом РБ). Теперь эта обязанность закреплена в налоговом кодексе Статья 22.
Эта обработка предназначена для связи с вебсервисом "Автоматизированная система ведения электронного банка данных бланков документов и документов с определенной степенью защиты и печатной продукции (АС БДБ)." — любят у нас очень важно называть простые вещи.
Обработка осуществляет вызов методов вебсервиса по протоколу HTTP и разбор ответа в ОбъектXDTO для последующей обработки в коде 1с.
Обработка является полуфабрикатом и полученные данные разбора можно увидеть в отладчике (см. скриншоты).
Так же обработка подразумевает то, что вы будете её логику встраивать в свои обработки и конфигурации, поэтому она содержит минимум проверок входящих и полученных данных. Для продакшн версии их, по-хорошему, должно быть заметно больше.
Так же обращаю внимание, что, в теории, приобретателем бланка может быть одна организация, а поставлять вам товар может другая. И это не всегда означает "криминал" — кроме списка реализаций следует проверять список признаний БСО недействительным, а так же список передач.
Техническое описание сервиса АС БДБ прилагается к публикации, оно у них почему-то чрезвычайно секретное и предоставляется по запросу, и ссылка одноразовая, действительная сутки. Хотя, по сути, это всего лишь техническое описание сервиса, который создан для обеспечения соблюдения законодательства. Сам документ не содержит грифов ограничивающих его распространение и является необходимым для понимания, как трактовать полученный результат. Поэтому файл doc находится в архиве с обработкой.
В обработке реализовано три метода вебсервиса:
- Метод FindBlankWS
Предназначен для поиска информации о бланках первичных учетных документов и контрольных идентификационных знаках в подсистеме «Информационный портал АС БДБ» по коду типа БСО, серии БСО (регистр существенен) и номеру БСО (ведущие нули номера являются значащими). - Метод FindBlankWSnTB
Предназначен для поиска информации о бланках первичных учетных документов в подсистеме «Информационный портал АС БДБ» по серии бланка (регистр существенен) и номеру бланка (ведущие нули номера являются значащими). - Метод GetTBListWS
Предназначен для выдачи перечня типов БСО, имеющихся в подсистеме «Информационный портал АС БДБ».
Известные баги вебсервиса:
- При отправке некорректного запроса вебсервис отдает код состояния 200 и ответ
<error>Некорректный запрос</error>
не описанный в схеме XSD. И, по-хорошему, перед разбором следует проверить, что ответ не такой.
- Метод FindBlankWSnTB, если бланк не найден отдает неправильный объект ответа, отличный от документации. Должен отдавать WSAnswerList с набором записей WSAnswer.
Ожидание:<WSAnswerList> <IsFound>0</IsFound> <Blanks> <WSAnswer> <IsFound>0</IsFound> <Rel /> <Pas /> <Sp /> </WSAnswer> </Blanks> <BlanksTB/> </WSAnswerList>
Реальность:
<WSAnswer> <IsFound>0</IsFound> </WSAnswer>
- Ответы не содержат в себе определения пространства имен для корректного разбора по XSD схеме. Приходится "прикостыливать":
ОтветСервера = СтрЗаменить(ОтветСервера,"<WSAnswer>","<WSAnswer xmlns=""http://www.bisc.by/webservices"">");
- Из-за совокупности багов описанных в 2 и 3 разбор ответа в случае отсутствия бланков вылетает с ошибкой, следует добавить дополнительную проверку перед разбором, что же там у нас в первой строке. Не исправлял, потому что это так же влияет на логику дальнейшей эксплуатации. И нужно будет проверять.
В остальном, она сэкономит ваши время и силы при интеграции.
Проверялось на релизе платформы 8.3.13, но, по идее, будет работать начиная с 8.3.3.