Загрузка курсов любых валют. "Экзотические", не котируемые центробанками.

31.03.15

Учетные задачи - Банковские операции

С помощью этой обработки вы сможете наладить загрузку любых курсов валют в базу 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
ЗагрузкаКотировок.epf
.epf 8,40Kb
39
39
1 SM
Скачать Купить за 1 850 руб.
Загрузка котировок (Управляемая форма)
.epf 10,42Kb
56
56
1 SM
Скачать Купить за 1 850 руб.


С сайта ЦБ РФ с помощью веб-сервиса загружаются в базу все курсы за выбранный период по валютам в справочнике "Валюты". В справочнике "валюты" есть список валют. Эта обработка автоматически загрузит все курсы валют с ЦБ РФ, которые есть в справочнике. По "экзотическим" с сайта возьмёт только те, которые есть в списке справочника. Код обработки сделан только для AED, RSD. Если есть в справочнике - загрузятся. Нет - ничего не произойдёт. 

С сайта http://ru.exchange-rates.org/ загружаются валюты:

  • Арабский дирхам    AED (784)
  • Сербский динар      RSD (941)

Данную обработку можно легко расширить для загрузки любых других валют, не являющихся свободно конвертируемыми.

Пользователю будет полезна как быстрая и легкая загрузка валют с ЦБ РФ, по сравнению с типовой загрузкой с сайта РБК.

Программисту будет интересна не только как инструмент для загрузки, но и как пример работы с сайтами.
Используются технологии получения страничек сайта с помощью встроенного в Windows объекта работы с XML,WEB.
XHR    = Новый COMОбъект("MSXML2.XMLHTTP.6.0");
Обладает большими преимуществами, по сравнению с объектами, встроенными в платформу 1С.
Так для работы с RSS, либо XML (выдаваемым по ссылке с сайта) этот объект сразу предоставит "разобранный" объект DOM.
Не потребуется дополнительный разбор с помощью средств 1С.

В этой же обработке используется разбор странички HTML с помощью встроенных объектов в платформу 8.2.

Загрузка любых валют

См. также

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Программист Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Устали вручную дозаполнять и корректировать документы по банку после загрузки банковской выписки? С помощью правил обработки банковской выписки вы сможете автоматически определять правильный вид хозяйственной операции, заполнять расшифровку, аналитику платежа и многое другое.

15000 руб.

21.03.2023    9614    53    14    

51

Управление взаимоотношениями с клиентами (CRM) WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Подсистема интеграции Amo CRM с 1С: технические требования, порядок работы, возможности, доработки и обновления. Бесплатный период техподдержки - 1 месяц.

60000 руб.

07.05.2019    32008    62    41    

23

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13451    39    8    

15

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16861    15    19    

15

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    17094    46    49    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mednoe 29.05.20 14:01 Сейчас в теме
1C8_Бухгалтерия 30_текущий релиз - обработка работает ?
2. GVasiliy 22 06.06.20 22:59 Сейчас в теме
да, скорее всего должна работать
3. ico 08.06.20 10:00 Сейчас в теме
Не работает!
Функция ПолучитьДанныеInternet(СтрокаПараметраПолучения) в попытке на операторе XHR.send(null); вываливается на exception и возвращает нулевой курс. А данные на сайте есть.
4. ico 08.06.20 13:29 Сейчас в теме
XHR = Новый COMОбъект("MSXML2.XMLHTTP.6.0");
Этот объект точно в любой Винде? Не надо ничего доустанавливать?
6. GVasiliy 22 21.06.20 10:48 Сейчас в теме
(4)Да, он есть в любой винде, устанавливать ничего не надо
В любой винде есть аналоги:

xhr  = Новый COMОбъект("MSXML2.XMLHTTP");
xhr  = Новый COMОбъект("MSXML2.ServerXMLHTTP");
xhr  = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
xhr  = Новый COMОбъект("MSXML2.ServerXMLHTTP.6.0");
5. ico 09.06.20 20:08 Сейчас в теме
Посидел, поковырялся... Разобрался. Глянул на дату публикации, удивился - как это такое старенькое попало в рассылку новинок. И мысля шевельнулась... Протоколы у нас теперь другие. http теперь не в моде, надо смотреть в сторону https.
Только вот инструмент MSXML2.XMLHTTP.6.0 не прокатит. Он не про этот протокол.
Надо WinHttp.WinHttpRequest.5.1 использовать.

Таким образом функция получения данных с сайта надо написать так:
Функция ПолучитьДанныеInternet(Запрос) Экспорт
	
	XMLHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
	XMLHttp.Option(4, 13056); //intSslErrorIgnoreFlags
	Попытка
		XMLHttp.Open("GET", Запрос, Ложь);
	Исключение
		Ошибка = ОписаниеОшибки();
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Ошибочный OPEN "+Ошибка+"("+Запрос+")";
		Сообщение.Сообщить();
		Возврат Ложь;
	КонецПопытки;	
	//Отправка запроса      
	Попытка
		XMLHttp.Send();
		Текст	= XMLHttp.responseText;
	Исключение
	КонецПопытки;
	
	Возврат Текст;
	
КонецФункции
Показать

