Загрузка курсов валют с сайта https://bank.gov.ua для всех валют справочника Валюты (работает в 8.2 и 8.3 - обычные формы)

Обработки - Обработка справочников

загрузка Украина валюты курсы

6
Обработка выполняет загрузку курсов с сайта https://bank.gov.ua за указанный период для всех валют с корректными кодами в справочнике "Валюты". Работает в 8.2 и 8.3. Для работы в 8.2 используется COMОбъект "MSXML2.ServerXMLHTTP.6.0" или ".4.0". Может быть использована в качестве замены существующей обработки загрузки курсов валют с сайта finance.ua. Отсутствует интерфейс выбора валют. Заполняются автоматически курсы для валют, которые будут найдены в справочнике Валют по коду из данных с сайта. В рабочей конфигурации данная обработка используется для автоматической загрузки курсов валют путем её выполнения из командного файла задания Планировщика Windows.

Предистория

11.10.2018 стал очень знаменательным днём, т.к. именно в этот день перестала правильно работать основная обработка загрузки курсов валют с сайта finance.ua. Эта обработка входит во все типовые конфигурации 1С Украины. В своё время она была "революцией" онлайн получения данных из Интернета. Но пришло время для ревизии.

В результате проведенного анализа, оказалось, что НБУ на своем сайте уже давно имеет описание API, который можно использовать для получения курсов валют за любую дату (с какого-то момента 2016 года, если быть точным). Вся информация находится здесь: https://bank.gov.ua/control/uk/publish/article?art_id=38441973

Поэтому и возникла мысль об изменении обработки и переходе на получение данных из "первоисточника".

Описание предлагаемой обработки

Обработка была разработана для замены той, что входит в типовые конфигурации. Главный концепт - это минимизация интерфейса и сообщений для пользователя.

Практика показала, что пользователи используют обработку исключительно для того, чтобы автоматически заполнять курсы валют для всех элементов из справочника Валюты. Никаких дополнительных настроек никто не хочет делать. Поэтому, в новой обработке сейчас нет выбора валют и нет вывода никакой информации. Результаты пользователь и так увидит в регистре сведений. Все, что ему необходимо - это выбрать период (или не выбирать) и нажать кнопку "Загрузка".

Особенности

НБУ сейчас использует защищенный протокол. Для 8.3 все прекрасно работает штатными средствами. Для 8.2 - всё оказалось нет так уж и просто.
Определение версии программы производится обычным методом по данным из СистемнойИнформации.

	// определяем версию программы - если 8.2 - тогда другая методика
	СисИнфо = Новый СистемнаяИнформация;
	СтрРез = Неопределено;
	
	Если Лев(СисИнфо.ВерсияПриложения, 3) >= "8.3" Тогда
		СтрРез = ПолучитьОтветСКурсамиВалютНаДату1С(НаДату);
	КонецЕсли;
	
	Если СтрРез = Неопределено Тогда
		// пробуем старым методом
		СтрРез = ПолучитьОтветСКурсамиВалютНаДату(НаДату);
	КонецЕсли;

Для получения данных с сайта в 8.2 использован COMОбъект "MSXML2.ServerXMLHTTP.6.0" или "MSXML2.ServerXMLHTTP.4.0".

    //пытаемся определить версию MSXML
	Версия = "6";
	Попытка
		ХТТП = Новый COMОбъект("MSXML2.ServerXMLHTTP."+Версия+".0");
	Исключение   
		Попытка
			Версия = "4";
			ХТТП = Новый COMОбъект("MSXML2.ServerXMLHTTP."+Версия+".0");    
		Исключение   
			Сообщить(ОписаниеОшибки(),"!");
			Сообщить("Для работы загрузки данных курсов валюты необходима MSXML не ниже 4.0","!");
			Возврат "";
		КонецПопытки;
	КонецПопытки;
	
	ХТТП.open ("GET", Адрес, Ложь); 
	ХТТП.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	ХТТП.send();

Обработка прекрасно себя показала на версиях Бухгалтерии Украины 1.2 в качестве полной замены типовой обработки ЗагрузкаКурсовВалют. Поэтому, в её модуле оставлены методы, которые используются в типовой конфигурации. На других версиях - не тестировалась. Автоматическая загрузка курсов валют при старте тоже работает, только теперь её работы пользователь никак не видит. И ему нет необходимости постоянно закрывать надоедливое окно открывающегося сайта после загрузки курсов в 1С.
Все происходит благодаря следующему коду в модуле обычного приложения:

В модуле обработки оставлены следующие экспортные методы:


Процедура ЗагрузитьКурсыПоНастройкам() Экспорт
	ЗагрузитьКурсыНаДату();
КонецПроцедуры

Функция КодДоступаАктуален() Экспорт
	Возврат Истина;
КонецФункции

Также добавлена функция автоматической установки необходимых параметров для возможности автоматического старта обработки при старте системы:

При этом, кроме установки в Истина записи регистра "НастройкиПользователей" с настройкой "Загружать актуальные курсы валют при запуске системы" для текущего пользователя, обработка также запишет параметр "ЗагружатьЕжедневно" в константу "НастройкиЗагрузкиКурсовВалют".

    // теперь константа НастройкиЗагрузкиКурсовВалют
	Настройки = Новый Структура("ЗагружатьЕжедневно", Истина);
	ХранилищеНастроек = Новый ХранилищеЗначения(Настройки);
	Попытка
		Константы.НастройкиЗагрузкиКурсовВалют.Установить(ХранилищеНастроек);
	Исключение
		Сообщить("Не удалось записать значение ""ЗагружатьЕжедневно"" в константу ""НастройкиЗагрузкиКурсовВалют""", СтатусСообщения.Важное);
	КонецПопытки;

Проверить результат можно в настройках текущего пользователя:

Процедура загрузки обработки в конфигурацию

Данная обработка может быть подключена в справочник внешних обработок и отчетов. Но можно выполнить и замену типовой обработки в конфигураторе. Чтобы это сделать необходимо осуществить простые и известные любому администратору 1С действия:

Считаю, что также будет полезным выключить и поддержку у данной обработки:

Заключение

Очень надеюсь, что данная обработка станет Вам полезным инструментом.

А также, желаю всем замечательных творческих успехов! ("ЖТУ" - (с)Л.М.)

6

Скачать файлы

Наименование Файл Версия Размер
Загрузка курсов валют с сайта https://bank.gov.ua для всех валют справочника Валюты. Возможность установки необходимых параметров для автозапуска при старте системы.
.epf 14,50Kb
12.10.18
0
.epf 1.2. 14,50Kb Скачать

См. также

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение