Имя: Пароль:
1C
1С v8
Где скачать файл с курсами от российского банка?
0 K1RSAN
 
18.01.23
07:55
Произошел такой эксперимент, как создание базы казахстанской конфигурации, но валюта рег. учета - российская.
И теперь надо найти источник курсов валют относительно рубля. Сама конфигурация предлагает загружать курс через файл, а вот где его достать - непонятно.
1 Гипервизор
 
18.01.23
08:08
(0) Из файла с каким расширением предлагает загружать?
2 Смотрящий
 
18.01.23
08:08
С РБК какого нить взять
3 Bigbro
 
18.01.23
08:11
4 K1RSAN
 
18.01.23
08:15
(1)
    ЧтениеXML = Новый ЧтениеXML();
    ЧтениеXML.ОткрытьФайл(ПолноеИмяФайла);
    ПостроительDOM = Новый ПостроительDOM();
    
    Попытка
        ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    Исключение
        ДокументDOM = Неопределено;
    КонецПопытки;

Подозреваю, что xml
5 K1RSAN
 
18.01.23
08:16
(3) нашел там Динамику курса валют, но даёт скачать только в dbf или xls. Конечно, через загрузку данных из табличного документа получилось загрузить, но это не для ежедневной загрузки
6 Мимохожий Однако
 
18.01.23
08:25
Откуда взять ясно. В чём вопрос?
7 K1RSAN
 
18.01.23
08:27
(6) Просветите? Желательно предоставить пользователю возможность качать файл в формате, который будет корректно обработан типовой обработкой загрузки курсов валют. В том числе при загрузке за длительный период (за месяц). Пока нашел возможность только скачать в форма xls или dbf.
8 Serg_1960
 
18.01.23
08:31
Convert DBF to XML
9 Мимохожий Однако
 
18.01.23
08:32
(7) Просвети для начала что за конфигурация. Зачем пользователю качать файлы? Логичнее загружать данные с выбранного ресурса сразу. В типовых конфигурациях это реализовано.
10 K1RSAN
 
18.01.23
08:34
(9) Конфигурация БК для Казахстана. В типовой версии там реализовано скачивание с казахстанского ресурса курсов относительно казахстанского тенге. Нужно получить относительно рубля - сама конфигурация предлагает загружать через файлы.
11 Serg_1960
 
18.01.23
08:40
Центральный банк Российской федерации, Технические ресурсы -> Получение данных, используя XML
https://cbr.ru/development/SXML/
12 K1RSAN
 
18.01.23
09:10
(11) Спасибо
13 mikecool
 
18.01.23
09:19
(0) мы как то казахскую бухню развернули - так не могли туда тенге загрузить... пришлось изобретать
14 K1RSAN
 
18.01.23
13:16
Можете подсказать, как в БП обрабатывают документ DOM. в КЗ версии
    Разыменователь = Новый РазыменовательПространствИменDOM("", "");    
    ВсеКурсыВалют = ДокументDOM.ВычислитьВыражениеXPath("/rates/item", ДокументDOM, Разыменователь);        

<rates>
  <generator>Alternate RSS Builder</generator>
  <title>Official exchange rates of National Bank of Republic Kazakhstan</title>
  <link>www.nationalbank.kz</link>
  <description>Official exchange rates of National Bank of Republic Kazakhstan</description>
  <copyright>www.nationalbank.kz</copyright>
  <date>01.01.2022</date>
  <item>
    <fullname>АВСТРАЛИЙСКИЙ ДОЛЛАР</fullname>
    <title>AUD</title>
    <description>313.79</description>
    <quant>1</quant>
    <index>UP</index>
    <change>+0.57</change>
  </item>
</rates>

Структура XML слегка другая в РФ версии
<ValCurs ID="R01235" DateRange1="02.03.2001" DateRange2="14.03.2001" name="Foreign Currency Market Dynamic">
  <Record Date="02.03.2001" Id="R01235">
    <Nominal>1</Nominal>
    <Value>28,6200</Value>
  </Record>
  <Record Date="03.03.2001" Id="R01235">
    <Nominal>1</Nominal>
    <Value>28,6500</Value>
  </Record>
</ValCurs>
15 PLUT
 
18.01.23
13:33
(14)
попробуй фабрикой прочитать XML, структуру полей в фабрике в отладчике можно увидеть.

пример творчески допили напильником (напиши заново исходя из твоей структуры)

//Курс EUR ЦБ: ДатаКурса, КурсЦБ

    Чтение        = Новый ЧтениеXML;
    Чтение.ОткрытьФайл("http://www.cbr.ru/scripts/XML_daily.asp");
    Фабрика        = Новый ФабрикаXDTO;
    

        
        ОбъектXDTO    = Фабрика.ПрочитатьXML(Чтение);
        
        СоответствиеКурсов = Новый Соответствие();
        
        СтрДатаКурса     = СтрЗаменить(ОбъектXDTO.Date, ".", Символы.ПС);
        ДатаКурса         = Дата(    Число(СтрПолучитьСтроку(СтрДатаКурса, 3)),
                                Число(СтрПолучитьСтроку(СтрДатаКурса, 2)),
                                Число(СтрПолучитьСтроку(СтрДатаКурса, 1))
                              );
        
                
        Для Каждого Valute Из ОбъектXDTO.Valute Цикл
            
            Если Valute["CharCode"] = "EUR" Тогда
                КурсЦБ = Число(Valute["Value"]);
            КонецЕсли;
        
        КонецЦикла;