Имя: Пароль:
1C
1С v8
Сохранение странички из Инета в txt
,
0 Маркетолог
 
27.11.12
11:07
Как средствами 1С8.2 открыть страничку и сохранить содержимое
в текстовый файл ?
1 Маркетолог
 
27.11.12
12:48
пробую вот так делать

АдресСервера = "http://xxxxxxxxxxxxxxxxx.html";
ИмяФайлаНаСервереДеревоКаталогов = "";
Попытка    
HTTP = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
Исключение        Сообщить("Ошибка подключения HTTP!", Ложь);    
Сообщить("111111111");  
КонецПопытки;
СтрокаАдреса = АдресСервера + ИмяФайлаНаСервереДеревоКаталогов;    
HTTP.Open("GET", СокрЛП(СтрокаАдреса), false);    HTTP.Send();    
Если HTTP.Status = 200 Тогда      
ТекстОтвета = HTTP.ResponseText;
иначе    
HTTP = "";    
КонецЕсли;

Но говорит "ошибка при получении атрибута контекста (ResponseText)"
2 Wobland
 
27.11.12
12:54
что, нет такого у WinHttp.WinHttpRequest.5.1?
3 Маркетолог
 
27.11.12
12:55
(2) В Дебагере есть.
4 le_
 
27.11.12
13:22
http = Новый COMОбъект("Microsoft.XmlHttp");
http.open("GET", "http://www.forum.mista.ru/", False);
http.send();
Сообщить(http.responseText);
5 Маркетолог
 
27.11.12
13:36
Значит я вообще не то делал.
Мне надо програмно "сохранитьКак" в текстовый файл.
6 le_
 
27.11.12
13:43
   http = Новый COMОбъект("Microsoft.XmlHttp");
   http.open("GET", "http://www.forum.mista.ru/", False);
   http.send();
   ЗТ = Новый ЗаписьТекста("d:\mista.txt");
   ЗТ.Записать(http.responseText);
   ЗТ.Закрыть();
   ЗТ = Неопределено; http = Неопределено;
   Предупреждение("Готово!");
7 le_
 
27.11.12
13:47
Процедура КнопкаВыполнитьНажатие(Кнопка)
   http = Новый COMОбъект("Microsoft.XmlHttp");
   http.open("GET", "http://www.forum.mista.ru/", False);
   http.send();
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
   Диалог.Фильтр = "Текстовый документ(*.txt)|*.txt";
   Если Диалог.Выбрать() Тогда
       ЗТ = Новый ЗаписьТекста(Диалог.ПолноеИмяФайла);
       ЗТ.Записать(http.responseText);
       ЗТ.Закрыть();
       ЗТ = Неопределено; http = Неопределено;
       Предупреждение("Готово!");
   КонецЕсли;
КонецПроцедуры
8 Маркетолог
 
27.11.12
14:41
(7) Немного нето получается.
   Если из браузера "сохранить как", то
"Волшебный форумВолшебный форумОдинэсник сильно заболел, лейкоз
     Срочно нужны деньги на лечение
     Александр Крупка из Киева Книга знаний
     Привет, Маркетолог | Личные настройки | Выход.....
а если по (7), то "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="Cache-control" content="no-store, no-cache, must-revalidate">
<title>Волшебны ...
9 le_
 
27.11.12
15:25
Процедура КнопкаВыполнитьНажатие(Кнопка)
   web = Новый COMОбъект("InternetExplorer.Application");
   web.Navigate("https://1cers.ru/");
   Пока web.ReadyState <> 4 Цикл
   КонецЦикла;
   web.ExecWB(4, 2, "d:\\1.txt", "");
КонецПроцедуры

Там окошко появляется, его можно сделать Visible и отправить туда SendKeys("{ENTER}"), чтобы полностью автоматически было.
10 Маркетолог
 
28.11.12
00:05
(9) Ради любопытства спрошу.
   Как "отправить туда SendKeys("{ENTER}")" ?
   
   Предполагаю, что этот кусок кода не будет работать на СЕрвере.
11 oleg_prg
 
28.11.12
01:13
(10) типа такого
ИЕ=СоздатьОбъект("InternetExplorer.Application");
   ИЕ.Visible=0;
   НомерКомпании = 0;
   Адрес1 = "yandex.ru";
   
   ИЕ.Navigate(Адрес1);
   
   Пока ИЕ.ReadyState<4 Цикл
   КонецЦикла;
   
   
   ИЕ.Document.Forms(1).elements("key_string").Value=СокрЛП("Программист 1С");
   ИЕ.Document.Forms(1).submit();
12 oleg_prg
 
28.11.12
01:18
Может такой код будет полезен

Функция GETWeb(Страница, СсылкаФото = "", ВыходФото = "")
   
   Адрес = "http://catalog.onliner.by/mobile/~add=0~sort_by=best~dir=asc~where=actual~currency=USD~city=minsk~page="+СокрЛП(Страница)+"/";
   //Адрес = "http://content1.onliner.by/catalog/devices/apple_iphone4_16gb.jpg";
   Если СсылкаФото <> "" Тогда
       Адрес = СсылкаФото;
   КонецЕсли;
       
   Состояние("Загрузка с WEB узла");
   //Отправка стандартного запроса
   Попытка
   // создадим объект XMLHttpRequest
       олеХМЛ = СоздатьОбъект("Microsoft.XMLHTTP");
   Исключение
       Сообщить("Ошибка создания Microsoft.XMLHTTP");
       Возврат 0;
   КонецПопытки;
   // иницируем его типом запроса и нужным нам URL
   олеХМЛ.Open("GET", Адрес, 0);
   Попытка
   // отправим запрос для обработки серверу
       олеХМЛ.Send();
   Исключение
       Сообщить("Ошибка доступа!!! SEND объекта Microsoft.XMLHTTP");
       Возврат 0;
   КонецПопытки;
   
   
   Попытка
   // создадим "поток" через ADODDB для работы с данными
       олеАДО = СоздатьОбъект("ADODB.Stream");
   Исключение
       Сообщить("Ошибка создания ADODB.Stream");
       Возврат 0;
   КонецПопытки;
   // зададим тип и режим потока
   олеАДО.Mode = 3;
   олеАДО.Type = 1;
   // откроем его
   олеАДО.Open();
   
   Попытка
       // создадим объект для управления скриптами
       олеШелл = СоздатьОбъект("MSScriptControl.ScriptControl");
   Исключение
       Сообщить("Ошибка создания MSScriptControl.ScriptControl");
       Возврат 0;
   КонецПопытки;
   // установим язык сценариев
   олеШелл.Language = "vbscript";
   // добавим созданные объекты
   олеШелл.AddObject("oleADO", олеАДО);
   олеШелл.AddObject("oleXML", олеХМЛ);
   // с помощью скрипта запишем в поток ADO данные из
   // объекта XMLHttpRequest
   // то есть содержимое страницы
   олеШелл.Eval("oleADO.Write(oleXML.ResponseBody)");
   // запишем данные во временный файл
   Если СсылкаФото = "" Тогда
       олеАДО.SaveToFile("D:\data.txt", 2);
   Иначе
       олеАДО.SaveToFile(ВыходФото, 2);
   КонецЕсли;    
   // закроем данный поток
   олеАДО.Close();
   Состояние("Получен!!!");
   Возврат 1;
КонецФункции
13 Маркетолог
 
28.11.12
01:20
(11),(12)
Спасибо.
Завтра попробую.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший