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

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

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

Автор: svv1979 15.07.20, 6:25

Добрый день

Есть ссылка https://pro1c.org.ua/redirect.php?http://sait2/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV&p_com=30274&p_reestr_format=xls&p_action=Пуск

При выполнении в браузере по ней открывается форма отчета и сразу формируется Exel файл

СерверИсточник = "sait2";
Адрес = Новый HTTPЗапрос("/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV&p_com=30274&p_reestr_format=xls&p_action=Пуск");
ИмяВходящегоФайла = C:\1\1.xls;
НТТР = Новый HTTPСоединение(СерверИсточник);
НТТР.Получить(Адрес, ИмяВходящегоФайла);
ВходящийФайл = Новый Файл(ИмяВходящегоФайла);


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

Надо что бы при запуске из один 1С формировался файл отчета и сохранялся на диск

В чем может быть проблема?

Автор: Vofka 15.07.20, 8:41

Надо более конкретно смотреть что по конкретной ссылке происходит, потому что просто по описанию сложно понять.

Автор: svv1979 15.07.20, 12:18

Vofka @ Сегодня, 11:41 * ,

Вставляю ссылку в интернет эксплоер и сразу идет формирование файла

если пытаюсь сделать из 1С то в файл сохраняются только параметры для выполнения

Это ссылка на получение отчета из базы оракл и
и в базе так же происходит работа через internet explorer

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

Так в самой ссылке заполнены все параметры и команда запуска формирования отчета в файл

Автор: Vofka 15.07.20, 13:21

А что вы имеете ввиду под

Цитата(svv1979 @ 15.07.20, 13:18) *
идет формирование файла

? Начинается скачивание?

Автор: svv1979 16.07.20, 5:29

Vofka @ Вчера, 16:21 * ,
если вручную делать нажимаешь ПУСК формируется файл и сохраняется(в експлоере выходит предложение сохранить или сохранить как)

а по ссылке сразу формируется файл и сохраняется(в експлоере выходит предложение сохранить или сохранить как)

Автор: Vofka 16.07.20, 8:01

Цитата(svv1979 @ 16.07.20, 6:29) *
если вручную делать

"Вручную" это не переход по этой ссылке, по которой вы программно пытаетесь скачать файл?

Автор: svv1979 16.07.20, 13:42

Vofka @ Сегодня, 11:01 * ,

Открыл в браузере страницу формирования отчета

URL-адрес запроса: https://pro1c.org.ua/redirect.php?http://sait2/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV
Метод запроса: GET
Код состояния: 200 / OK

- Заголовки запроса

Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU
Connection: Keep-Alive
Host: sait2
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; InfoPath.3)

- Заголовки ответа

Connection: Keep-Alive
Content-Type: text/html; charset=WINDOWS-1251
Date: Thu, 16 Jul 2020 09:35:20 GMT
Keep-Alive: timeout=150, max=99
Server: Oracle HTTP Server Powered by Apache/1.3.12 (Win32) ApacheJServ/1.1 mod_ssl/2.6.4 OpenSSL/0.9.5a
Transfer-Encoding: chunked
X-DB-Content-length: 9975

Поставил нужный формат файла XLS и Нажал ПУСК

URL-адрес запроса: https://pro1c.org.ua/redirect.php?http://sait2/pls/info/reestr_persons_to_1C.run

Метод запроса: POST

- Заголовки запроса

Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 110
Content-Type: application/x-www-form-urlencoded
Host: sait2
Referer: https://pro1c.org.ua/redirect.php?http://sait2/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; InfoPath.3)

Сформировался файл нажал сохранить

- Заголовки ответа

Connection: Keep-Alive
Content-Disposition: attachment; filename="%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B6%D0%B8%D0%B2% D0%B0%D1%8E%D1%89%D0%B8%D1%85%20%D0%B2%20%D0%B6%D0%B8%D0%BB%D0%BE%D0%BC%20%D1%84%D0%BE%D0%BD%D0%B4%D0%B5.xls"
Content-Type: application/vnd.ms-excel
Date: Thu, 16 Jul 2020 09:38:37 GMT
Keep-Alive: timeout=150, max=100
Server: Oracle HTTP Server Powered by Apache/1.3.12 (Win32) ApacheJServ/1.1 mod_ssl/2.6.4 OpenSSL/0.9.5a
Transfer-Encoding: chunked
X-DB-Content-length: 91614751

Автор: Vofka 16.07.20, 14:13

Вместо

НТТР.Получить(Адрес, ИмяВходящегоФайла);

попробуйте
НТТР.ОтправитьДляОбработки(Адрес, ИмяВходящегоФайла);

Автор: svv1979 17.07.20, 5:06

Vofka @ Вчера, 17:13 * ,

Делал

2 способ не помог

ИмяВходящегоФайла1 = "\\192.168.113.7\работа\555.xls";
    Ссылка = "http://sait2/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV&p_com=30274&p_reestr_format=xls&p_action=Пуск";
    
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); //WinHttpRequest
    
    WinHttp.Open("GET", Ссылка, Ложь);  //POST Тоже пробовал
    WinHttp.Send();

    Если WinHttp.Status = 200 Тогда
        Stream = Новый COMОбъект("ADODB.Stream");

        Stream.Type = 1;
        Stream.Mode = 3;

        Stream.Open();
        Stream.Write(WinHttp.ResponseBody);
        Stream.SaveToFile(ИмяВходящегоФайла1, 2);
        Stream.Close();
        Stream = Неопределено;
        Сообщить("1");
    Иначе
        //Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
        //Возврат;
    КонецЕсли;

Автор: svv1979 17.07.20, 7:40

Как его можно реализовать в 1С

Пример на C#:

 private void button1_Click(object sender, EventArgs e)
        {
            WebClient webClient = new WebClient();
            string link = @"http://dezvgr2/pls/info/REESTR_SOB_TO_1C.run?rep_user=TVERETINA&p_com=30274&p_reestr_format=xls&p_action=Start";
            string downloadFileName = System.IO.Path.GetFileName("test.xls");
            webClient.DownloadFile(new Uri(link), @"F:\tmp\test\" + downloadFileName);
        }

Автор: svv1979 21.07.20, 14:00


Проблема в сервисе была переделали p_action=­­Start ("Пуск" Русские буквы некорректно передавались ) и убрали зависимость от регистра
из 1С все отработало хорошо

ИмяВходящегоФайла = Объект.ПутьКФайлу;

HTTP = Новый HTTPСоединение(Объект.Сервер);
HTTPЗапрос = Новый HTTPЗапрос(Объект.АдресЗапроса);
HTTP.ОтправитьДляОбработки(HTTPЗапрос,ИмяВходящегоФайла); //POST запрос

//HTTP.Получить(HTTPЗапрос,ИмяВходящегоФайла); //GET Запрос тоже

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