В 8.0 имееться обработочка КурсыВалютРБК которая позволяет автоматически загружать курсы валют из интернета. Синхронизация ведеться по коду валюты из справочника валют. Имеесться следующий кусок исходника:
Адрес1 = "tsv/cb/"; // в интервале
Адрес2 = "tsv/"; // по 1 дате
Если НачДата = КонДата Тогда // по 1 дате
Адрес = Адрес2;
ТМП = "/"+Формат(Год(КонДата),"ЧРГ=; ЧГ=0")+"/"+Формат(Месяц(КонДата),"ЧЦ=2;ЧДЦ=0;ЧВН=")+"/"+Формат(День(КонДата),"ЧЦ=2;ЧДЦ=0;ЧВН=");
Иначе // в интервале
Адрес = Адрес1;
ТМП = "";
КонецЕсли;
ИмяВходящегоФайла = "" + ВремКаталог + "\" + ИмяФайла;
СтрокаПараметраПолучения = Адрес + Прав(ТекВалюта.Код,3) + ТМП + ".tsv";
Если ОбработкаПолученияФайлов.ЗапроситьФайлыССервера(СерверИсточник, СтрокаПараметраПолучения, ИмяВходящегоФайла, HTTP) <> Истина Тогда
Сообщить("Не удалось получить ресурс для валюты " + СокрЛП(ТекВалюта.Наименование) + " (код " + ТекВалюта.Код + "). Курс для валюты не загружен.");
Продолжить;
КонецЕсли;
Как видно запрос файла который содержит обнавленный вписок курса находиться в рунете, соответственно содержит курсы для России. Есть ли у нас ресурс с которого можно загружать курсы валют Нац банка? Если есть выложите адрес, путь.
![Фотография](https://vse.kz/uploads/av-17829.jpg?_r=0)
Загрузка курса валют из инета.Автоматическая загрузка курса валют.
Автор koderman, 13.02.2007, 10:22
#5
Отправлено 07.03.2007, 13:58:52
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Есть вариант анализа HTML страниц. Если вы знаете сайт где лежит инфа по курсу валют, то попробуйте восползоваться фигой опсанной в книге Андрея Михайлова "Ситемное программирование на 1С"
вот фрагмент из книги:
****************************************
Анализ HTML-страниц
Среди множества методов и свойств Microsoft Internet Explorer есть весьма ценное свойство Document, которое позволяет получить доступ к содержимому объектной модели HTML документа (то есть возвращает ссылку на тот же объект, что и строка клиентского JScript: window.document). Это позволяет в свою очередь легко и просто разбирать HTML-документы безо всяких регулярных выражений.
Рассмотрим примеры использования Internet Explorer для анализа всех ссылок на HTML-странице, получая информацию с сайта автора www.erpg.ru (листинги 1.2 и 1.3). Данную информацию можно использовать, например, для автоматического определения наличия необходимой ссылки на свой сайт при обмене кнопками и баннерами (рекламными блоками) с дружественными сайтами.
ЛИСТИНГ 1.2
objIE = СоздатьОбъект("InternetExplorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.Navigate(Адрес);
Пока objIE.readyState<4 Цикл // Ждем пока она загрузится
КонецЦикла;
obj Doc = objIE.Document;
AllTags = objDoc.all.tags("A"); // Получаем всю коллекцию ссылок
Для Ном = 0 По AllTags.length-1 Цикл
Сообщить(AllTags.item(Ном).href);
КонецЦикла;
objIE.Quit(); // Закрываем приложение
objIE = "";
Применение технологий СОМ и ActiveX для версии 8.0
ЛИСТИНГ 1.3
objIE = Новый СОМОбъект("InternetExplorer.Application");
objIE.Visible = Ложь; // Отключаем видимость
objIE.Silent = Ложь;
objIE.Navigate(Адрес);
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится страница
КонецЦикла;
objDoc = objIE.Document;
Для каждого а Из objDoc.all.tags("А") Цикл // Перебираем все ссылки
Сообщить(a.href);
КонецЦикла;
objIE.Quit(); // Закрываем приложение
objIE = Неопределено;
Существует несколько важных отличий в реализации данной задачи на разных версиях системы "Ю.Предприятие".
1. Создание СОМ-объекта в версии 7.7 происходит с помощью конструкции СоздатьОбъект, а В версии 8.0 ? Новый СОМОбъект.
2. Конструкция objDoc.all.tags ("А") возвращает коллекцию СОМ объектов с ссылками HTML-страницы, заключенные в тег <А>, но версия 7.7 не позволяет напрямую работать с подобными коллекциями. Поэтому для этой версии сначала определяется количество элементов в коллекции с помощью структуры AiiTags. length, а только потом каждый элемент получаем методом ^ет(<номерэлемента>). В версии 8.0 обход элементов любой коллекции происходит с помощью конструкции для каждого...из...цикл...конеццикла, причем каждый полученный элемент цикла уже будет соответствовать очередному элементу коллекции СОМ объектов.
****************************************
... продолжение
*************************************************************
Работа с POST-запросами в HTML-формах
Данный тип HTTP-запросов чаще всего используется для транслирования сторонней информации в тех случаях, когда для доступа к ней требуется либо идентификация прав доступа (предварительный ввод имени пользователя и пароля), либо автоматическое заполнение определенной HTML-формы и отправки этой информации куда-либо, например, на форум.
Обычно, для передачи данных POST-запроса, во всех популярных языках программирования применяется метод Navigate объекта InternetExplorer со специальным параметром PostData. Однако, несмотря на это, его практическое использование в среде "1С:Предприятие" сопряжено с некоторыми трудностями. Дело в том, что данный аргумент должен иметь тип ? указатель на структуру SafeArray, который не поддерживается системой "1C:Предприятие" версии 7.7. Поэтому самым простым способом отправить POST-запрос посредством internetExpiorer.Application можно считать "эмуляцию" нажатия кнопки Submit (управляющая кнопка, используемая для передачи данных формы на сервер) на какой-либо реальной HTML-форме. Этот способ особенно интересен с учетом того, что многие скрипты, при обработке POST-запросов, как раз для защиты от подобной автоматизации, учитывают HTTP_REFERER, т. е. с какой страницы пришел запрос, и (или) выставляют специальные сессионные переменные или cookie на той странице, где находится форма, посылающая POST-запрос.
Листинги 1.4 и 1.5 демонстрируют примеры подобного программного эмулирования "интерактивного пользователя". При этом программа, написанная для версии 7.7, приведенная в листинге 1.4, демонстрирует заполнение HTML формы (рис. 1.1) форума, расположенного по адресу http://forum.erpg.ru.
; <usernarne>
<subject>
:<message>
|Кнопка "Отправить" в форме имеет имя <post>.
Заполнение HTML формы в 77
ЛИСТИНГ 1.4
objIE = СоздатьОбъект("InternetExpiorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.Navigate("http://erpg.ru/fоrum...reply&t=34")
Пока objIE.readyState<4 Цикл // Ждем пока она загрузится
КонецЦикла;
objDoc = obj IE. Document;
objForm = objDoc.forms(0); // Получаем первую форму в документе
Попытка
// Заполняем поле формы "Имя пользователя"
objForm.elements("username").value = СокрЛП(Имя);
Исключение
КонецПопытки;
objForm.elements("subject").value = СокрЛП(Тема);
objForm.elements("message").value = СокрЛП(Описание);
objIE.Visible = 1;
Сообщить("HTML-форма форума заполнена. Для отправки сообщения необходимо нажать кнопку Отправить в Internet Explorer.");
К сожалению, версия 7.7 не позволяет выполнить эмуляцию нажатия определенной кнопки HTML-формы из-за того, что система не опознает метод click о элемента формы, поэтому для окончательной отправки сообщения на форум пользователю необходимо вручную нажать на кнопку Отправить в окне Internet Explorer. Но если на форме имеется только одна кнопка, используемая по умолчанию, то для программной эмуляции ее нажатия можно ИСПОЛЬЗОВать метод submit: obj Form, submit О . Версия 8.0 системы "1С:Предприятие" более корректно работает с СОМ объектами, поэтому процедура отправки сообщения на форум полностью автоматизирована. Рассмотрим процедуру автоматического заполнения той же формы форума и эмуляции нажатия кнопки Отправить (см. листинг 1.5).
ЛИСТИНГ 1.5
objIE = Новый СОМОбъект("InternetExplorer.Application");
objIE.Visible = Ложь; // Отключаем видимость
objIE.Silent = Ложь;
objIE.Navigate("http://erpg.ru/forum...reply&t=34");
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится сраница
КонецЦикла;
objDoc = objIE.Document; // Получаем объект HTML-документ
objForm=objDoc.forms(0); // Получаем первую форму в документе
Попытка
// Заполняем поле формы "Имя пользователя"
objForm.elements("username").value = Имя;
Исключение
КонецПопытки;
objForm.elements("subject").value = Тема;
objForm.elements("message").value = Описание;
objForm.elements("post").click(); // Нажимаем на кнопку "Отправить"
Сообщить("Ваше сообщение отправлено на форум по адресу: " +
"http://erpg.ru/forum...c.php?t=34");
objIE.Quit(); // Закрываем приложение
objIE = Неопределено;
По-моему приведенный код должен быть понятен без дополнительных объяснений, за исключением использования конструкции попытка...исключение...конецПопытки при заполнении имени пользователя на форме (элемент с именем username). Это делается для того, чтобы предотвратить ошибку системы в том случае, если поле username не существует.
На форуме используется система авторизации пользователей, и если пользователь был авторизирован ранее, то поле username не появляется на форме.
*************************************************************
вот фрагмент из книги:
****************************************
Анализ HTML-страниц
Среди множества методов и свойств Microsoft Internet Explorer есть весьма ценное свойство Document, которое позволяет получить доступ к содержимому объектной модели HTML документа (то есть возвращает ссылку на тот же объект, что и строка клиентского JScript: window.document). Это позволяет в свою очередь легко и просто разбирать HTML-документы безо всяких регулярных выражений.
Рассмотрим примеры использования Internet Explorer для анализа всех ссылок на HTML-странице, получая информацию с сайта автора www.erpg.ru (листинги 1.2 и 1.3). Данную информацию можно использовать, например, для автоматического определения наличия необходимой ссылки на свой сайт при обмене кнопками и баннерами (рекламными блоками) с дружественными сайтами.
ЛИСТИНГ 1.2
objIE = СоздатьОбъект("InternetExplorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.Navigate(Адрес);
Пока objIE.readyState<4 Цикл // Ждем пока она загрузится
КонецЦикла;
obj Doc = objIE.Document;
AllTags = objDoc.all.tags("A"); // Получаем всю коллекцию ссылок
Для Ном = 0 По AllTags.length-1 Цикл
Сообщить(AllTags.item(Ном).href);
КонецЦикла;
objIE.Quit(); // Закрываем приложение
objIE = "";
Применение технологий СОМ и ActiveX для версии 8.0
ЛИСТИНГ 1.3
objIE = Новый СОМОбъект("InternetExplorer.Application");
objIE.Visible = Ложь; // Отключаем видимость
objIE.Silent = Ложь;
objIE.Navigate(Адрес);
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится страница
КонецЦикла;
objDoc = objIE.Document;
Для каждого а Из objDoc.all.tags("А") Цикл // Перебираем все ссылки
Сообщить(a.href);
КонецЦикла;
objIE.Quit(); // Закрываем приложение
objIE = Неопределено;
Существует несколько важных отличий в реализации данной задачи на разных версиях системы "Ю.Предприятие".
1. Создание СОМ-объекта в версии 7.7 происходит с помощью конструкции СоздатьОбъект, а В версии 8.0 ? Новый СОМОбъект.
2. Конструкция objDoc.all.tags ("А") возвращает коллекцию СОМ объектов с ссылками HTML-страницы, заключенные в тег <А>, но версия 7.7 не позволяет напрямую работать с подобными коллекциями. Поэтому для этой версии сначала определяется количество элементов в коллекции с помощью структуры AiiTags. length, а только потом каждый элемент получаем методом ^ет(<номерэлемента>). В версии 8.0 обход элементов любой коллекции происходит с помощью конструкции для каждого...из...цикл...конеццикла, причем каждый полученный элемент цикла уже будет соответствовать очередному элементу коллекции СОМ объектов.
****************************************
... продолжение
*************************************************************
Работа с POST-запросами в HTML-формах
Данный тип HTTP-запросов чаще всего используется для транслирования сторонней информации в тех случаях, когда для доступа к ней требуется либо идентификация прав доступа (предварительный ввод имени пользователя и пароля), либо автоматическое заполнение определенной HTML-формы и отправки этой информации куда-либо, например, на форум.
Обычно, для передачи данных POST-запроса, во всех популярных языках программирования применяется метод Navigate объекта InternetExplorer со специальным параметром PostData. Однако, несмотря на это, его практическое использование в среде "1С:Предприятие" сопряжено с некоторыми трудностями. Дело в том, что данный аргумент должен иметь тип ? указатель на структуру SafeArray, который не поддерживается системой "1C:Предприятие" версии 7.7. Поэтому самым простым способом отправить POST-запрос посредством internetExpiorer.Application можно считать "эмуляцию" нажатия кнопки Submit (управляющая кнопка, используемая для передачи данных формы на сервер) на какой-либо реальной HTML-форме. Этот способ особенно интересен с учетом того, что многие скрипты, при обработке POST-запросов, как раз для защиты от подобной автоматизации, учитывают HTTP_REFERER, т. е. с какой страницы пришел запрос, и (или) выставляют специальные сессионные переменные или cookie на той странице, где находится форма, посылающая POST-запрос.
Листинги 1.4 и 1.5 демонстрируют примеры подобного программного эмулирования "интерактивного пользователя". При этом программа, написанная для версии 7.7, приведенная в листинге 1.4, демонстрирует заполнение HTML формы (рис. 1.1) форума, расположенного по адресу http://forum.erpg.ru.
; <usernarne>
<subject>
:<message>
|Кнопка "Отправить" в форме имеет имя <post>.
Заполнение HTML формы в 77
ЛИСТИНГ 1.4
objIE = СоздатьОбъект("InternetExpiorer.Application");
objIE.Visible = 0;
objIE.Silent = 0;
objIE.Navigate("http://erpg.ru/fоrum...reply&t=34")
Пока objIE.readyState<4 Цикл // Ждем пока она загрузится
КонецЦикла;
objDoc = obj IE. Document;
objForm = objDoc.forms(0); // Получаем первую форму в документе
Попытка
// Заполняем поле формы "Имя пользователя"
objForm.elements("username").value = СокрЛП(Имя);
Исключение
КонецПопытки;
objForm.elements("subject").value = СокрЛП(Тема);
objForm.elements("message").value = СокрЛП(Описание);
objIE.Visible = 1;
Сообщить("HTML-форма форума заполнена. Для отправки сообщения необходимо нажать кнопку Отправить в Internet Explorer.");
К сожалению, версия 7.7 не позволяет выполнить эмуляцию нажатия определенной кнопки HTML-формы из-за того, что система не опознает метод click о элемента формы, поэтому для окончательной отправки сообщения на форум пользователю необходимо вручную нажать на кнопку Отправить в окне Internet Explorer. Но если на форме имеется только одна кнопка, используемая по умолчанию, то для программной эмуляции ее нажатия можно ИСПОЛЬЗОВать метод submit: obj Form, submit О . Версия 8.0 системы "1С:Предприятие" более корректно работает с СОМ объектами, поэтому процедура отправки сообщения на форум полностью автоматизирована. Рассмотрим процедуру автоматического заполнения той же формы форума и эмуляции нажатия кнопки Отправить (см. листинг 1.5).
ЛИСТИНГ 1.5
objIE = Новый СОМОбъект("InternetExplorer.Application");
objIE.Visible = Ложь; // Отключаем видимость
objIE.Silent = Ложь;
objIE.Navigate("http://erpg.ru/forum...reply&t=34");
Сообщить("Идет загрузка страницы. Ждите...");
Пока objIE.readyState<4 Цикл // Ждем пока загрузится сраница
КонецЦикла;
objDoc = objIE.Document; // Получаем объект HTML-документ
objForm=objDoc.forms(0); // Получаем первую форму в документе
Попытка
// Заполняем поле формы "Имя пользователя"
objForm.elements("username").value = Имя;
Исключение
КонецПопытки;
objForm.elements("subject").value = Тема;
objForm.elements("message").value = Описание;
objForm.elements("post").click(); // Нажимаем на кнопку "Отправить"
Сообщить("Ваше сообщение отправлено на форум по адресу: " +
"http://erpg.ru/forum...c.php?t=34");
objIE.Quit(); // Закрываем приложение
objIE = Неопределено;
По-моему приведенный код должен быть понятен без дополнительных объяснений, за исключением использования конструкции попытка...исключение...конецПопытки при заполнении имени пользователя на форме (элемент с именем username). Это делается для того, чтобы предотвратить ошибку системы в том случае, если поле username не существует.
На форуме используется система авторизации пользователей, и если пользователь был авторизирован ранее, то поле username не появляется на форме.
*************************************************************
#8
Отправлено 05.06.2009, 01:19:40
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
854 http://www.fuel.tv/cheapclogs#1 clogs b19 http://www.folkd.com...dsbridalgowns#1 davids bridal dresses 09 66x http://www.kaboodle.com/davidsbridal#1 davids bridal 11 http://www.fuel.tv/davidsbridal#1 davids bridal gowns 222 http://www.kaboodle.com/buyativan#1 Ativan 196 http://www.maximumpc...r/andreysomov#1
079 http://www.fuel.tv/buyvicodinonline#1 buy vicodin ![:laugh:](http://vse.kz/public/style_emoticons/default/frown.gif)
![:-)](http://vse.kz/public/style_emoticons/default/biggrin.gif)
![:laugh:](http://vse.kz/public/style_emoticons/default/frown.gif)
MODERATORIAL [egoist]
Предупреждение за нарушение п.2.2.7 правил ЦТ
Сообщение отредактировал egoist: 05.06.2009, 10:18:55
#9
Отправлено 05.06.2009, 11:32:38
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0