Всем доброе время суток.
УТ 10.3.18.1. Платформа 8.2 (8.2.16.362).

Появилась надобность получить данные с сайта из обработки для формирования отчёта.
С помощью чего это лучше сделать,направьте в какую сторону копать.
Через HttpСоединение не выходит.

И вообще есть такая возможность через обработку ? Или надо использовать xdto пакеты и web сервисы ?!
---
Либо добивать SSL на 1С, по образу https://its.1c.ru/db/metod8dev#content:5938:hdoc
либо не морочиться и через WinHttp
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
либо перестать эту древнюю платформу использовать, новые отлично с HTTP справляются.
---
Если там ssl 2 то нужно использовать WinHttpRequest, или платформу 8.3, а так в принципе возможно. Вот здесь можно что то подсмотреть https://infostart.ru/public/721872/
---
Как наверняка узнать ssl2 или api или ещё что ?
---
Посмотрел ссылку. Там использую новый HTTPЗапрос. В моей платформе такого нету даже.
---
Вместо HTTPЗапрос-а раньше использовался просто строковый адрес ресурса. Т.е. было что-то вроде ХТТПСоединение.Получить("/forum9/topic237088/")
---
В старых версиях платформы с https по-другому работа делалась, может поэтому не выходит через HttpСоединение. Не помню до какой версии, но где-то раньше вместо Новый БезопасноеСоединениеSSL использовалось просто Истина.
---
Может у Вас есть ссылка ? Не нашёл для моей платформы никаких инструкции..
---
Вот цитата из инструкции к 8.2.19.116 - здесь ЗащищенноеСоединение как раз булево, а не Новый ЗащищенноеСоединениеSSL
---
Вот цитата и СП, второй вариант - как раз по адресу (первый удаляю за ненадобностью)
---
HTTP_Connect = Новый HTTPСоединение(Сервер,,Логин,Пароль,Истина);

Когда попадает на эту строку, то 1с предприятие завершается с ошибкой.
---
Убрал Истина в конструкторе. Отработало.
---
обратиться к конкретной ссылке с помощью Get получилось. Но как дальше обрабатывать полученную информацию ?
---
Вам вообще с какого сайта информация нужна, какой URL из браузера? Обрабатывать - если это обычная HTML страница - то нужно или парсить сам текст html, или преобразовывать в DOM и там по узлам выбирать то, что нужно.
---
Если же это API, который выдает XML или JSON - то соответственно нужно делать обработку XML или JSON преобразовать в структуру/соответствие - и дальше выбирать данные, которые необходимы для дальнейшей работы.
---
Вообще пытаюсь считать данные с сайта https://edi.kontur.ru/.

```1c
    имяВыходногоФайла = ПолучитьимяВременногоФайла();

    HTTP_Connect.Получить("ссылкасервера",имяВыходногоФайла);

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(имяВыходногоФайла);

    Пока ЧтениеXML.Прочитать() Цикл
    // чтение ответа в виде XML файла

    КонецЦикла;

    ЧтениеXML.Закрыть();

    // удаляем файл после использования
    УдалитьФайлы(имяВыходногоФайла);
```

На строке ЧтениеXML.Прочитать выдаёт ошибку :
Ошибка разбора XML: - [6,8]
Фатальная ошибка:
Opening and ending tag mismatch: hr line 0 and body

Пытался почистить кэш,но дело явно не в этом.
---
а что не хотите взять родную обработку от контура? есть смысл изобретать велосипед?
---
в их обработке нету данных которые мне нужны,отсюда и велосипед
---
а что именно пытаетесь реализовать, просто много работал с контур edi может что похожее делал - подскажу чего...
---
Нужен отчёт. В котором будут видны исходные данные заказов партнёров. А именно Наименование номенклатуры,кол-во,штрихкод. Для сравнения с текущими заказами. Ибо количество запрошенное и подтверждённое может отличаться.

Если делали, отдам Вам все свои мани ;-)
---
При использовании GET получаю следующее в папке Temp:

```1c
    <ht ml>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
```

Данные хранятся здесь: h htps ://edi. kontur .ru/
---
В ответе русским по белому 301 ошибка.
---
Да. Я в курсе. Но не пойму что не так. Ссылки сто раз перепроверил уже.
---
А если залогиниться и в браузере перейти по ссылке - ответ нормальный выдает?
---
Ну к примеру Сервер у меня : yandex.ru
Хочу доступ к yandex.ru/money

делаю HTTP_Connect = Новый HTTPСоединение(yandex.ru,,Логин,Пароль,);

ИмяФайлаОтвета = ПолучитьимяВременногоФайла();

HTTP_Connect.Получить("/money",ИмяФайлаОтвета);

в имя файла попадает ошибка 301.

Вы говорите залогиниться и ввести yandex.ru/money ? Если так, то да открывает корректно.
---
В запросе первый слэш попробуйте убрать.
---
Уже как только не пытался. Без изменении.
Я так полагаю, что дело в самом сервере. Не так просто подключиться к ним из 1с.
---
Там get или post запрос нужен? HTTP_Connect.ОтправитьДляОбработки тоже не работает?
---
Ну мне явно Get нужен. Я же получаю оттуда данные. Post не пробывал.
---
Это потому что он Вас на https переправляет. Если сделаете ХТТПОтвет = ХТТПСоединение.Получить("") - то в ХТТПОтвет.Заголовки увидите, что идет редирект на https://
---
И как мне быть,извиняюсь за глупый вопрос ?
---
Ответ в (3) :)
---
Конкретно с помощью WinHttpRequest делать ?
---
Вот из какого-то пыльного сундука )

```1c
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Предложения.Очистить();
    Путь = КаталогВременныхФайлов()+"details.html";
    URL = "http://www.findchips.com/lite/MAX232ACPE";
    //URL = "http://www.findchips.com/lite/0805CS-681XGE";

    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Option(2,"utf-8");
    //WinHttp.SetProxy(2, "lmsc:8118");
    WinHttp.Open("GET", "https://www.findchips.com/lite/MAX232ACPE", Ложь);
    WinHttp.Send();
    ФайлОтвета = Новый ЗаписьТекста(Путь, КодировкаТекста.UTF8);
    ФайлОтвета.Записать(WinHttp.ResponseText);
    ФайлОтвета.Закрыть();

    //НастройкаСохранения = Новый Соответствие;
    //НастройкаСохранения.Вставить("МестоХранения", "Клиент");
    //НастройкаСохранения.Вставить("Путь", Путь);
    //ФайлПолучен = ПолучениеФайловИзИнтернетаКлиентСервер.ПодготовитьПолучениеФайла(URL,,,,,,,НастройкаСохранения);
    //Ошибка при получении файла с сервера www.findchips.com:
    //Ошибка работы с Интернет: SSL connect error

    ЧтениеHTML = Новый ЧтениеHTML;
    ЧтениеHTML.ОткрытьФайл(Путь, "UTF-8");
    ПостроительDOM = Новый ПостроительDOM;
    ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);

    ЭлементыDOM = ДокументHTML.ПолучитьЭлементыПоИмени("div");
    МассивДистрибюторовЭлементыDOM = новый массив;
    Для Каждого ЭлементDOM Из ЭлементыDOM Цикл
    Если ЭлементDOM.ИмяКласса = "distributor-results" Тогда
    МассивДистрибюторовЭлементыDOM.Добавить(ЭлементDOM)
    КонецЕсли;
    КонецЦикла;

    Для каждого ЭлементDOMдистра из МассивДистрибюторовЭлементыDOM цикл //элемент БлокHTML
    СтруктураДляСтрокиТЧ = Новый Структура;
    ЭлементыDOMдистра_a = ЭлементDOMдистра.ПолучитьЭлементыПоИмени("a"); //список элементов DOM из элементов типа ЭлементЯкорьHTML
    СтруктураДляСтрокиТЧ.Вставить("distributor_id", ЭлементыDOMдистра_a[1].Имя);
    ДляПоставщика = ЭлементыDOMдистра_a[0].Атрибуты[2].ТекстовоеСодержимое;
    //ckEvent('top','FClite_SRP_europe_ru', null, null, '121526716', null); recordUserClick('Anchors', 'Chip One Exchange', 'TOP'); return true;
    ПозНачалоПоставщика = Найти(ДляПоставщика, "'Anchors', '")+12;
    ДлинаПоставщика = Найти(ДляПоставщика, "', 'TOP')")-ПозНачалоПоставщика;
    СтруктураДляСтрокиТЧ.Вставить("Поставщик",сред(ДляПоставщика, ПозНачалоПоставщика, ДлинаПоставщика));
    //так не дает ЭлементыDOMдистра_tbody = ЭлементDOMдистра.ПолучитьЭлементыПоИмени("tbody")[0]; //список элементов DOM из одного элемента "tbody" типа ЭлементHTML, беру первый единственный
    ЭлементыDOMдистра_tbody = ЭлементDOMдистра.ПолучитьЭлементыПоИмени("tbody");
    ЭлементHTML_tbody = ЭлементыDOMдистра_tbody[0];
    ЭлементыDOMдистра_tr = ЭлементHTML_tbody.ПолучитьЭлементыПоИмени("tr"); //список элементов DOM типа ЭлементСтрокаТаблицыHTML
    Для каждого ЭлементСтрокаТаблицыHTML из ЭлементыDOMдистра_tr Цикл
    // ЭлементСтрокаТаблицыHTML.Ячейки; //КоллекцияЭлементовHTML 6 штук типа ЭлементЯчейкаТаблицыHTML
    Для каждого ЭлементЯчейкаТаблицыHTML из ЭлементСтрокаТаблицыHTML.Ячейки цикл
    ДобавитьСтрокиВТЧ(ЭлементЯчейкаТаблицыHTML, СтруктураДляСтрокиТЧ)
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    //ckEvent('top','FClite_SRP_europe_ru', null, null, '1577', null); recordUserClick('Anchors', 'Mouser', 'TOP');
    //return true; на сайте - Mouser Electronics, можно взять из другого места
    // // Mouser Electronics
    // <span class="other-disti-details">ECIA (NEDA) Member • Authorized Distributor</span>
    //
    // https://www.findchips.com/lite/MAX232ACPE
    КонецПроцедуры
```
---
Либо добивать SSL на 1С, по образу https://its.1c.ru/db/metod8dev#content:5938:hdoc
либо не морочиться и через WinHttp
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
либо перестать эту древнюю платформу использовать, новые отлично с HTTP справляются.
---
Да я уж понял, что на 8.3 это уже встроено. Но слишком нетиповая 8.2,чтобы так просто перейти на 8.3 к сожалению..

Ладно,спасибо Вам. Завтра буду пытаться через WinHttpRequest
---
а причем здесь типовая - не типовая нужно же просто платформу обновить а не конфу, конечно возможно какие то небольшие глюки словите, но в целом много уже УТ, УПП на 8.3 нормально работают
---
а... наверное потому что она на 8.2 вряд ли работает... тогда логично в принципе
---
нет, такого не делал, эти данные сравнивали через саму платформу EDI.

Но если вы стандартным модулем от контур пользуетесь, то все данные у вас должны быть в самой 1С, туда ведь грузится в том числе и исходный ORDER сравниваете его просто с документом заказ и выводите отчет
---
Три дня анализировал,это не так. В итоге пообщавшись со специалистом из контура выяснилось, что данные только в веб-интерфейса хранятся и только там.
---
это очень странно, почти на 100% уверен что исходный ORDER также хранится в базе, как будет возможность посмотрю где конкретно - отпишусь
---
Там уже согласованные и подтверждённые хранятся только. Если вы найдете, все мои труды будут напрасны )
---
согласованные и подтвержденные загружаются в документ заказ покупателя. У вас есть обработка контур.edi? Можете ради интереса отключить интернет и попробовать открыть через их обработку любой исходный заказ, который уже был прогружен, он откроется. Ну и вообще весь алгоритм у них уже написан по получению ORDER, зачем вообще свое городить, возьмите у них все процедуры. Только я здесь говорю именно про модуль контур а не про коннектор
---
Ну выходит они меня обманули ?)
Вообще мне же нужны все исходные заказы за прошлый период. Вряд ли изначальные данные партнёров при создании заказа,хранятся в 1с.

И да. Есть обработка Kontur.Edi.
---
В итоге вот так:

```1c
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); //WinHttpRequest

    WinHttp.Open("GET",Сервер,0);
    WinHttp.SetCredentials(Логин,Пароль,1);

    WinHttp.send();

    Если WinHttp.Status = 200 Тогда
    Сообщить ( WinHttp.ResponseText);
```

В ResponseText попадает здоровенный Html текст.
Мне с ним же и работать? Где можно подглядеть как тянуть данные из него и переходить по ссылкам программно?
---
Как оказалось это текст страницы "Вход в систему" Тоесть логин и пароль в SetCredentials не отрабатывают..
---
Не факт. GetAllResponseHeaders() что возвращает?
---
```1c
    Cache-Control: no-cache, no-store, must-revalidate
    Connection: keep-alive
    Date: Fri, 06 Mar 2020 08:31:24 GMT
    Pragma: no-cache
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=utf-8
    Expires: 0
    Set-Cookie: Sticky=3ab1dc55-0c94-49fd-b8f3-6e0cb5ed554e; domain=auth.kontur.ru; path=/; samesite=lax; httponly
    Set-Cookie: AntiForgery=35456541-c725-474c-a105-6daab6473bab; path=/
    Set-Cookie: ngtoken=LhHL+l5iClyJOV+VAwcOAg==; expires=Thu, 01-Dec-22 08:31:24 GMT; domain=.kontur.ru; path=/
    X-Singular-Replica: http://sd2-singular11/
    X-Kontur-Trace-Id: 33e9d52ecf2c488889dc9cedc9514053
    Context-Globals: FwAAAHZvc3Rvay5yZXF1ZXN0LnByaW9yaXR5CAAAAE9yZGluYXJ5FgAAAHZv­c3Rvay50cmFjaW5nLmNvbnRleHRJAAAAMzNlOWQ1MmUtY2YyYy00ODg4LTg5­ZGMtOWNlZGM5NTE0MDUzO2NiMmJlZWZmLTM1YTItNGVkMy1hZGVkLWNhYWVk­YTI5NzU3MQ==
    X-Kontur-Dont-Retry: True
    Dont-Retry: True
    X-Singular-Backend: http://bst-auth-hst1:15638/
```