А процесс парсинга текста странички тоже по другому пишем (там идентификаторы тэгов на сайте убрали за какой-то невидимой надобностью):
Функция ПолучитьКурсВалютыССайта_RSD(ДатаЗагрузки) Экспорт
	
	СтрокаПараметраПолучения	= "https://ru.exchange-rates.org/Rate/RSD/RUB/"+Формат(ДатаЗагрузки,"ДФ=dd.MM.yyyy");
	
	Страничка	= ПолучитьДанныеInternet(СтрокаПараметраПолучения);		
	
	ЧтениеHTML = Новый ЧтениеHTML;
	ЧтениеHTML.УстановитьСтроку(Страничка);
	ПостроительDOM = Новый ПостроительDOM;
	ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
	
	Состояние(ДокументHTML.Заголовок);
	
	ТекстовоеСодержимое = ДокументHTML.ПолучитьЭлементПоИдентификатору("ratesTable").ТекстовоеСодержимое;
	НачалоТекстаКурса = СтрНайти(ТекстовоеСодержимое, "равно") + СтрДлина("равно ");
	КонецТекстаКурса = СтрНайти(ТекстовоеСодержимое,  " по состоянию");
	Курс = Число(Сред(ТекстовоеСодержимое, НачалоТекстаКурса, КонецТекстаКурса - НачалоТекстаКурса));
	
	Возврат Курс;
	
КонецФункции
Показать

Ну и в функции записи значения валюты кратность ставим равную 1.
Revan102; nikson_1987; +2 Ответить
8. Night_Trap 15.06.23 16:09 Сейчас в теме
(5)
ТекстовоеСодержимое = ДокументHTML.ПолучитьЭлементПоИдентификатору("ratesTable").ТекстовоеСодержимое;


Добрый день. В полученном документе не находит теперь "ratesTable". Возможно структуру таблицы изменили :((((

Есть возможность подсказать, куда копать?
Файл с ответом запроса вложу
ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
В ДокументHTML приходит такой текст.
Как получить данные, которые в строке 809?
Прикрепленные файлы:
Текст ДокументHTML.txt
7. Afanasyev.sv@mail.ru 02.11.22 18:37 Сейчас в теме
Добрый день,
уточню на всякий случай. С помощью обработки сейчас получится загружать Дирхам ОАЭ (AED)?
По последним данным ЦБ курсы по данной валюте они не предоставляют.
polyplastnm; +1 Ответить
9. Pank_in 2 09.11.23 11:27 Сейчас в теме
Добрый день! Колхозное решение по этой обработке:

в функции получения курса пишем-

Функция ПолучитьКурсВалютыССайта_AED(ДатаЗагрузки = Неопределено) Экспорт
	УстановитьПривилегированныйРежим(Истина);
	Если ДатаЗагрузки = Неопределено ИЛИ Формат(ДатаЗагрузки,"ДФ=dd.MM.yyyy") = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy") Тогда 
		Возврат 0;
		//ДатаЗагрузки = ТекущаяДата();	
	КонецЕсли;	
    СтрокаПараметраПолучения    = "https://ru.exchange-rates.org/Rate/AED/EUR/"+Формат(ДатаЗагрузки,"ДФ=dd.MM.yyyy");
    Страничка    = ПолучитьДанныеInternet(СтрокаПараметраПолучения);        
    ЧтениеHTML = Новый ЧтениеHTML;
    ЧтениеHTML.УстановитьСтроку(Страничка);
    ПостроительDOM = Новый ПостроительDOM;
    ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
	//ТекстовоеСодержимое = ДокументHTML.ПолучитьЭлементПоИдентификатору("ratesTable").ТекстовоеСодержимое; 
    //НачалоТекстаКурса = СтрНайти(ТекстовоеСодержимое, "равно") + СтрДлина("равно ");
    //КонецТекстаКурса = СтрНайти(ТекстовоеСодержимое,  " по состоянию");
    //Курс = Число(Сред(ТекстовоеСодержимое, НачалоТекстаКурса, КонецТекстаКурса - НачалоТекстаКурса));
	ТекстовоеСодержимое = ДокументHTML.ПоследнийДочерний.ТекстовоеСодержимое;
	НачалоТекстаКурса = СтрНайти(ТекстовоеСодержимое, "Курс AED/EUR на " + Формат(ДатаЗагрузки,"ДФ=dd.MM.yyyy")) + СтрДлина("Курс AED/EUR на " + Формат(ДатаЗагрузки,"ДФ=dd.MM.yyyy"));
	КонецТекстаКурса = СтрНайти(ТекстовоеСодержимое,  "Курс AED/EUR сегодня");   
	КурсТекст = СокрЛП(Сред(ТекстовоеСодержимое, НачалоТекстаКурса, КонецТекстаКурса - НачалоТекстаКурса));
	КурсТекст = СтрЗаменить(КурсТекст, "1 AED = ", "");
	КурсТекст = СтрЗаменить(КурсТекст, " EUR", "");
	Попытка
    	Курс = Число(КурсТекст);
	Исключение
		Возврат 0;
	КонецПопытки;
	Вал = Справочники.Валюты.НайтиПоКоду("784"); // AED
	НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Период.Установить(ДатаЗагрузки);
	НаборЗаписей.Отбор.Валюта.Установить(Вал);
	НовЗапись = НаборЗаписей.Добавить(); 
	НовЗапись.Период      	= ДатаЗагрузки;
	НовЗапись.Курс      	= Курс;
	НовЗапись.Кратность 	= 1; 
	НовЗапись.Валюта      	= Вал;
	НаборЗаписей.Записать(Истина);
	УстановитьПривилегированныйРежим(Ложь);
    Возврат Курс;
    
КонецФункции
Показать



Обязательно посмотрите что курс на текущую дату получить нельзя, т.к. ответ сайта "страница не найдена"
Прикрепленные файлы:
Оставьте свое сообщение