Имя: Пароль:
1C
1С v8
Обмен 1С - Портал
0 olo_lo1
 
11.02.14
12:12
Подскажите пожалуйста кто в курсе -  компании есть портал, туда в определенное место складываются реквизиты договора, нужно из 1С подключиться и забрать реквизиты
Пишу запрос в 1С

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

Соединение = Новый HTTPСоединение("myportal.ru/contracts",80,Логин,Пароль,, Истина);

далее не знаю что нужно что бы с определенной странички все скачалось в файл имяВыходногоФайла
1 Wobland
 
11.02.14
12:13
продам СП. без посредников, от производителя
2 olo_lo1
 
11.02.14
12:15
(1) Соединение.Получить("вот здесь что то указывается", имяВыходногоФайла);

я саму физику процесса не понимаю, так что стебись над этим СП тут не причем
3 Wobland
 
11.02.14
12:19
Процедура КоманднаяПанель3ПолучитьФайлы(Кнопка)
    Для Каждого ТекСтрока Из ПоследниеВерсии Цикл
        ОбработкаПрерыванияПользователя();
        Если НЕ ТекСтрока.Пометка Тогда
            Продолжить;
        КонецЕсли;
        Состояние("Загрузка http://techsupp.1c.ru/";+ТекСтрока.Гиперссылка);
        Расширение=Сред(ТекСтрока.Гиперссылка, СтрДлина(ТекСтрока.Гиперссылка)-2, 3);
        ИмяКаталога=СтрПолучитьСтроку(ТекСтрока.Наименование, СтрЧислоСтрок(ТекСтрока.Наименование));
        ИмяКаталога=СтрЗаменить(ИмяКаталога, ":", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, ".", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, "\", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, "/", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, "*", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, "?", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, ";", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, "(", "");
        ИмяКаталога=СтрЗаменить(ИмяКаталога, ")", "");
        Если НЕ ПроверитьСуществованиеКаталога(ИмяКаталога) Тогда
            Продолжить;
        КонецЕсли;
        ИмяФайла=ПутьЗагрузки+ИмяКаталога+"\"+ПолучитьИмяФайлаИзГиперссылки(ТекСтрока.Гиперссылка);
        Попытка
            http.Получить(ТекСтрока.Гиперссылка, ИмяФайла);
            Мусор.Добавить(ИмяФайла);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    КонецЦикла;
КонецПроцедуры
4 olo_lo1
 
11.02.14
12:22
(3) чтоу тебя в этой переменной ТекСтрока.Гиперссылка ?
5 Wobland
 
11.02.14
12:23
(4) не скажу, что горжусь этим

    ПоследниеВерсии.Очистить();
    HTML=Новый COMОбъект("HTMLFile");
    HTML.Open("text/html");
    HTML.Write(ф.ПолучитьТекст());
    HTMLDocument=HTML.documentElement.document;
    Table=HTMLDocument.getElementsByTagName("Table");
    obj=Table.Item(1);
    КоличествоСтрок=Цел((obj.cells.length-1)/4);
    Для i=1 По КоличествоСтрок Цикл
        НоваяСтрока=ПоследниеВерсии.Добавить();
        НоваяСтрока.Дата=СокрЛП(obj.cells(i*4).innerText);
        Наименование=СокрЛП(obj.cells(i*4+1).innerText);
        поз=Найти(Наименование, "Подробнее");
        Если поз>0 Тогда
            Наименование=СокрЛП(Лев(Наименование, поз-3));
        КонецЕсли;
        НоваяСтрока.Наименование=Наименование;
        НоваяСтрока.НомерРелиза=СокрЛП(obj.cells(i*4+2).innerText);
        Ссылки=ПолучитьГиперссылки(obj.cells(i*4+3).innerHTML);
        Если Ссылки.Количество() Тогда
            НоваяСтрока.ГруппыФайлов=Ссылки[0].Текст;
            НоваяСтрока.Гиперссылка=Ссылки[0].Гиперссылка;
        КонецЕсли;
        Для й=1 По Ссылки.Количество()-1 Цикл
            НоваяСтрока=ПоследниеВерсии.Добавить();
            НоваяСтрока.ГруппыФайлов=Ссылки[й].Текст;
            НоваяСтрока.Гиперссылка=Ссылки[й].Гиперссылка;
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Функция ПолучитьГиперссылки(СтрокаСоСсылками)
    Результат=Новый ТаблицаЗначений;
    Результат.Колонки.Добавить("Текст");
    Результат.Колонки.Добавить("Гиперссылка");
    стр=СтрокаСоСсылками;
    Для й=1 По СтрЧислоСтрок(СтрокаСоСсылками) Цикл
        поз_хреф=Найти(НРег(стр), "href");
        Пока поз_хреф>0 Цикл
            стр=Прав(стр, СтрДлина(стр)-поз_хреф-5);
            поз_квч=Найти(стр, """");
            поз_а=Найти(НРег(стр), "</a>");
            НоваяСтрока=Результат.Добавить();
            НоваяСтрока.Гиперссылка=Лев(стр, поз_квч-1);
            Если Лев(НоваяСтрока.Гиперссылка, 1)="/" Тогда
                НоваяСтрока.Гиперссылка=Прав(НоваяСтрока.Гиперссылка, СтрДлина(НоваяСтрока.Гиперссылка)-1);
            КонецЕсли;
            НоваяСтрока.Текст=Сред(стр, поз_квч+2, поз_а-поз_квч-2);
            поз_хреф=Найти(НРег(стр), "href");
        КонецЦикла;
    КонецЦикла;
    
    Возврат Результат;
КонецФункции
6 olo_lo1
 
11.02.14
12:30
(5) все это прекрасно! и код красивый, но отделяем мух от котлет

http.Получить(ТекСтрока.Гиперссылка, ИмяФайла);

как определяешь http
что у тебя хранится в ТекСтрока.Гиперссылка
7 Wobland
 
11.02.14
12:33
(6) давно дело было.. со страницы собираю все нужные мне ссылки в ТЗ, юзер на форме отмечает нужные, по кнопке начинается скачка.

    Попытка
        Если СтруктураАвторизации.ИспользоватьПрокси Тогда
            http=Новый HTTPСоединение("techsupp.1c.ru", , СтруктураАвторизации.Логин, СтруктураАвторизации.Пароль, Прокси);
        Иначе
            http=Новый HTTPСоединение("techsupp.1c.ru", , СтруктураАвторизации.Логин, СтруктураАвторизации.Пароль);
        КонецЕсли;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    Попытка
        http.Получить("", ИмяФайла); //тут сохраняю страницу себе, чтоб выдрать из неё все ссылки на скачивание
        Мусор.Добавить(ИмяФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
8 Wobland
 
11.02.14
12:35
>что у тебя хранится в ТекСтрока.Гиперссылка
что-то из ПолучитьГиперссылки()
9 olo_lo1
 
11.02.14
12:41
Если я у себя пишу
имяВыходногоФайла = ПолучитьимяВременногоФайла("xml");

Соединение = Новый HTTPСоединение("myportal.ru/contracts",80,Логин,Пароль,, Истина);
http.Получить("", ИмяФайла); //пустое значение
то 1С выдает -
Couldn't resolve host name
10 olo_lo1
 
11.02.14
12:41
Если я у себя пишу

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

Соединение = Новый HTTPСоединение("myportal.ru/contracts",80,Логин,Пароль,, Истина);
Соединение.Получить("", ИмяФайла); //пустое значение

то 1С выдает -
Couldn't resolve host name
11 Wobland
 
11.02.14
12:41
Соединение = Новый HTTPСоединение("myportal.ru"... ?
12 olo_lo1
 
11.02.14
12:44
(11)
Данные лежат здесь
http://myportal.ru/contracts/?GetContract=IS-0005е-2014";
13 Wobland
 
11.02.14
12:46
(12) тут нужен кто-то бородатее меня
Соединение.Получить("contracts/?GetContract=IS-0005е-2014", ИмяФайла) ?
14 olo_lo1
 
11.02.14
12:46
имяВыходногоФайла = ПолучитьимяВременногоФайла("xml");

Соединение = Новый HTTPСоединение("http://myportal.ru/contracts",80,Логин,Пароль,, Истина);

Соединение.Получить(Что здесь указать ??, ИмяФайла);

у меня как у тебя через "" пустое значение не взлетает
15 Wobland
 
11.02.14
12:54
(14) ну у меня техсуппорт.1с был, который по пустой строке отдавал страницу. (13) пробовал?
16 olo_lo1
 
11.02.14
12:58
(15) пробовал - пишет Couldn't resolve host name
17 Junior1s
 
11.02.14
13:30
с днс все норм ?
18 olo_lo1
 
11.02.14
13:32
(17) да,
причем если пишу через незащищенное соединение
Соединение = Новый HTTPСоединение("myportal.ru/contracts",80,Логин,Пароль,, Ложь);
Соединение.Получить("?GetContract=IS-0005е-2014", ИмяФайла);

То ругается га то что
Файл не обнаружен ?GetContract=IS-0005е-2014

но тут и не должен быть файл, данные лежат на страничке
19 vhl
 
11.02.14
14:14
(18) Ты (13) пробовал?
20 olo_lo1
 
11.02.14
14:45
(19) пробовал - пишет Couldn't resolve host name
21 olo_lo1
 
11.02.14
14:50
может кто-нибудь знает, если парсить содержимое через

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

то где указать логин и пароль, т.е. произвести авторизацию
22 vhl
 
11.02.14
14:52
(20) У тебя в браузере скачивается файл?
23 vhl
 
11.02.14
14:56
А так:
Соединение = Новый HTTPСоединение("myportal.ru",80,Логин,Пароль,, Ложь);
Соединение.Получить("contracts/?GetContract=IS-0005е-2014", ИмяФайла);
24 olo_lo1
 
11.02.14
22:41
в итоге реализовал как тут http://www.1cpp.ru/forum/YaBB.pl?num=1366372962