Ещё немного о ИНН и сервисе DaData

Об использовании сервиса dadata и немного информации о возможностях получать данные по ИНН. Возможно, кому-то будет полезным.

А ведь кому-то до сих пор нужно получать данные о контрагентах, зная ИНН.  Не буду говорить, что можно схитрить и использовать типовой код, который достанет данные из надежных источников. Найдите в Вашей свежей типовой конфигурации глобальным поиском findCorporationByInn и будьте аккуратны с вашей авторизацией 🙂 )

Но сейчас не об этом. Речь пойдет о сервисе https://dadata.ru/

Данный сервис готов бесплатно до 10 тысяч запросов в день возвращать по вашим запросам информацию. В интернете уже много информации о данном сервисе. Но, как оказывается, всегда что-то открываешь для себя новое. И речь идет и не только про ИНН, но это уже другие истории. Как это сделать? Да легко:

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Open("POST", "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party", Ложь);
WinHttp.SetRequestHeader ("Content-Type", "application/json");
WinHttp.SetRequestHeader ("Accept", "application/json");
WinHttp.SetRequestHeader ("Authorization", "Token *******ВАШ ТОКЕН*****");
WinHttp.Send("{ ""query"": "" " + ИНН + """, ""status"": ""ACTIVE"", ""type"": ""INDIVIDUAL"" }" );
Если WinHttp.Status = 200 Тогда
ТекстОтвета = WinHttp.ResponseText;
Чтение = новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТекстОтвета);
// ИСПОЛЬЗУЙТЕ ВЫ ОТВЕТ В ФОРМАТЕ JSON КАК ПОСЧИТАЕТЕ НУЖНЫМ
// ПрочитатьJSON ВАМ ТАКЖЕ В ПОМОЩЬ
// РЕЧЬ СЕГОДНЯ НЕ ОБ ЭТОМ :-)
КонецЕсли;

Как получить токен и другую полезную инфу прочитайте здесь https://dadata.ru/api/find-party/ Собственно, о чем это я, а, да, вот о чем.

Обратили внимание на ""type"": ""INDIVIDUAL""? Да, это из примера на сайте (указание, что ИП ищем), в случае с юр. лицами подсовывайте LEGAL вместо INDIVIDUAL. Но, Ваш запрос на самом деле не ограничивается только полями type и query, как это описано в примере у первоисточника. Обратите внимание, в моём примере ""status"": ""ACTIVE"", дело в том, что наряду с действующими организациями могут вернуться и не действующие, у которых "status":"LIQUIDATED", а нам нужны например только действующие. Такое бывает, когда, например, ИП было закрыто, а потом повторно открыто, ИНН остался тот же, но Вам вернётся информация о двух объектах, недействующем (а ведь это тоже кому-то может быть нужным) и действующем.

В таком случае помещение в запросе ""status"": ""ACTIVE"" как раз и исправляет ситуацию. В первоисточнике (на сайте) про это напрямую нигде не сказано, и можно подумать, что запрос при обращении ограничен только полями type, branch_type, kpp, которые описаны. Но, как показывает практика, можно использовать при запросе сразу отбор и по другим полям. Если кому-то помог, буду рад, всем удачи!

14 Comments

  1. aximo

    httprequest 1с-ый чем не подошел?

    Reply
  2. Идальго

    Вроде на ИС я видел порядка пяти или даже больше таких штук для работы с ДаДата.

    Reply
  3. xxxAndricxxx

    (3)Да, готовых решений много, у меня акцент тем, кто не хочет покупать и ему это не нужно, что можно разные отборы устанавливать при запросе в сервисе.

    Reply
  4. v3rter

    Действительно «Бесплатно до 10 тысяч запросов в день» — https://dadata.ru/api/find-party/#pricing — только найти информацию сложно, везде написано «Бесплатно до 10 тысяч запросов». (сообщение отредактировано)

    Reply
  5. xxxAndricxxx

    (5) да вроде написано, https://dadata.ru/api/find-party/ но лучше у них уточнить ))

    Reply
  6. BigB

    (0) перевел Ваш код на нормальный язык:

    HTTPСоединение=Новый HTTPСоединение(«suggestions.dadata.ru»,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    Заголовки=Новый Соответствие();
    Заголовки.Вставить(«Content-Type»,»application/json»);
    Заголовки.Вставить(«Accept»,»application/json»);
    Заголовки.Вставить(«Authorization»,»Token *******ВАШ ТОКЕН*****»);
    HTTPЗапрос=Новый HTTPЗапрос(«/suggestions/api/4_1/rs/suggest/party»,Заголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки(«{ «»query»»: «» » + ИНН + «»», «»status»»: «»ACTIVE»», «»type»»: «»INDIVIDUAL»» }»);
    HTTPОтвет=HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Если HTTPОтвет.КодСостояния=200 Тогда
    ТекстОтвета=HTTPОтвет.ПолучитьТелоКакСтроку();
    ЧтениеJSON=Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
    Структура=ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    // ИСПОЛЬЗУЙТЕ ВЫ ОТВЕТ В ФОРМАТЕ JSON КАК ПОСЧИТАЕТЕ НУЖНЫМ
    // ПрочитатьJSON ВАМ ТАКЖЕ В ПОМОЩЬ
    // РЕЧЬ СЕГОДНЯ НЕ ОБ ЭТОМ 🙂
    КонецЕсли;
    

    Показать

    Reply
  7. BigB

    (9)

    Кстатите, Вы знаете что выполняется по факту под HTTPСоединение ?

    Поясните, если не сложно

    Reply
  8. for_sale

    (9)

    Разработчика на 1С, по большому счёту, не должно интересовать, что выполняется по факту или во что компилируется. Есть стандартные средства в 1С, которые вполне могут выполнить данную задачу. Более того, если попытаться выполнить такой код на маке или линуксе (вы же слышали новость, что 1С уже и там работает?), то вы получите ошибку. Создавать КОМ, изучать документацию по нему, ограничивать себя только одной платформой — для чего?

    Reply
  9. BigB

    (13)

    я к тому что знаю что такое HTTPСоединение, разница по сути — без разницы. Смысл не в этом посте )

    Прям как Кличко выражаешься.

    Reply
  10. BigB

    (12) Вам же уже сказали, что ваш метод не будет работать под маком и линуксом. Он будет работать только под виндой.

    Метод который я привел на «нормальном языке» будет работать везде (надеюсь).

    Умничать никто не собирался.

    Reply
  11. for_sale

    (12)

    Я не понял. Я тебе написал обоснованные вопросы, так ты мне ещё и нахамить решил, умник? Повторю ещё раз — твоя поделка не взлетит на определённых системах, а код, который ты накопировал здесь, известен уже тысячи лет, ты что-то новое сюда внёс? Я уж не говорю о таких мелочах, как то, что выход за рамки системы — это удвоение рисков наличия пакетов, прав доступа, закрытых-открытых портов и прочих радостей жизни. Но тебя же это не волнует, правда, ты же здесь не для пользы, а чтобы свои косноязычные понты а-ля Кличко заявить?))

    «соль больше в возможностях»? «Соль» можно почитать на сайте дадаты, а также в добром десятке других статей про дадату здесь, на ИС и в сотне в другом интернете. Как пользоваться интернетом через 1С — тоже, и встроенными средствами, и через WinHttpRequest (если вдруг остался ещё кто-то, кто, как и ты, не умеет работать средствами того инструмента, которым пользуется). Свои претензии к тому, что тебе задают обоснованные вопросы, можешь засунуть себе в то место, которым ты думал, когда выкладывал эту копипасту.

    Reply
  12. for_sale

    (16)

    Реально Кличко 2))) «Переходить на личности — не в плюс профессиональным качествам»))) Не переходите на личности, а то будете писать WinHttpRequest вместо существующих встроенных способов, как автор этой … «статьи»))

    Reply
  13. memb3r

    (2) О чем статья? Реклама dadata?

    Reply
  14. user774630

    (9) причем тут Павел Чистов? На его домене зеркало Инфостарта.

    https://infostart.ru/public/721872/

    Reply

Leave a Comment

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