Имя: Пароль:
1C
 
8.2 скачать файл с https без вариантов?
,
0 НичегоНе Понятно
 
26.04.20
13:48
Всем привет! Есть вот такой код

HTTP =  Новый HTTPСоединение("covid.ourworldindata.org",,,,,Истина);                                                            
Результат =  HTTP.Получить(Новый HTTPЗапрос("data/owid-covid-data.csv"));

Ресурс должен возвращать csv файл. Но я получаю ошибку: "Ошибка работы с Интернет:  SSL connect error" Про то, что последним параметром должно идти Новый SSLЧегоТоТам(), а не булево, я в курсе, это 8.3 у меня в распоряжении 8.2. Есть варианты работы с https у 8.2?
1 ДенисЧ
 
26.04.20
13:52
Есть внешние программки, которые как прокси работают. С почтой прокатывало.
Названия не помню ((
2 НичегоНе Понятно
 
26.04.20
13:53
(1)что-то там тоннель да, Если юзать внешние программки то можно юзать curl, я думал может быть можно где-то сертификат прикрутить или еще что-то
3 ДенисЧ
 
26.04.20
14:06
(2) А зачем тебе вообще 1с для этого? wget справится на ура....
4 Asmody
 
26.04.20
14:11
(0) Если windows, то обходи через WinHttp.WinHttpRequest.
5 ДенисЧ
 
26.04.20
14:12
6 НичегоНе Понятно
 
26.04.20
14:15
(3)Ну мне нужно только скачать файл, зачем тащить всякие курлы с вгетами но видимо придется
7 Asmody
 
26.04.20
14:18
(5) Ну а что делать, если вендор не оставляет нам шансов?
8 ДенисЧ
 
26.04.20
14:21
(7) Вегдор даёт. Вот только всякие покемоны не пользуются его даяниями.
9 НичегоНе Понятно
 
26.04.20
14:29
(8)Где покемоны? Кто виноват, что вендор в 2015году(дата выхода 8.2.19.130) не понимал, как работает протокол разработанный в 1994году?
10 Asmody
 
26.04.20
14:33
(8) Именно поэтому вендор только на десятой годовщине платформы понял, что лучше использовать библиотеки ОС для сетевого стека, а не городить гордый, но свой велосипед
11 ДенисЧ
 
26.04.20
16:13
(9) Сейчас, на секундочку - 2020. И вендор таки дал возможность. А всякие покемоны, типа слоупока, могут идти жарить шашлык. На балконе....
12 Serginio1
 
26.04.20
18:31
13 ДенисЧ
 
26.04.20
18:37
(12) Ну вот на какого овоща сюда для примитивнейшей задачи тащить этого монстра????
14 Serginio1
 
26.04.20
20:01
(13) Что бы потом решать огромное количество примитивнейших задач. И чем этот монстр монструознее других предлагаемых здесь?
Есть выбор, каждому решать, что выбрать
15 NorthWind
 
26.04.20
20:07
(9) какая теперь разница, кто виноват. Оно - вот такое, примите это как данность. Тем более что выходы есть.
16 ptiz
 
26.04.20
20:25
(0) в такой же ситуации из 8.2 работаю с Новый COMОбъект("MSXML2.XMLHTTP.6.0")
17 ДенисЧ
 
26.04.20
20:33
(14) Огласи размер предлагаемого тобой дотнета. А потом размер вгета
18 Serginio1
 
26.04.20
21:50
(17) От 10 мегабайт и выше в зависимости от задач. .Net джитит используемые сборки.
10 мб по нашим меркам это мелочь. Учитывая, что можно решать кучу задач без ВК
19 palsergeich
 
26.04.20
21:58
(0) ставишь платформу 8.3.
Создаёшь файловую базу.
Там делаешь одну экспортную процедуру по получению этого файла.
А потом через com или soap вызываешь эту процедуру.
Года 4 назад так и делали, когда главный прод был на 8.2, а файлы тягать надо было, а сторонке по низя.
20 Вафель
 
26.04.20
22:40
А не проще ли было curl запускать?
21 acht
 
26.04.20
23:09
22 lodger
 
26.04.20
23:19
(18) чё-то дорого. решу задачу за пару килобайт.
23 НичегоНе Понятно
 
27.04.20
14:54
(22)Без wget curl и (16)(4)?
24 НичегоНе Понятно
 
27.04.20
14:58
(15)Согласен. Мне показалось, что по мнению (8) все у кого не последняя версия платформы сам дурак. И это с моей скромной точки зрения не совсем соответствует истине. Или совсем не соответствует.
25 ДенисЧ
 
27.04.20
15:03
(24) О, да ты штатный телепат, видать?
26 НичегоНе Понятно
 
27.04.20
15:25
(25)Я предположил. Ничего не утверждаю. Так и написал. Мне показалось.
27 Вафель
 
27.04.20
15:38
можно еще прокси поставить который будет убирать ссл
28 lodger
 
27.04.20
15:44
29 НичегоНе Понятно
 
27.04.20
15:52
(28)Сертификат заменил. Не помогло. Ошибка не изменилась. Там было, что-то про центр лицензирования. Мне этот центр абсолютно не интересен в данном случае.
30 ptiz
 
27.04.20
16:11
(23) Без. Как-то само работает.
31 lodger
 
27.04.20
16:13
(29) сочувствую вашему работодателю.
тогда немного более явный пример https://www.cs-cart.ru/docs/4.3.x/manager/commerceml/1c/https/
смысл песни тот же, но уже по шагам.
32 ptiz
 
27.04.20
16:20
(29) 5 минут заняло адаптировать свой код под (0)

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    //covid.ourworldindata.org/data/owid-covid-data.csv
    
    Парам = Новый Структура;
    Парам.Вставить("ИмяМетода", "GET");
    Парам.Вставить("АдресСервера", "https://covid.ourworldindata.org";);
    Парам.Вставить("Путь", "data/owid-covid-data.csv");
    //Парам.Вставить("ТелоЗапроса", "");
    
    Результат = ВыполнитьЗапросHTTP(Парам);
    
КонецПроцедуры


Функция ВыполнитьЗапросHTTP(Парам, Сообщать = Истина) Экспорт
    ИмяМетода = Парам.ИмяМетода;    //    GET/POST
    АдресСервера = Парам.АдресСервера;    //    covid.ourworldindata.org
    Путь = Парам.Путь;    //    data/owid-covid-data.csv
    // уберем "/" слева и справа
    Если Лев(Путь, 1) = "/" Тогда
        Путь = Сред(Путь, 2);
    КонецЕсли;
    Если Прав(Путь, 1) = "/" Тогда
        Путь = Лев(Путь, СтрДлина(Путь) - 1);
    КонецЕсли;
    ТелоЗапроса = ?(Парам.Свойство("ТелоЗапроса"), Парам.ТелоЗапроса, "");    // строка json
    
    СтрокаПараметров = "";
    Если Парам.Свойство("ПараметрыЗапроса") Тогда
        СтрокаПараметров = "";
        Для каждого КлючИЗначение Из Парам.ПараметрыЗапроса Цикл
            СтрокаПараметров = СтрокаПараметров + ?(СтрокаПараметров = "", "?", "&")
                                + КлючИЗначение.Ключ + "=" + КлючИЗначение.Значение;
        КонецЦикла;
    КонецЕсли;
    
    
    // Описание:
    //    http://xmlhttprequest.ru/
    //    https://ru.wikipedia.org/wiki/XMLHttpRequest
    //    https://docs.microsoft.com/en-us/previous-versions/windows/desktop/hh830204(v%3dvs.85)
        
    //xmlhttp = Новый COMОбъект("MSXML2.ServerXMLHTTP");
    //xmlhttp = Новый COMОбъект("MSXML2.XMLHTTP.3.0");
    xmlhttp = Новый COMОбъект("MSXML2.XMLHTTP.6.0");
    

    ПолныйПуть = АдресСервера + "/" + Путь + СтрокаПараметров;
    xmlhttp.Open(ИмяМетода, ПолныйПуть, Ложь);
    
    //xmlhttp.setRequestHeader("Content-Type", "application/json");
    
    Стр = ПолныйПуть + Символы.ПС + ТелоЗапроса;
    
    //xmlhttp.setOption 2, 13056 'sets the option "SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS" to "SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS"
    Попытка
        xmlhttp.send(ТелоЗапроса);
        Структура = Новый Структура;
        Структура.Вставить("КодСтатуса", xmlhttp.status);
        Структура.Вставить("ТекстСтатуса", xmlhttp.statusText);
        Структура.Вставить("СтрокаОтвета", xmlhttp.responseText);
    Исключение
        Стр = ОписаниеОшибки();
        Структура = Новый Структура;
        Структура.Вставить("КодСтатуса", 0);
        Структура.Вставить("ТекстСтатуса", "");
        Структура.Вставить("СтрокаОтвета", Стр);
    КонецПопытки;
    
    Если Сообщать ИЛИ Структура.КодСтатуса <> 200 Тогда
        Сообщить(ПолныйПуть);
        Сообщить("КодСтатуса=" + Структура.КодСтатуса);
        Сообщить("ТекстСтатуса=" + Структура.ТекстСтатуса);
        Сообщить("СтрокаОтвета=" + Структура.СтрокаОтвета);
    КонецЕсли;
    
    Стр = "КодСтатуса=" + Структура.КодСтатуса
            + Символы.ПС + "ТекстСтатуса=" + Структура.ТекстСтатуса
            + Символы.ПС + "СтрокаОтвета=" + Структура.СтрокаОтвета;
    
    Возврат Структура;

КонецФункции // ВыполнитьЗапросHTTP()
33 НичегоНе Понятно
 
27.04.20
16:31
(31)За инструкцию спасибо, сейчас попробую. Немного смущает добавление сертификатов в 1С. Это какая-то грусть, к каждому компу не набегаешься, а выполнять хочется в форме. Но это лучше чем ничего. Помочь и не выпятить свое ЧСВ это наверное невыполнимая задачи для 1Сника.
34 craxx
 
27.04.20
17:23
(19) Вот именно так я и делал, просто http-сервис в базе 8.3 поднял, и к нему долбился из 8.2
Потом достало и перешел на 8.3, и таковая необходимость отпала
35 lodger
 
27.04.20
19:17
(19) OR (34) - дешевле stunnel поставить. смысл тот же, но без костыля в виде целой базы на 1с.
36 ptiz
 
28.04.20
08:38
(33) Зачем тебе сертификаты куда-то добавлять? Без них прекрасно работает.
37 palsergeich
 
28.04.20
10:33
(35) с точки зрения владения - дешевле отдельная база, ибо взяв человека с улицы и выгнав текущих работников он гарантированно разберётся в том что происходит.
38 Cyberhawk
 
28.04.20
11:20
У этого сайта сертификат просто от letsencrypt, тебе нужно его положить в bin платформы (в cacert.pem)
39 Asmody
 
28.04.20
11:23
(38) сам-то пробовал?
40 Cyberhawk
 
28.04.20
11:25
(39) Какие могут быть вопросы?
41 Asmody
 
28.04.20
11:30
(39)+ если сайт использует TLS, а более "слабые" протоколы отключены (а это нынче повсеместная практика из-за "текучего" SSL), вы можете что угодно класть в cacert.pem, толку не будет.
42 Cyberhawk
 
28.04.20
11:31
(41) Вообще-то 8.2 прекрасно поддерживает TLS 1.0, поэтому если он у сайта не отключен, то все заработает.
Впрочем, посмотрел на сайт автора - там TLS 1.0 отключен, так что на 8.2 из коробки не прокатит.
43 Asmody
 
28.04.20
11:32
Для справки: платформа узнала про TLS с версии 8.3.3. Про TLS 1.1 и выше с версии 8.3.8. Полноценная поддержка TLS 1.2 в 8.3.9
44 Cyberhawk
 
28.04.20
11:35
(43) "платформа узнала про TLS с версии 8.3.3" // Брехня, см. (42)
45 НичегоНе Понятно
 
29.04.20
12:08
В связи с (42) решил использовать (32) потому, что других вариантов кроме wget и curl(которые не запускаются в регламентном задании) нет. lodger я так понял рассуждал в теории.