Не так давно передо мной встала задача, лёгкого и быстрого способа получения курса волют на момент формирования записи справочника, причём чтобы эти значения сохранились и уже спустя некоторое время с момента заведения записи. Так сказать посмотреть какой курс был на момент сделки. Решение пришло быстро. Добавить кнопку которая залезет в интернет и получит курс доллара. Вот что получилось, спасибо за это Александру Тишину!
Без долгих рассуждений и обсуждений перехожу сразу к коду кнопки:
// ссылка со страницей с курсами
URL = "http://www.cbr.ru/scripts/XML_daily.asp"
// может быть полно причин - которые вызовут ошибки, поэтому исключения поставим
FreeException()
ExceptionsOff()
// в интернет эксплорере загрузим страницу с курсами
objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = 0
objIE.Silent = 0
objIE.Navigate(URL)
while objIE.readyState<4
// Ждем пока загрузится
endwhile
// здесь должна быть XML
XMLText = Replace(objIE.Document.body.outerText; "- <"; "<")
objIE.Quit()
// теперь пройдемся по XML
XMLDoc = CreateObject("MSXml.DomDocument")
XMLDoc.loadXML(XMLText)
ValutesNode = XMLDoc.selectNodes("ValCurs/Valute")
i = 0
while i < ValutesNode.Length
// Код валюты
ValNode = ValutesNode.item(i).selectNodes("CharCode")
// евро
if ValNode.item(0).Text == "EUR"
Curs = ValutesNode.item(i).selectNodes("Value")
//Окно(Curs.item(0).Text)
eur = (Curs.item(0).Text)
//Окно(eur)
Object.РЕКВИЗИТ1 = eur // ВАШ РЕКВИЗИТ!
endif
// доллар
if ValNode.item(0).Text == "USD"
Curs = ValutesNode.item(i).selectNodes("Value")
// Окно("Курс доллора "& Curs.item(0).Text)
usd = (Curs.item(0).Text)
Object.РЕКВИЗИТ2 = usd // ВАШ РЕКВИЗИТ!
endif
i = i+1
endwhile
ExceptionsOn()
Вот так вот просто и легко получили курс без всяких заморочек, расписаний и прочего. При желании можно этот код и на событие "Открытие" поставить. Но это уже Ваше творческое поле =) Спасибо за внимание господа!
Николай,
большое спасибо за статью!
Каждый продавец гордится успешными Заказчиками. Спасибо за поводы для этого!
Николай, спасибо большое за решение.
А подскижите пожалуйста, как из данного XML документа вытащить дату, на которую устанавливается курс валюты?
Современный вариант:
Для обновления данных прямо в карточке документа или справочника, посмотрите как называется ваши реквизиты "Буквенный код" и "Курс валюты". и внесите правки в вышеуказанный код начиная со строки ValNode = ValutesNode.item(i).selectNodes("CharCode"):
Спасибо, за данную статью, очень выручила.
Правда долго разбирался с кодировкой XML-файла. Оказалось, что строчка в коде XMLDoc.LoadXML(ReadFile("C:\Temp\Cur.xml")) неточна и DomDocument неправильно определял кодировку. Изменил на
XMLDoc.Load("C:\Temp\Cur.xml")) и все стало отлично.
Авторизуйтесь, чтобы написать комментарий