Надоели меняющиеся курсы валют? Решение - кнопка в карточке!

Опубликовано:
4 апреля в 10:41
  • 5

Добрый всем день.

Сам знаю что идея не новая, но уже неоднократно проверено - вечно актуальная. 

Так как же нам справиться с этим легко и играючи?

1. Нам понадобится справочник с валютами, для получения из него Трехбуквенного кода валюты:

 SprCur = СпрРекв("Currency";Object.Currency;"Код")

Справочник валют зовется "Currency", а Искомый "Код" это и есть буквенное обозначение валюты.

2. Создаем новое действие в карточке того документа, где нам эта кнопка нужна (кстати для справочника это тоже вполне годится, как на скриншоте выше).

3. Заполняем наше действие кодом:

 // ссылка со страницей с курсами
 URL = "http://www.cbr.ru/scripts/XML_daily.asp"
 
   HTTP = CreateObject("MSXML2.XMLHTTP")
   oADOStream = CreateObject("ADODB.Stream")
   oADOStream.Mode = 3
   oADOStream.Type = 1 
   HTTP.Open("Get"; URL; FALSE)
   oADOStream.Open() 
   HTTP.Send()              
   oADOStream.Write(HTTP.responseBody)
     if ФайлСуществует("C:\Temp\Cur.xml") // как правило на эту папку у всех прав достаточно
        УдалитьФайл("C:\Temp\Cur.xml")    // Но вы можете выбрать любую другую
     endif
   oADOStream.SaveToFile("C:\Temp\Cur.xml")
   
   XMLDoc = CreateObject("MSXML2.DomDocument")
   XMLDoc.LoadXML(ReadFile("C:\Temp\Cur.xml"))  
   XMLText = Replace(XMLDoc.Text; "- <"; "<")
 
 ValutesNode = XMLDoc.selectNodes("ValCurs/Valute")
 i = 0
 SprCur = СпрРекв("Currency";Object.Currency;"Код") // вот тут и нужен справочник и "Код"        
 while i < ValutesNode.Length 
   // Ищем нужный нам Код валюты в документе и 
   ValNode = ValutesNode.item(i).selectNodes("CharCode")
   if ValNode.item(0).Text == СжПроб(SprCur)        // тут мы еще и лишние пробелы удаляем
     Curs = ValutesNode.item(i).selectNodes("Value") // Ищем
     val = (Curs.item(0).Text) // подбираем
     Object.KursValuty= val // это наш реквизит Курса валюты "KursValuty"
   endif
   i = i+1 // идем дальше
 endwhile
 УдалитьФайл("C:\Temp\Cur.xml") // убирать за собой, как минимум культурно
// Готово! Вы восхитительны!

В целом, данное действие будет быстренько выхватывать из интернета курсы валют с сайта ЦБ РФ и записывать их в файл, потом искать в нем нужный нам курс и удалять его. Трудозатраты - минимальны, время на работу - минорно.

По сути дела - это все! Теперь нам надо привязать действие к кнопке (можно кнопку с изображением) и все!
 

Измененный Справочник - прилагаю: Currency.rar

11
Подписаться

Комментарии

Интересное решение! Хотелось бы уточнить пару моментов. 

1. Кто нажимает кнопку "Обновить курс валюты" в справочнике "Валюты"? С учетом того, что используемых при расчетах валют может быть несколько, а курсы меняются каждый день, то выделенному сотруднику (ответственному) придется каждый день нажимать на кнопку "Обновить курс валюты" в нескольких справочниках. Были ли мысли сделать некий сценарий, который каждый день подгружал бы обновленные курсы валют, чтобы снять ответственность с выделенного сотрудника?

2. Ещё хотелось бы узнать сценарий использования кнопки "Обновить курс валюты" в карточке "Заказа на оплату товаров и услуг". Правильно ли я понимаю, что при создании заказа курс валюты заполняется сразу автоматически последним найденным в справочнике "Валюты" значением? В каком случае будет использоваться кнопка, по которой происходит обновление курса?

Евгения, отвечаю наоборот:

2. У нас в Банке, есть планово-экономическое управление, которому очень важно, чтобы сумма в рублях, была максимально-точной на день их визирования (в карточке документа: Заказ на оплату), собственно для них, кнопка и делалась, чтобы они могли перед самим согласованием, получить актуальные сведения. Собственно предложенное решение закрывает эту задачу полностью и на общий скрипт мы время не тратили, хотя да - было бы логичнее подвязать выполнение данного сценария к тому же мониторингу.

1. Курсы валюты в справочнике были реализованы давно и раньше их актуализировали только до десятков (не 67,3546 а просто 70), чтобы при работе с предварительными значениями, было понимание порядка суммы в рублях (больше 1 млн. или меньше). Но при реализации обновления для карточки Заказов, эта кнопка "приехала" и в справочник, чтобы и там сильно не заморачиваться.

Мы работаем с 4 валютами, поэтому необходимости лопатить весь справочник у нас не было. Но это не значит, что мы этого никогда не сделаем. Была бы поставлена задача и выделено время! 

Тарас, поняла вас, спасибо за ответы!

Сам знаю что идея не новая, но уже неоднократно проверено - вечно актуальная. 

Другие статьи по теме:

Сценарий "Загрузка курсов валют с сайта ЦБРФ"

Курс доллара/евро по кнопке

DIRECTUM и WEB-сервисы (часть 3)

Анатолий Придыбайло: обновлено 04.04.2018 в 13:43

1. Курс доллара/евро по кнопке - я там уже наследил, так как оттуда и начал.

2. DIRECTUM и WEB-сервисы (часть 3) - слишком обширно и сложно, я предложил вариант проще и более точечный.

3. Сценарий "Загрузка курсов валют с сайта ЦБРФ" - его я так и не смог заставить работать.

А вообще - я же не принуждаю  Все варианты достойны жизни!

Авторизуйтесь, чтобы написать комментарий