Имя: Пароль:
1C
1С v8
Реквизиты контрагента nalog.ru
0 skupidom
 
13.06.18
10:45
Коллеги написал запрос по проверке ИНН в 1С УФ.
Как скорректировать код,чтобы получить реквизиты контрагента:
ОГРН,адрес,..
Определение = Новый WSОпределения("http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl";);
Прокси = Новый WSПрокси(Определение, "http://ws.unisoft";, "FNSNDSCAWS2", "FNSNDSCAWS2_Port");
Запрос = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request";, "NdsRequest2"));
Контрагент = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request";, "NdsRequest2_NP"));    
Контрагент.INN = ИНН;
Контрагент.KPP = КПП;
Контрагент.DT = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
Запрос.NP.Добавить(Контрагент);
Результат = Прокси.NdsRequest2(Запрос);
1 Cyberhawk
 
13.06.18
10:48
Чудак, в типах XSD нет нужных тебе полей, с какого х..олодца ты решил что там будут ОГРН и адрес?
2 zippygrill
 
13.06.18
10:49
и не забудь что запросы ограничены :)
Типа 500 запросов/месяц
3 skupidom
 
13.06.18
10:51
сторонний сервис есть примеры?
4 novichok79
 
13.06.18
10:55
(3) dadata.ru есть
блин, а зачем так сложна?

Определение = Новый WSОпределения("http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl";;);
Прокси = Новый WSПрокси(Определение, "http://ws.unisoft";;, "FNSNDSCAWS2", "FNSNDSCAWS2_Port");
Запрос = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request";;, "NdsRequest2"));
Контрагент = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request";;, "NdsRequest2_NP"));

вот кстати
https://сайт_чье_имя_нельзя_упоминать/public/439808/
5 novichok79
 
