Добрый всем день.
Сам знаю что идея не новая, но уже неоднократно проверено - вечно актуальная.
Так как же нам справиться с этим легко и играючи?
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
Интересное решение! Хотелось бы уточнить пару моментов.
1. Кто нажимает кнопку "Обновить курс валюты" в справочнике "Валюты"? С учетом того, что используемых при расчетах валют может быть несколько, а курсы меняются каждый день, то выделенному сотруднику (ответственному) придется каждый день нажимать на кнопку "Обновить курс валюты" в нескольких справочниках. Были ли мысли сделать некий сценарий, который каждый день подгружал бы обновленные курсы валют, чтобы снять ответственность с выделенного сотрудника?
2. Ещё хотелось бы узнать сценарий использования кнопки "Обновить курс валюты" в карточке "Заказа на оплату товаров и услуг". Правильно ли я понимаю, что при создании заказа курс валюты заполняется сразу автоматически последним найденным в справочнике "Валюты" значением? В каком случае будет использоваться кнопка, по которой происходит обновление курса?
Евгения, отвечаю наоборот:
2. У нас в Банке, есть планово-экономическое управление, которому очень важно, чтобы сумма в рублях, была максимально-точной на день их визирования (в карточке документа: Заказ на оплату), собственно для них, кнопка и делалась, чтобы они могли перед самим согласованием, получить актуальные сведения. Собственно предложенное решение закрывает эту задачу полностью и на общий скрипт мы время не тратили, хотя да - было бы логичнее подвязать выполнение данного сценария к тому же мониторингу.
1. Курсы валюты в справочнике были реализованы давно и раньше их актуализировали только до десятков (не 67,3546 а просто 70), чтобы при работе с предварительными значениями, было понимание порядка суммы в рублях (больше 1 млн. или меньше). Но при реализации обновления для карточки Заказов, эта кнопка "приехала" и в справочник, чтобы и там сильно не заморачиваться.
Мы работаем с 4 валютами, поэтому необходимости лопатить весь справочник у нас не было. Но это не значит, что мы этого никогда не сделаем. Была бы поставлена задача и выделено время!
Тарас, поняла вас, спасибо за ответы!
Другие статьи по теме:
Сценарий "Загрузка курсов валют с сайта ЦБРФ"
Курс доллара/евро по кнопке
DIRECTUM и WEB-сервисы (часть 3)
1. Курс доллара/евро по кнопке - я там уже наследил, так как оттуда и начал.
2. DIRECTUM и WEB-сервисы (часть 3) - слишком обширно и сложно, я предложил вариант проще и более точечный.
3. Сценарий "Загрузка курсов валют с сайта ЦБРФ" - его я так и не смог заставить работать.
А вообще - я же не принуждаю Все варианты достойны жизни!
Авторизуйтесь, чтобы написать комментарий