Версия для печати темы (https://pro1c.org.ua/index.php?s=2f193f8bb086cbb7f194c7bb44110ae5&showtopic=61187)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ POST запрос до серверу податкової

Автор: volodya1122 27.08.20, 15:32

https://pro1c.org.ua/redirect.php?https://cabinet.tax.gov.ua/help/api-registers.html Тут описано методи API для доступу до реєстрів відкритої частини ЕК.
З API ніколи не працював. Можливо хтось підкаже як реалізувати ці запити на 1С ?

Автор: Vofka 28.08.20, 9:18

Вот, например https://pro1c.org.ua/topic/rabota-s-http-zaprosami-get-i-post-v-yazyke-1s-8-3-8-2-v-primerah-61211/
Если по этим примерам непонятно, гуглите 1с 8 http post запрос

Автор: nik389 28.08.20, 11:10

оффтоп, знаю
вот человек вроде бы что-то программирует...
ну то ест мозги как бы присутствуют
возник вопрос, и чел вроде даже знает как его сформулировать

но вместо того чтобы забить это в гугл и получить десяток сайтов где все разжевано и в рот положено
он создает тему на форуме и ждет с моря погоды

всегда хотел понять, в чем профит такого подхода

Автор: volodya1122 28.08.20, 12:12

nik389 @ Сегодня, 12:10 * ,

Звичайно, перед тим як задавати питання я по різних форумах вивчав це питання
Щось получилось але всеодно нерозумію чому не працює так як потрібно
Ось що написав

    Соединение = Новый HTTPСоединение("cabinet.tax.gov.ua",443,,,,15,Новый ЗащищенноеСоединениеOpenSSL(), Ложь);
//Соединение = Новый HTTPСоединение("https://cabinet.tax.gov.ua",443,,,,15,Новый ЗащищенноеСоединениеOpenSSL(), Ложь);
// ось тут була проблема, нерозумів чому небачить цього хоста
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("kodPdvList", "12345678");                            
    
    Заголовки.Вставить("token", "03AOLTBLRIFo9xivFXYOrFqaLL6g0HKv");
        
    Запрос = Новый HTTPЗапрос("/ws/api/public/registers/pdv_act/list",Заголовки);    

    // Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Ответ = Соединение.Получить(Запрос);
    Сообщить(Ответ);
    Сообщить(ТипЗнч(Ответ));
    Данные = Ответ.ПолучитьТелоКакСтроку();

    Сообщить(Данные);

але всеодно сайт вертає ось це по останньому Сообщить.
{"error":"Помилка","error_description":"Помилка обробки запиту"}
нерозумію чому....

Автор: volodya1122 28.08.20, 13:32

Крім того я думаю до такого популярного ресурсу, як сервер податкової, багато хто вже робив запити. Тому щоб не придумувати в черговий раз велосипед, думаю може хтось поділиться готовим рішенням

Автор: Vofka 28.08.20, 14:18

volodya1122, вы бы сразу написали, что делаете конкретный запрос, получаете конкретный ответ. faceoff.gif
Я не проверял, но если верить тому, что написано в описании АПИ, то в вашем коде следующие ошибки:
1. Вы делаете GET запрос Ответ = Соединение.Получить(Запрос), надо POST;
2. kodPdvList и token вы вставляете в заголовок, хотя они должны быть в теле запрос в виде json;
3. Не уверен, но мне кажется, что токен должен быть не тот, который в примере указан, а свой.

Автор: volodya1122 28.08.20, 17:36

нарешті добився результату.
1. Дійсно токен потрібно формувати в приватній частині електронного кабінету
https://pro1c.org.ua/redirect.php?https://cabinet.tax.gov.ua/news/A6CA47C3AB0A019CE0530A5028078B00
2. Готовий код (поки корявий, але робочий), може кому пригодиться

    Соединение = Новый HTTPСоединение("cabinet.tax.gov.ua",443,,,,15,Новый ЗащищенноеСоединениеOpenSSL(), Ложь);
    Заголовки = Новый Соответствие;

       ЄДРПОУ="12345678";  // для тесту
       МойТокен="1111111111111111111111111111111";  // потрібно згенерувати в електроннім кабінеті податкової

    Заголовки.Вставить("Content-Type", "application/json");
    Кавычка=Прав("""",2);                        
    КодПриглашения = "{" +Кавычка+
    "tinList"+Кавычка+":" +Кавычка+ ЄДРПОУ+Кавычка+"," +
    Кавычка+"token"+Кавычка+":"+Кавычка +МойТокен+Кавычка+"}";
    
    //    {"kodPdvList":null,"tinList":"34554355 34554357",
    //    "name":null,"token":"03AOLTBLRIFo9xivFXYOrFqaLL6g0HKv"}
    Запрос = Новый HTTPЗапрос("/ws/api/public/registers/pdv_act/list",Заголовки);
    Запрос.УстановитьТелоИзСтроки(КодПриглашения);
    
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
    Для Каждого ЕлМассива ИЗ Данные цикл
        Для каждого Структур ИЗ ЕлМассива цикл
            Ключ = Структур.Ключ;
            Знч = Структур.Значение;
            Сообщить("Ключ= "+Ключ+"   Знач "+Знч);
        КонецЦикла;
    КонецЦикла;



Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua