"Картотека арбитражных дел". Запрос к картотеке из 1С (обычные формы)

Пример работы с сервисом "Картотека арбитражных дел" для проверки новых Контрагентов. Реализовано в виде внешней обработки.

Задача — облегчить руководству проверку «на благонадежность» новых Контрагентов.

Выбор сервиса:

1) возможность бесплатной работы (что, согласитесь, немаловажно)

2) оперативное поступление новой информации об арбитражных делах

3) быстрый ответ сервиса

ПРЕДУПРЕЖДЕНИЕ: На сайте сервиса размещена защита от роботов, поэтому количество запросов к базе данных ОГРАНИЧЕНО!!!

При превышении количества обращений блокируется IP-адрес, далее только письмо к Администратору сервиса.

Поэтому будет рассмотрен пример одиночного запроса. Сайт иногда может быть перегружен запросами, поэтому таймаут выставлен побольше.

Процедура КнопкаВыполнитьНажатие(Кнопка)

Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
ОбщегоНазначения.СообщитьОбОшибке("Не выбран Контрагент!!!");
Возврат;
КонецЕсли;

Если НЕ ЗначениеЗаполнено(Контрагент.ИНН) Тогда
ОбщегоНазначения.СообщитьОбОшибке("У Контрагента не заполнен ИНН !!!");
Возврат;
КонецЕсли;

Если НачПериода <> '00010101' Тогда
НачПериодаСтрокой = """" + ДатаВремяВФорматXMLИз1СМТ(НачПериода) + """";
Иначе
НачПериодаСтрокой = "null";
КонецЕсли;

Если КонПериода <> '00010101' Тогда
КонПериодаСтрокой = """" + ДатаВремяВФорматXMLИз1СМТ(КонПериода) + """";
Иначе
КонПериодаСтрокой = "null";
КонецЕсли;

ПостЗапрос = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");

MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
MSScriptControl.Language = "javascript";
Стрим = Новый COMОбъект("ADODB.Stream");
MSScriptControl.AddObject("Стрим", Стрим);
MSScriptControl.AddObject("Соединение", ПостЗапрос);

Стрим.Mode = 3;
Стрим.Type = 1;

ПостЗапрос.SetTimeouts(50000, 50000, 50000, 50000);
ПостЗапрос.Open("POST", "http://kad.arbitr.ru/Kad/SearchInstances", 0);

ПостЗапрос.SetRequestHeader("Accept", "*/*");
ПостЗапрос.SetRequestHeader("Content-Type", "application/json");

СтрокаЗапроса = "{""Page"":1,""Count"":25,""Courts"":[],""DateFrom"":" + НачПериодаСтрокой + ",""DateTo"":" + КонПериодаСтрокой + ",""Sides"":[{""Name"":" + СокрЛП(Контрагент.ИНН) +
",""Type"":-1,""ExactMatch"":false}],""Judges"":[],""CaseNumbers"":[],""WithVKSInstances"":false}";

ResponseText = "";
Попытка
ПостЗапрос.Send(СтрокаЗапроса);
ПостЗапрос.WaitForResponse();
исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

Стрим.Open();
Попытка
MSScriptControl.Eval("Стрим.Write(Соединение.responseBody)");
Исключение
Отказ = Истина;
Возврат;
КонецПопытки;

ИмяФайлаПолучения = ПолучитьИмяВременногоФайла();
Стрим.SaveToFile(ИмяФайлаПолучения, 2);
Стрим.Close();

Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайлаПолучения, КодировкаТекста.UTF8);

ResponseText = Текст.ПолучитьТекст();

ДокументDOM = ПреобразоватьТекстВДом(ResponseText);

ЭлементыDOM = ДокументDOM.ПолучитьЭлементыПоИмени("input");

Для Каждого ЭлементDOM Из ЭлементыDOM Цикл

Если ЭлементDOM.Идентификатор = "documentsTotalCount" И ЭлементDOM.Значение = "0" Тогда

ResponseText = "  Арбитражных дел нет";

КонецЕсли;

КонецЦикла;

EntranceText = СокрЛП(Контрагент) + " (ИНН: " + СокрЛП(Контрагент.ИНН) + ")<br>" + ResponseText;

ЭлементыФормы.ДокументHTML.УстановитьТекст(EntranceText);

// 2025-04-01T00:00:00 Вид даты "DateTo":"2025-04-26T23:59:59"

Если РазбиратьТекст Тогда

ЭлементыDOM    =  ДокументDOM.ПолучитьЭлементыПоИмени("div");

Для Каждого ЭлементDOM Из ЭлементыDOM Цикл

Если ЭлементDOM.ИмяКласса = "civil" Тогда
Сообщить("Дата дела = " + СокрЛП(ЭлементDOM.ТекстовоеСодержимое));
КонецЕсли;

Если ЭлементDOM.ИмяКласса = "judge" Тогда
Сообщить("Судья = " + СокрЛП(ЭлементDOM.ТекстовоеСодержимое));
КонецЕсли;

Если ЭлементDOM.ИмяКласса = "num_case" Тогда

Сообщить("Номер дела = " + СокрЛП(ЭлементDOM.ТекстовоеСодержимое));

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецПроцедуры
Функция ПреобразоватьТекстВДом(ТекстОтвета) Экспорт
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(ТекстОтвета);
ПостроительDOM = Новый ПостроительDOM;
Возврат ПостроительDOM.Прочитать(ЧтениеHTML);
КонецФункции
Функция ДатаВремяВФорматXMLИз1СМТ(лДатаВремя = Неопределено, Тип = "ДатаВремя") Экспорт

ДатаВремя = ?(лДатаВремя = Неопределено, ТекущаяДата(), лДатаВремя);

НужнаяДата = Формат(ДатаВремя, "ДФ=""гггг-ММ-дд""");

НужноеВремя = Формат(ДатаВремя, "ДФ=""ЧЧ:мм:сс""");

Если Тип = "Дата" Тогда
НужноеЗначение = НужнаяДата;
ИначеЕсли Тип = "Время" Тогда
НужноеЗначение = НужноеВремя;
Иначе
Если ПустаяСтрока(НужнаяДата) или  ПустаяСтрока(НужноеВремя) Тогда
Возврат "";
КонецЕсли;
НужноеЗначение = НужнаяДата + "T" + НужноеВремя;
КонецЕсли;

Возврат НужноеЗначение;

КонецФункции //ДатаВремяВФорматXMLИз1СМТ()

POST-запрос рабочий, опытный программист быстро адаптирует текст под собственные нужды. Если кому-то понадобится дополнительное «украшательство», то в конце процедуры есть пример частичного парсинга кода (нам не потребовалось).

Пользуйтесь на здоровье!

Удачи в разработке

2 Comments

  1. luda_2008

    Спасибо огромное за обработку.Очень пригодилась.

    Reply
  2. consulting group WA

    Ох не просто все с этим КАД. Мы при разработке своего решения на 1С с функцией интеграции с kad.arbitr намучались, они на КАД все время что-то меняют, но в итоге продукт рабочий http://you-right.ru/sudebno-pretenzionnaya-rabota

    Reply

Leave a Comment

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