Автоматическое обновление валют 1С-Битрикс

7 Comments

Продолжаю выкладывать всякие полезные скрипты для работы с 1с-Битрикс. На этот раз это автоматическое обновление курсов валют. Откуда он у меня я уже не помню, по моему  на форуме нашел.  Там все довольно просто, по этому выкладываю как есть. Это полноценный агент, можете ложить в php_interface и добавить агента. GetCurrencyMy();


<?
function GetCurrencyMy()
{
global $USER;
$USER = new CUser;
$strQueryText = QueryGetData("www.cbr.ru",80,"/scripts/XML_daily.asp","",$error_number,$error_text);
if(strlen($strQueryText)>0)
{
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/xml.php");
$strQueryText = eregi_replace("<!DOCTYPE[^>]{1,}>", "", $strQueryText);
$objXML = new CDataXML();
$objXML->LoadString($strQueryText);
$arData = $objXML->GetArray();
if(is_array($arData) &amp;amp;amp;&amp;amp;amp; count($arData["ValCurs"]["#"]["Valute"])>0)
{
$cdate = $arData["ValCurs"]["@"]["Date"]."<br>";
for ($j1 = 0; $j1<count($arData["ValCurs"]["#"]["Valute"]); $j1++)
{
if(CModule::IncludeModule("currency"))
{
$arCurrValue = str_replace(",", ".", $arData["ValCurs"]["#"]["Valute"][$j1]["#"]["Value"][0]["#"]);
$curr = DoubleVal($arCurrValue);
$arFields = array(
"RATE" => round($curr, 2),
"RATE_CNT" => $arData["ValCurs"]["#"]["Valute"][$j1]["#"]["Nominal"][0]["#"],
"CURRENCY" => $arData["ValCurs"]["#"]["Valute"][$j1]["#"]["CharCode"][0]["#"],
"DATE_RATE" => $cdate
);
CCurrencyRates::Add($arFields);
}
}
}
}
return "GetCurrencyMy();";
}

?>

И еще вот что есть...

  • http://stalker-fprg.ru Бахарев Евгений (StalkerLegend)

    Большое спасибо за скрипт, очень выручил.

  • http://yunaliev.ru remitmaster

    Рад что пригодился.  Пользуйтесь…

  • saturnplanet

    Сделал всё как написано однако выдаёт ошибку
    Parse error: syntax error, unexpected ‘;’ in /var/www/bitrix/php_interface/init.php on line 14
    Подскажите, как исправить.

    • http://yunaliev.ru remitmaster

      не хватает знака ; в конце строки

      • saturnplanet

        Я тоже так подумал, но после того как знак прописал ничего не изменилось. Очистил кеш сайта и кэш браузера, перезапустил apache и nginx, всё бесполезно, та же ошибка выскакивает. Что ещё можно сделать?

        • http://yunaliev.ru remitmaster

          Должно было на мыло тебе еще уйти, вот если что это попробуй http://pastebin.com/Q4NJDmMD

          • saturnplanet

            На мыло ничего кроме последней ссылки не пришло.
            Новый код (http://pastebin.com/Q4NJDmMD) ошибку не выдаёт, функция через агента запускается, но курсы валют на /bitrix/admin/currencies_rates.php не появляются.