С помощью обработки можно получить сведения о приобретении субъектами хозяйствования Республики Беларусь и признании недействительности бланков документов с определенной степенью защиты, печатной продукции, контрольных (идентификационных) знаков.
//Переменная хранит определение web-сервиса
Перем WSСсылка;
// Процедура - Выполнинить запрос
//
// Параметры:
// method - -
//
Процедура ВыполнинитьЗапрос(method)
Отказ = Ложь;
Если method = 1 Тогда
ИмяМетода = "FindBlankWS";
ИначеЕсли method = 2 Тогда
ИмяМетода = "FindBlankWSnTB";
ИначеЕсли method = 3 Тогда
ИмяМетода = "GetTBListWS";
КонецЕсли;
Если method = 1 Тогда
Если НЕ ЗначениеЗаполнено(КодБланка)
ИЛИ НЕ ЗначениеЗаполнено(СерияБланка)
ИЛИ НЕ ЗначениеЗаполнено(НомерБланка) Тогда
Предупреждение("Параметры заданы не верно!", 30, "Ошибка");
Отказ = Истина;
КонецЕсли;
ИначеЕсли method = 2 Тогда
Если НЕ ЗначениеЗаполнено(СерияБланка)
ИЛИ НЕ ЗначениеЗаполнено(НомерБланка) Тогда
Предупреждение("Параметры заданы не верно!", 30, "Ошибка");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
pTB = СокрЛП(КодБланка);
pSB = СокрЛП(ВРег(СерияБланка));
pNB = СокрЛП(НомерБланка);
Если НЕ Отказ Тогда
Если method = 1 Тогда
Ответ = ПолучитьОтветСервиса(ИмяМетода, pTB, pSB, pNB)
ИначеЕсли method = 2 Тогда
Ответ = ПолучитьОтветСервиса(ИмяМетода, , pSB, pNB)
ИначеЕсли method = 3 Тогда
Ответ = ПолучитьОтветСервиса(ИмяМетода,,,)
КонецЕсли;
Сообщить(Ответ, СтатусСообщения.Информация)
КонецЕсли;
КонецПроцедуры
// Функция - Получить ответ сервиса
//
// Параметры:
// – pTB – код БСО. Ожидается целочисленное шестизначное значение;
// – pSB – серия БСО. Ожидается буквенно-числовое значение, соответствующее формату серии указанного БСО. Символы серии должны передаваться посредством кодировки Unicode;
// – pNB – номер БСО. Ожидается целочисленное значение длиной до 9 знаков, соответствующее формату номера указанного БСО.
//Обязательность присутствия параметров pTB, pSB, pNB зависит от метода, указанного в первом параметре:
// – для метода FindBlankWS обязательны все три параметра;
// – для метода FindBlankWSnTB обязательны pSB и pNB;
// – для метода GetTBListWS параметры не требуются.
//
// Возвращаемое значение:
// - Строка
//
Функция ПолучитьОтветСервиса(ИмяМетода, pTB = Неопределено, pSB = Неопределено, pNB = Неопределено)
Хост = WSСсылка;
ст_pTB = ?(pTB = Неопределено, "", "&pTB=" + pTB);
ст_pSB = ?(pSB = Неопределено, "", "&pSB=" + pSB);
ст_pNB = ?(pNB = Неопределено, "", "&pNB=" + pNB);
Ресурс = "/FindBlankWSHttp.aspx?method=" + ИмяМетода + ст_pTB + ст_pSB + ст_pNB;
Ответ = ОтправитьHTTPЗапрос(Хост, Ресурс);
Если Ответ <> Неопределено Тогда
СведенияXML = Неопределено;
Попытка
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
СведенияXML = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Исключение
Возврат ОписаниеОшибки()
КонецПопытки;
ПредставлениеОтвета = "Сведения по БСО: ";
Если ТипЗнч(СведенияXML) = Тип("ОбъектXDTO") Тогда
ПредставлениеОтвета = "Сведения по БСО:" + Символы.ПС;
Если pTB <> Неопределено Тогда
ПредставлениеОтвета = ПредставлениеОтвета + "Код бланка: " + pTB + ", "
КонецЕсли;
Если pSB <> Неопределено Тогда
ПредставлениеОтвета = ПредставлениеОтвета + "Серия бланка: " + pSB + ", "
КонецЕсли;
Если pNB <> Неопределено Тогда
ПредставлениеОтвета = ПредставлениеОтвета + "Номер бланка: " + pNB + ", "
КонецЕсли;
ТаблицаОтвета = Новый ТаблицаЗначений;
ТаблицаОтвета.Колонки.Добавить("УНП", ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(9));
ТаблицаОтвета.Колонки.Добавить("Наименование", ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(200));
Если СведенияXML.IsFound = "1" Тогда
СвойстваXML = СведенияXML.Свойства();
Если СвойстваXML.Получить("Rel") <> Неопределено Тогда
НоваяСтрока = ТаблицаОтвета.Добавить();
НоваяСтрока.УНП = СведенияXML.Rel.WSRel.UNP;
НоваяСтрока.Наименование = СведенияXML.Rel.WSRel.Name;
ИначеЕсли СвойстваXML.Получить("Blanks") <> Неопределено Тогда
Попытка
Для Каждого Строка из СведенияXML.Blanks.WSAnswer Цикл
НоваяСтрока = ТаблицаОтвета.Добавить();
НоваяСтрока.УНП = Строка.Rel.WSRel.UNP;
НоваяСтрока.Наименование = Строка.Rel.WSRel.Name;
КонецЦикла;
Исключение
НоваяСтрока = ТаблицаОтвета.Добавить();
НоваяСтрока.УНП = СведенияXML.Blanks.WSAnswer.Rel.WSRel.UNP;
НоваяСтрока.Наименование = СведенияXML.Blanks.WSAnswer.Rel.WSRel.Name;
КонецПопытки
КонецЕсли;
Для Каждого СтрокаТаблицы из ТаблицаОтвета Цикл
ПредставлениеОтвета = ПредставлениеОтвета + Символы.ПС + "- Бланк в наличии у: ";
ПредставлениеОтвета = ПредставлениеОтвета + Символы.ПС
+ " "
+ СтрокаТаблицы.Наименование
+ Символы.ПС
+ ПроверкаПоУНП(СтрокаТаблицы.УНП);
КонецЦикла;
Иначе
ПредставлениеОтвета = ПредставлениеОтвета + "Данные не обнаружены!"
КонецЕсли;
Иначе
ПредставлениеОтвета = ПредставлениеОтвета + "Ошибка получения данных!"
КонецЕсли;
КонецЕсли;
Возврат ПредставлениеОтвета
КонецФункции
Функция ПроверкаПоУНП(УНП)
ПредставлениеОтвета = "";
Хост = "www.portal.nalog.gov.by";
Ресурс = "grp/getData?unp="+СокрЛП(УНП);
Ответ = ОтправитьHTTPЗапрос(Хост, Ресурс);
Если Ответ <> Неопределено Тогда
СведенияXML = Неопределено;
Попытка
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
СведенияXML = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Исключение
Возврат ПредставлениеОтвета;
КонецПопытки;
Попытка
НаименованиеПолноеПортал = СокрЛП(СведенияXML.ROW.VNAIMP);
НаименованиеПортал = СокрЛП(СведенияXML.ROW.VNAIMK);
ЮрАдресПортал = СокрЛП(СведенияXML.ROW.VPADRES);
Исключение
Попытка
НаименованиеПолноеПортал = СокрЛП(СведенияXML.ROW[0].VNAIMP);
НаименованиеПортал = СокрЛП(СведенияXML.ROW[0].VNAIMK);
ЮрАдресПортал = СокрЛП(СведенияXML.ROW[0].VPADRES);
Исключение
Сообщить(СведенияXML.body.h1, СтатусСообщения.ОченьВажное);
Возврат ПредставлениеОтвета;
Конецпопытки
Конецпопытки;
ПредставлениеОтвета = " >УНП: " + УНП + "
| >Наименование: " + НаименованиеПортал + "
| >Полное наименование: " + НаименованиеПолноеПортал + "
| >Юридический адрес: " + ЮрАдресПортал;
Конецесли;
Возврат ПредставлениеОтвета
КонецФункции
// Функция - Отправить HTTPЗапрос
//
// Параметры:
// Хост - -
// Ресурс - -
//
// Возвращаемое значение:
// -
//
Функция ОтправитьHTTPЗапрос(Хост, Ресурс) Экспорт
Соединение = Новый HTTPСоединение(Хост);
Заголовки = Новый Соответствие;
Заголовки.Вставить("host", Хост);
Запрос = Новый HTTPЗапрос(Ресурс, Заголовки);
Ответ = Неопределено;
Попытка
Ответ = Соединение.Получить(Запрос);
Исключение
Сообщить(ОписаниеОшибки(), Статуссообщения.ОченьВажное);
КонецПопытки;
Возврат Ответ;
КонецФункции
// Процедура - При открытии
//
Процедура ПриОткрытии()
Переключатель = 1;
КонецПроцедуры
// Процедура - Установить доступность
//
Процедура УстановитьДоступность()
Элементыформы.КодБланка.Доступность = (Переключатель = 1);
Элементыформы.НадписьКодБланка.Доступность = (Переключатель = 1)
КонецПроцедуры
// Процедура - Выполнить проверку нажатие
//
// Параметры:
// Элемент - -
//
Процедура ВыполнитьПроверкуНажатие(Элемент)
ВыполнинитьЗапрос(Переключатель)
КонецПроцедуры
Процедура СерияБланкаНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
//Стандартное WSDL-определение Web-сервиса
WSСсылка = "ws.blank.bisc.by";
В результате проверки получаем ответ:
Тестировалось на платформе 8.3.8.1861 конфигурация "Бухгалтерия производственного предприятия для Беларуси. Редакция 1.6."