8.х ОБМЕН Выгрузка в xml курсов валют

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем zlodeev09, 26 май 2010.

  1. TopicStarter Overlay
    zlodeev09
    Offline

    zlodeev09

    Регистрация:
    26 май 2010
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток!
    Прошу помочь с выгрузкой в xml курсов валют:
    Нужно выгрузить валюту, код и ее курс на сегодняшний день в xml, запрос работает я проверял:
    вопросы:
    1. Как создать дерево в xml чтобы показывало код валюты далее наименование валюты и ниже курс
    2. как с запроса сохранить данные в xml

    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Режим = РежимДиалогаВыбораФайла.Сохранение;
    Диалог = Новый ДиалогВыбораФайла(Режим);
    Диалог.Заголовок = "Сохранение";
    Диалог.Фильтр = "XML-файл (*.xml)|*.xml";
    
    Если Диалог.Выбрать() Тогда
    Запись =Новый ЗаписьXML;
    Запись.ОткрытьФайл(Диалог.ПолноеИмяФайла);
    Запись.ЗаписатьНачалоЭлемента("Валюта");
    Запись.ЗаписатьНачалоЭлемента("Курс");
    
    Запрос = Новый Запрос; 
    МассивВалют = Новый Массив;  
    МассивВалют.Добавить(Валюта1);   
    МассивВалют.Добавить(Валюта2);         
    
    Запрос.УстановитьПараметр("МассивВалют", МассивВалют);   
    Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения); 
    
    Запрос.Текст = " 
    |ВЫБРАТЬ 
    |	ВалютыСрезПоследних.Валюта, 
    |	ВалютыСрезПоследних.Курс 
    |ИЗ 
    |	РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В (&МассивВалют)) КАК ВалютыСрезПоследних"; 
    
    ТаблицаКурсов = Запрос.Выполнить().Выгрузить();
    
    
    Запись.ЗаписатьКонецЭлемента();
    Запись.Закрыть();
    КонецЕсли;
    КонецПроцедуры
    
  2. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    поглядите книгу Средства интеграции и обмена данными в системе 1с предприятие 8
  3. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    zlodeev09 вы неправильно пишите запись xml. (и кстати где у вас в запросе поле Код валюты, вы ведь и его хотите писать). Будет приблизительно так:
    Код:
    Если Диалог.Выбрать() Тогда
    Запрос = Новый Запрос; 
    МассивВалют = Новый Массив;  
    МассивВалют.Добавить(Валюта1);   
    МассивВалют.Добавить(Валюта2);         
    
    Запрос.УстановитьПараметр("МассивВалют", МассивВалют);   
    Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения); 
    
    Запрос.Текст = " 
    |ВЫБРАТЬ 
    |    ВалютыСрезПоследних.Валюта, 
    |    ВалютыСрезПоследних.Курс 
    |ИЗ 
    |    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В (&МассивВалют)) КАК ВалютыСрезПоследних"; 
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    
    Запись =Новый ЗаписьXML;
    Запись.ОткрытьФайл(Диалог.ПолноеИмяФайла);
    
    Запись.ЗаписатьОбъявлениеXML();
    Запись.ЗаписатьНачалоЭлемента("Root");
    Запись.ЗаписатьКомментарий("Курсы валют");
    
    Пока Выборка.Следующий() Цикл
    
    Запись.ЗаписатьНачалоЭлемента("Валюта");
    Запись.ЗаписатьАттрибут("Код", Строка(Выборка.Код));
    
    Запись.ЗаписатьНачалоЭлемента("Наименование");
    Запись.ЗаписатьТекст(Строка(Выборка.Валюта));
    Запись.ЗаписатьКонецЭлемента();
    
    Запись.ЗаписатьНачалоЭлемента("Курс");
    Запись.ЗаписатьТекст(Строка(Выборка.Курс));
    Запись.ЗаписатьКонецЭлемента();
    
    Запись.ЗаписатьКонецЭлемента(); //Закрываем Валюта
    
    КонецЦикла;        
    
    Запись.ЗаписатьКонецЭлемента(); //Закрываем root
    
    Запись.Закрыть();
    КонецЕсли;
    
    
    
    Писал прямо, здесь. Проверите уж сами. Запрос не забудьте дописать перед запуском.

    И кста, по хорошему - надо сохранять в файл и дату курса, а то нафиг такой список курсов? (я бы добавил это как аттрибут к корневому элементу).
  4. TopicStarter Overlay
    zlodeev09
    Offline

    zlodeev09

    Регистрация:
    26 май 2010
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1

    Спасибо большое за ответ, тема закрыта.
  5. TopicStarter Overlay
    zlodeev09
    Offline

    zlodeev09

    Регистрация:
    26 май 2010
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Вот полный код, может кому понадобится)


    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Режим = РежимДиалогаВыбораФайла.Сохранение;
    Диалог = Новый ДиалогВыбораФайла(Режим);
    Диалог.Заголовок = "Сохранение";
    Диалог.Фильтр = "XML-файл (*.xml)|*.xml";
    
    
    Если Диалог.Выбрать() Тогда
    Запрос = Новый Запрос; 
    МассивВалют = Новый Массив;  
    
    ДатаПолучения = ТекущаяДата()+ 60 * 60 * 24;
    Валюта1 = Справочники.Валюты.НайтиПоНаименованию("EUR");
    Валюта2 = Справочники.Валюты.НайтиПоНаименованию("USD");
    
    МассивВалют.Добавить(Валюта1);   
    МассивВалют.Добавить(Валюта2);         
    Запрос.УстановитьПараметр("МассивВалют", МассивВалют);   
    Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения); 
    
    Запрос.Текст = "ВЫБРАТЬ
    |	ВалютыСрезПоследних.Валюта,
    |	ВалютыСрезПоследних.Курс,
    |	ВалютыСрезПоследних.Валюта.Код
    |ИЗ
    |	РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В (&МассивВалют)) КАК ВалютыСрезПоследних"; 
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    
    Запись =Новый ЗаписьXML;
    Запись.ОткрытьФайл(Диалог.ПолноеИмяФайла);
    
    Запись.ЗаписатьОбъявлениеXML();
    Запись.ЗаписатьНачалоЭлемента("Root");
    Запись.ЗаписатьАтрибут("Дата",Строка(ДатаПолучения));
    Запись.ЗаписатьКомментарий("Курсы валют");
    
    Пока Выборка.Следующий() Цикл
    
    Запись.ЗаписатьНачалоЭлемента("Валюта");
    Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Валюта.Код));
    
    Запись.ЗаписатьНачалоЭлемента("Наименование");
    Запись.ЗаписатьТекст(Строка(Выборка.Валюта));
    Запись.ЗаписатьКонецЭлемента();
    
    Запись.ЗаписатьНачалоЭлемента("Курс");
    Запись.ЗаписатьТекст(Строка(Выборка.Курс));
    Запись.ЗаписатьКонецЭлемента();
    
    Запись.ЗаписатьКонецЭлемента(); //Закрываем Валюта
    
    КонецЦикла;        
    
    Запись.ЗаписатьКонецЭлемента(); //Закрываем root
    
    Запись.Закрыть();
    КонецЕсли;
    
    КонецПроцедуры
    

Поделиться этой страницей