Перейти к содержимому

Фотография

Загрузка курса валют из инета.Автоматическая загрузка курса валют.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1
koderman

koderman
  • Свой человек
  • 763 сообщений
В 8.0 имееться обработочка КурсыВалютРБК которая позволяет автоматически загружать курсы валют из интернета. Синхронизация ведеться по коду валюты из справочника валют. Имеесться следующий кусок исходника:

Адрес1 = "tsv/cb/"; // в интервале
Адрес2 = "tsv/"; // по 1 дате
Если НачДата = КонДата Тогда // по 1 дате
Адрес = Адрес2;
ТМП = "/"+Формат(Год(КонДата),"ЧРГ=; ЧГ=0")+"/"+Формат(Месяц(КонДата),"ЧЦ=2;ЧДЦ=0;ЧВН=")+"/"+Формат(День(КонДата),"ЧЦ=2;ЧДЦ=0;ЧВН=");
Иначе // в интервале
Адрес = Адрес1;
ТМП = "";
КонецЕсли;
ИмяВходящегоФайла = "" + ВремКаталог + "\" + ИмяФайла;
СтрокаПараметраПолучения = Адрес + Прав(ТекВалюта.Код,3) + ТМП + ".tsv";
Если ОбработкаПолученияФайлов.ЗапроситьФайлыССервера(СерверИсточник, СтрокаПараметраПолучения, ИмяВходящегоФайла, HTTP) <> Истина Тогда
Сообщить("Не удалось получить ресурс для валюты " + СокрЛП(ТекВалюта.Наименование) + " (код " + ТекВалюта.Код + "). Курс для валюты не загружен.");
Продолжить;
КонецЕсли;

Как видно запрос файла который содержит обнавленный вписок курса находиться в рунете, соответственно содержит курсы для России. Есть ли у нас ресурс с которого можно загружать курсы валют Нац банка? Если есть выложите адрес, путь.
  • 0

#2
Семен Семеныч

Семен Семеныч

    Programmer turned brewing fanatic

  • В доску свой
  • 3 312 сообщений
Был когда то Карагандинский ресурс, что есть на данный момент х.з.
ЗЫ. Если мне не изменяет память, то такой вопрос уже задавался на форуме, поищи, мож че и попадеться
  • 0

#3
Обработка

Обработка
  • Свой человек
  • 567 сообщений
Мне тоже предстоит решить такую задачу. Если кто поделиться опытом я бы отблагодарил...
  • 0

#4
Черный запрос

Черный запрос
  • Свой человек
  • 976 сообщений
Можно ведь из Банк-Клиента загружать курсы валют.
  • 0

#5
Anashkin

Anashkin
  • Завсегдатай
  • 112 сообщений
Есть вариант анализа 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&#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&#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&#34;);
objIE.Quit(); // Закрываем приложение
objIE = Неопределено;
По-моему приведенный код должен быть понятен без дополнительных объяснений, за исключением использования конструкции попытка...исключение...конецПопытки при заполнении имени пользователя на форме (элемент с именем username). Это делается для того, чтобы предотвратить ошибку системы в том случае, если поле username не существует.
На форуме используется система авторизации пользователей, и если пользователь был авторизирован ранее, то поле username не появляется на форме.
*************************************************************
  • 0

#6
Черный запрос

Черный запрос
  • Свой человек
  • 976 сообщений

...восползоваться фигой опсанной в книге Андрея Михайлова "Ситемное программирование на 1С"...


Классная книжка, очень много полезного!
  • 0

#7
VISIT0R

VISIT0R
  • Гость
  • 29 сообщений
Если еще интересует ресурс с курсами, то есть один www.kurs.kz
  • 0

#8
Brookyharobap

Brookyharobap

    Читатель

  • Гость
  • 8 сообщений
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:

MODERATORIAL [egoist]
Предупреждение за нарушение п.2.2.7 правил ЦТ

Сообщение отредактировал egoist: 05.06.2009, 10:18:55

  • 0

#9
Кими

Кими
  • В доску свой
  • 2 252 сообщений
Получения курса валют, со страницы Национальго Банка РК
  • 0

#10
Черный запрос

Черный запрос
  • Свой человек
  • 976 сообщений
Курсы валют в формате XML с сайта НБ РК можно получать по следующему адресу:

www.nationalbank.kz/rss/get_rates.cfm?fdate=08.06.2009

где 08.06.2009 - это дата на которую необходимо получить курсы.

Сообщение отредактировал Черный запрос: 08.06.2009, 12:30:12

  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.