13.06.18
11:01
dadata.ru:

            ТелоЗапроса = Новый Структура;
            ТелоЗапроса.Вставить("query", ИНН);

            ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, , , , , , , , Ложь);
            
            ЗаписьJSON = Новый ЗаписьJSON;
            ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);

            ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
            ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть();
            
            HTTPЗапрос = Новый HTTPЗапрос(ПутьКСервису);
            
            HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
            HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
            HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData);

            HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой);

            Попытка
                
                HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
                
            Исключение

                БылиОшибкиПриОтправкеHTTPЗапроса = Истина;

                ОписаниеОшибкиПриОтправкеHTTPЗапроса =
                СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru = 'При получении данных контрагента по ИНН на DaData.Ru произошла ошибка:
                      |%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
                
                МассивОшибок.Добавить(ОписаниеОшибкиПриОтправкеHTTPЗапроса);
                
                ЗаписьЖурналаРегистрации(
                ИмяСобытияВЖурналеРегистрации, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибкиПриОтправкеHTTPЗапроса);
                
            КонецПопытки;
            
            Если Не БылиОшибкиПриОтправкеHTTPЗапроса Тогда
                
                Если HTTPОтвет = Неопределено Тогда
                    
                    БылиОшибкиПриРасшифровкеHTTPОтвета = Истина;

                    ОписаниеОшибкиПриРасшифровкеHTTPОтвета =
                    СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                    НСтр("ru = 'При получении данных контрагента по ИНН на DaData.Ru произошла ошибка:
                          |%1'"), НСтр("ru = 'Ответ сервера не получен'"));
                    
                    МассивОшибок.Добавить(ОписаниеОшибкиПриРасшифровкеHTTPОтвета);

                    ЗаписьЖурналаРегистрации(
                    ИмяСобытияВЖурналеРегистрации, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибкиПриРасшифровкеHTTPОтвета);

                ИначеЕсли HTTPОтвет.КодСостояния <> 200 Тогда
                    
                    БылиОшибкиПриРасшифровкеHTTPОтвета = Истина;

                    ОписаниеОшибкиПриРасшифровкеHTTPОтвета =
                    СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                    НСтр("ru = 'При получении данных контрагента по ИНН на DaData.Ru произошла ошибка:
                          |Код состояния сервера = %1'"), HTTPОтвет.КодСостояния);
                    
                    МассивОшибок.Добавить(ОписаниеОшибкиПриРасшифровкеHTTPОтвета);

                    ЗаписьЖурналаРегистрации(
                    ИмяСобытияВЖурналеРегистрации, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибкиПриРасшифровкеHTTPОтвета);

                КонецЕсли;
                
                Если Не БылиОшибкиПриРасшифровкеHTTPОтвета Тогда
                    
                    ТекстHTTPОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();

                    Если Не ЗначениеЗаполнено(ТекстHTTPОтвета) Тогда
                        
                        БылиОшибкиПриРасшифровкеHTTPОтвета = Истина;

                        ОписаниеОшибкиПриРасшифровкеHTTPОтвета =
                        СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                        НСтр("ru = 'При получении данных контрагента по ИНН на DaData.Ru произошла ошибка:
                              |%1'"), НСтр("ru = 'Получен пустой ответ сервера'"));
                        
                        МассивОшибок.Добавить(ОписаниеОшибкиПриРасшифровкеHTTPОтвета);

                        ЗаписьЖурналаРегистрации(
                        ИмяСобытияВЖурналеРегистрации, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибкиПриРасшифровкеHTTPОтвета);
                        
                    Иначе
                        
                        Попытка
                            
                            ЧтениеJSON = Новый ЧтениеJSON;
                            ЧтениеJSON.УстановитьСтроку(ТекстHTTPОтвета);
                            ОтветСервера = ПрочитатьJSON(ЧтениеJSON);

                        Исключение
                            
                            БылиОшибкиПриРасшифровкеHTTPОтвета = Истина;
                            
                            ОписаниеОшибкиПриРасшифровкеHTTPОтвета =
                            СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                            НСтр("ru = 'При получении данных контрагента по ИНН на DaData.Ru произошла ошибка
                                  |%1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
                            
                            МассивОшибок.Добавить(ОписаниеОшибкиПриРасшифровкеHTTPОтвета);
                            
                            ЗаписьЖурналаРегистрации(
                            ИмяСобытияВЖурналеРегистрации, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибкиПриРасшифровкеHTTPОтвета);

                        КонецПопытки;
6 skupidom
 
13.06.18
11:02
есть рабочий пример по реквизитам контрагента по ИНН ?
7 skupidom
 
13.06.18
11:11
как с nalog.ru взять данные, может используя HTTPСоединение ?
8 dezss
 
13.06.18
11:16
(7) покажи страничку на налог.ру, где такие данные можно посмотреть.
9 novichok79
 
13.06.18
11:18
(6) я тебе его скинул в (5) правда там dadata.ru
10 novichok79
 
13.06.18
11:19
(7) а как еще можно в 1С? у меня в нелтенке dadata.ru и egrul.nalog.ru, через egrul.nalog.ru пришлось еще получать капчу и токен капчи с сайта.
11 skupidom
 
13.06.18
11:27
эти параметры:
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
            HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
            HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData);
12 skupidom
 
13.06.18
11:27
что это за параметры?
13 dezss
 
13.06.18
11:29
(11) (12) это заголовки хттп-запроса.
14 skupidom
 
13.06.18
11:30
ПутьКСервису что здесь?
15 novichok79
 
13.06.18
11:32
(12) все написано в документации к API
https://dadata.ru/api/find-party/
(14) https://suggestions.dadata.ru

есть даже православный пример работы:
http://poly-soft.ru/public/595325/
16 skupidom
 
13.06.18
11:43
это платный сервис,есть пример с бесплатным?
17 novichok79
 
13.06.18
11:46
(16) пример то есть, но работать за тебя не хочется. в dadata.ru определение по ИНН бесплатно до 10000 запросов в день, по-моему.
18 Cyberhawk
 
13.06.18
11:48
Однако, какой борзой ТС попался ))
19 skupidom
 
13.06.18
11:53
борзой кто пишет!
20 skupidom
 
13.06.18
11:56
сервис -платный,а пример похожий на приведенный далее код (приведенный не работает,ошибка:{"error" : "Access is denied"})
Код:
ssl = Новый ЗащищенноеСоединениеOpenSSL();
        HTTPСоединение = Новый HTTPСоединение("xn--c1aubj.xn--80asehdb",443,,,,,ssl);    
        HTTPЗапрос = Новый HTTPЗапрос("интеграция/компании/?инн="+СокрлП(Стр.ИННЖКХ));// Стр.ИННКазна

        Попытка
            ОтветСайта =  HTTPСоединение.Получить(HTTPЗапрос);
            ТекстJSON = ОтветСайта.ПолучитьТелоКакСтроку();
        Исключение
            Возврат;
        КонецПопытки;
        
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(ТекстJSON);
        Структ = ПрочитатьJSON(ЧтениеJSON);
        ЧтениеJSON.Закрыть();
        
        IDОрганизации =Структ[0].id;
        
        HTTPЗапрос = Новый HTTPЗапрос("интеграция/компании/"+Формат(IDОрганизации,"ЧГ=")+"/");
        ОтветСайта =  HTTPСоединение.Получить(HTTPЗапрос);
        ТекстJSON = ОтветСайта.ПолучитьТелоКакСтроку();
        //ТекстJSON - полный ответ с данными об организации

        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(ТекстJSON);
        Структ = ПрочитатьJSON(ЧтениеJSON);
        
        Ответ = "Наименование: "+СокрлП(Структ.shortName);
        Ответ = Ответ+Символы.ПС+"Полн. наименование: "+СокрлП(Структ.name);
        Ответ = Ответ+Символы.ПС+"ИНН: "+СокрлП(Структ.inn);
        Ответ = Ответ+Символы.ПС+"КПП: "+СокрлП(Структ.kpp);
        Ответ = Ответ+Символы.ПС+"ОГРН: "+СокрлП(Структ.ogrn);
        Ответ = Ответ+Символы.ПС+"Юр Адрес: "+СокрлП(Структ.address.fullAddress);
        Ответ = Ответ+Символы.ПС+"Физ Адрес: "+СокрлП(Структ.address.fullHouseAddress);
21 novichok79
 
13.06.18
11:58
(19) тебе и так кусок рабочего кода из нетленки был дан бесплатно (!!!). что еще нужно? парсинг ответа? мне это не оплачивается.
(20) у меня определение по ИНН в (5) работает бесплатно. на счету dadata.ru лежат 10 рублей, которые были подарены сайтом при регистрации.
22 dezss
 
13.06.18
12:05
(20) а токен получить и указать в заголовках тебе религия не позволяет?
Тебе ж рабочий пример уже дали, просто подставь свои значения!!!

(15) утащил к себе...прикольный у них сервис...даж скрипт для сайта дают)
23 novichok79
 
13.06.18
12:15
(22) буквально на прошлой неделе решал похожую задачу в своей нетленке. внедрил туда заполнение контрагента по egrul.nalog.ru и dadata.ru. из похожих сервисов есть еще focus.kontur.ru и http://www.fedresurs.ru, их не внедрил, ибо 2-х сервисов и так достаточно, я думаю.
24 skupidom
 
13.06.18
12:22
какое было решение? через приведенный Вами код JSON?
25 novichok79
 
13.06.18
12:25
(24) цитирую сам себя же:
внедрил туда заполнение контрагента по egrul.nalog.ru и dadata.ru
26 dezss
 
13.06.18
12:31
(23) а где документация по egrul.nalog.ru?
чета сразу не увидел
27 skupidom
 
13.06.18
12:34
есть обработка для извлечения данных с egrul.nalog.ru ?
28 novichok79
 
13.06.18
12:38
(26) документации я тоже не нашел, на инфостарте есть обработки заполнения, видимо кто-то из html на сайте вытащил вызов. в обработках используются COMОбъекты, у меня сервак на линухе, пришлось переписывать под типовые методы 1С, в итоге оказалось что можно обойтись и без COMОбъектов.
29 dezss
 
13.06.18
12:58
(28) интересно, а как обошли использование капчи?
или там нашли какой-то прямой вызов?
30 novichok79
 
13.06.18
13:01
(29) а никак похоже. я не видел таких решений, разве что
https://сайт_чье_имя_нельзя_упоминать/public/439808/
но там не egrul.nalog.ru
схема такая - сначала получаю токен капчи с картинкой, потом пользак вводит капчу, я передаю значение капчи вместе с токеном в процедуру получения данных.
31 catena
 
13.06.18
13:08
(30)Зачем так сложно, можно же так: http://catalog.mista.ru/public/439808/
32 skupidom
 
13.06.18
13:10
здесь можно получить только state, но не заполнить реквизиты контрагента
33 novichok79
 
13.06.18
13:32
(31) вы привели мою же ссылку.
34 catena
 
13.06.18
13:36
(33)Но она открывается без доп.телодвижений
35 novichok79
 
13.06.18
13:37
(34) браво!
36 skupidom
 
13.06.18
14:05
Коллеги, нужен пример получения реквизитов контрагента через сторонний сервис по ИНН, не лимитированный..
37 Cyberhawk
 
13.06.18
14:11
Мда, борзота, озвученная мною еще в (18), растет как на дрожжах! ))
38 piter3
 
13.06.18
14:12
(36) я пас.
39 Aleksey
 
13.06.18
14:12
(36) А что уже есть такой сервис? Все сервисы имеют то или иное ограничение,
40 skupidom
 
13.06.18
14:26
самый оптимальный из них какой?
41 skupidom
 
13.06.18
14:27
к которому возможно самое большое кол-во обращений за сутки?
42 novichok79
 
13.06.18
14:56
Когда у вас нет собаки,
Ее не отравит сосед,
И с другом не будет драки,
Когда у вас друга нет.
А ударник гремит басами,
А трубач выжимает медь —
Думайте сами, решайте сами,
Иметь или не иметь...
43 dezss
 
13.06.18
15:13
(41) блин...неужели 10к обращений в сутки - это мало?
44 LienXo
 
13.06.18
15:24
(43) там 10к хитрые немного. Но, в принципе базу на 30к контрагентов за неделю я проверил
45 dezss
 
13.06.18
15:40
(44) в чем хитрость?
46 Aleksey
 
13.06.18
16:08
(40) так все они за платно готовы анлим предоставить. Откуда нам знать в чем оптимальность?
47 Aleksey
 
13.06.18
16:14
Вот даже налог.ру формально стоят 5000 за 1 запрос или 150 тысяч в год
https://normativ.kontur.ru/document?moduleId=1&documentId=257561
48 LienXo
 
13.06.18
17:07
(45) 10к не "запросов" а "ответов". Т.е. ты ввел ИНН 10 знаков, не поставил отборы - тебе вернули организацию и 10 ИПшников - 11 ответов ты потратил. Примерно так