Имя: Пароль:
1C
1С v8
Получение отчёта с сайта через POST и GET запросы
0 nikolas260579
 
22.06.17
10:33
Всем добрый день. Пытаюсь получить отчёт с сайта. На сайте на кнопочке "Сформировать отчёт" висит пост-запрос, у которого в ответе есть такой параметр: ReportId. Дальше этот параметр передается в URL GET - запроса, и гет - запрос выполняется несколько раз до тех пор, пока параметр "status" в его ответе не сменится с 0 на 2. При этом в ответе формируется ещё один параметр ReportDataId, я так понимаю, по нему и нужно будет загружать отчёт.Становится доступна ссылка "Загрузить", при этом никаких запросов нет, просто открывается окно с выбором открыть или сохранить файл.
Вопросы у меня такие: ReportId из пост запроса я получил, но как правильно сделать гет? В отдельной процедуре и повторять её же до тех пор пока статус в ответе гет-запроса не будет равен 2? И как правильно получить файл с отчётом - через ФайлРезультата = ПолучитьИмяВременногоФайла(xls) и далее читать его оттуда? Или как-то иначе?
Буду благодарен за любые советы. Формы обычные, платформа 8.3
1 sFAQer
 
22.06.17
10:35
(0) Обратись к разработчику сайта
2 Адинэснег
 
22.06.17
10:35
пздц каша
3 nikolas260579
 
22.06.17
10:38
(1)обращался, пока ничего путного, открытых апи нет.
4 lodger
 
22.06.17
10:47
почитайте что такое WebService, ws-ссылки и SOAP в 1с.
5 sFAQer
 
22.06.17
10:53
(4) Как ему это поможет с каким то левым сайтом?
6 nikolas260579
 
22.06.17
11:06
(5)пока не знаю, как поможет, просто читаю информацию. Делаю же так: из пост-запроса получил параметр ReportID, пишу гет-запрос


URLЗапроса = Строка("/api/report/"+ReportID+"/status");
                 ЗаголовкиGET = Новый Соответствие;
      ЗаголовкиGET.Вставить("Cookie", Кук);
      //URLЗапроса = Строка("/api/report/fiscaldocument/generate?outletId=&kktId=&beginDate="+ДатаНачала+"&endDate="+ДатаКонца+"&documentType=&accountingType=&paymentType=");
      GET_Запрос = Новый HTTPЗапрос(URLЗапроса,ЗаголовкиGET);
      Соединение.ВызватьHTTPМетод("GET",GET_Запрос);
      HTTPОтвет = Соединение.Получить(GET_Запрос,Файл1);
      Если HTTPОтвет.КодСостояния = 200 ТОгда
          ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
          ТекстовыйФайлОтвета.Прочитать(Файл1, КодировкаТекста.UTF8);
          СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();
          
          //ищем статус или сверяем репортдатаид
          Поз = Найти(СтрокаОтветаСервера,"""status""");
          Если Поз>0 Тогда
              Строка1 = Сред(СтрокаОтветаСервера,Поз);
              Поз1 = Найти(Строка1,":");
              Если Поз1>0 Тогда
                  Строка2 = Сред(Строка1,Поз1+1,1);//по идее бы на цифры проверить
                  
                  Если Строка2 = "0" Тогда
                    //повторяем гет-запрос?  
                  ИначеЕсли Строка2 = "2" Тогда
                      Сообщить("отчет где-то есть");
                      
                  КонецЕсли;
                  
                  
                  
              КонецЕсли;
          
          Иначе  
          КонецЕсли;
          
          
      Иначе
          
      КонецЕсли;

В результате получаю статус 0. Повторять его до тех пор, пока не получу статус 2?