Загрузка курсов Беларусь

1. Elvin1989 1 11.11.19 18:16 Сейчас в теме
Изучал типовую конфигурацию Бухгалтерия для Белоруссии и наткнулся на то что курсы валют в этой конфигурации загружаются с 1c-services.by при этом как я понял нужна активная подписка.Можете подсказать кто реально работал с этой конфигурацией дествительно ли это так или я что то не правильно понял?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alivan 11.11.19 21:13 Сейчас в теме
(1) Скорее всего да (трудно сказать за Белорусь). Такие сервисы 1с предоставляет бесплатно, но при наличии ИТС и часто проф.
Проще говоря, нужен логин и пароль, которые получаешь при подписке на ИТС.
Альтернатива - если есть бесплатный сервис писать самому код.
3. ice-net 19 12.11.19 08:12 Сейчас в теме
(1) В новых конфигурациях изменили с бесплатного на "платный".
Можете в старых УТ или Бух для "Беларуси" поискать обработку КурсыВалютНБРБ.

Процедура ЗагрузитьКурсыНБРБ() Экспорт
	Перем HTTP;
	
	Если НЕ ЗначениеЗаполнено(НачДата) ИЛИ НЕ ЗначениеЗаполнено(КонДата) Тогда
		ЗафиксироватьОшибку("Укажите даты");
		Возврат;
	КонецЕсли;
	
	Если Год(НачДата) <> Год(КонДата) Тогда
		ЗафиксироватьОшибку("Период не в рамках одного года");
		Возврат;
	КонецЕсли;	
	Если Год(НачДата)<2000 Тогда
		ЗафиксироватьОшибку("Курсы валют на сайте представлены начиная с 2000-го года");
		Возврат;
	КонецЕсли;
	//Если Началодня(КонДата) > НачалоДня(ТекущаяДата())Тогда
	//	Сообщить("Конечная дата должна быть не больше текущей");
	//	Возврат;
	//КонецЕсли; 	
	
	СтруктураПоиска = Новый Структура("ЗагружатьКурс", Истина);
	МассивВыбранныеВалюты =   СписокВалют.НайтиСтроки(СтруктураПоиска);
	Если МассивВыбранныеВалюты.Количество()>0 Тогда
		РегистрКурсыВалют = РегистрыСведений.КурсыВалют;
		ЗаписьКурсовВалют = РегистрКурсыВалют.СоздатьМенеджерЗаписи();
		// таблица с полученными курсами
		ТаблицаКурсы = Новый ТаблицаЗначений;
		ТаблицаКурсы.Колонки.Добавить("Период"   , ОбщегоНазначения.ПолучитьОписаниеТиповДаты(ЧастиДаты.Дата));
		ТаблицаКурсы.Колонки.Добавить("Валюта");
		ТаблицаКурсы.Колонки.Добавить("Кратность", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(10,0));
		ТаблицаКурсы.Колонки.Добавить("Курс"     , ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(10,4));
		
		ПустаяВалюта = Справочники.Валюты.ПустаяСсылка();
		
		СерверИсточник = "www.nbrb.by";    
		//ОбработкаПолученияФайлов = Обработки.ПолучениеФайловИзИнтернета.Создать();
		
		Адрес = "Services/XmlExRates.aspx?ondate=";   
		ВремКаталог = КаталогВременныхФайлов() + "tempKurs";
		СоздатьКаталог(ВремКаталог);
		Попытка
			УдалитьФайлы(ВремКаталог,"*.*");
		Исключение
			ЗафиксироватьОшибку("Ошибка блокировки временных файлов");
			Возврат;
		КонецПопытки;
		
		ОдинДень = 0;
		Пока (НачалоДня(НачДата)+ОдинДень) <= НачалоДня(КонДата) Цикл
			// очистка каталога
			Попытка
				УдалитьФайлы(ВремКаталог,"*.*");
			Исключение
				ЗафиксироватьОшибку("Ошибка блокировки временных файлов");
				Возврат;
			КонецПопытки;
			// адрес для запроса
			ДеньВФормате = Формат((НачалоДня(НачДата)+ОдинДень), "ДФ=MM/dd/yyyy");
			АдресДня = Адрес + ДеньВФормате;
			// получение файла
			ИмяВходящегоФайла = "" + ВремКаталог + "\" + ИмяФайла;
			СтрокаПараметраПолучения = АдресДня;
			Если ПолучитьФайлССервера(СерверИсточник, СтрокаПараметраПолучения, ИмяВходящегоФайла) <> Истина Тогда
				ЗафиксироватьОшибку("Не удалось получить интернет-ресурс. Курсы валют не будут загружены"); 
				Возврат;
			КонецЕсли;
			ВходящийФайл = Новый Файл(ИмяВходящегоФайла);
			Если НЕ ВходящийФайл.Существует() Тогда
				ЗафиксироватьОшибку("Не удалось получить данные. Курсы валют не будут загружены"); 
				Возврат;
			КонецЕсли;
			// читаем файл
			ЧтениеХМЛ = Новый ЧтениеXML;
			ЧтениеХМЛ.ОткрытьФайл(ИмяВходящегоФайла);
			
			ПостроительДОМ = Новый ПостроительDOM;
			ДокументДом = ПостроительДОМ.Прочитать(ЧтениеХМЛ);
			
			ЧтениеХМЛ.Закрыть();
			
			КорневойДОМ = ДокументДом.ЭлементДокумента;
			// читаем узлы Currency
			ЭтотУзел = "";
			Для Каждого Узел Из КорневойДОМ.ДочерниеУзлы Цикл
				Для Каждого УзелВалюта Из Узел.ДочерниеУзлы Цикл
					Если УзелВалюта.ТипУзла = ТипУзлаDOM.Элемент Тогда
						Если УзелВалюта.ИмяЭлемента = "NumCode" Тогда
							Код = УзелВалюта.ТекстовоеСодержимое;
							Валюта = Справочники.Валюты.НайтиПоКоду(Код);
							Если Валюта <> ПустаяВалюта Тогда
								НоваяСтрока = ТаблицаКурсы.Добавить();
								НоваяСтрока.Период = (НачалоДня(НачДата)+ОдинДень);
								НоваяСтрока.Валюта = Валюта;
								ЭтотУзел = Узел.ТекстовоеСодержимое;
							Иначе
								Продолжить;
							КонецЕсли;
						ИначеЕсли УзелВалюта.ИмяЭлемента = "Scale" И Узел.ТекстовоеСодержимое = ЭтотУзел Тогда
							НоваяСтрока.Кратность = Число(УзелВалюта.ТекстовоеСодержимое);
						ИначеЕсли УзелВалюта.ИмяЭлемента = "Rate" И Узел.ТекстовоеСодержимое = ЭтотУзел Тогда
							НоваяСтрока.Курс = Число(УзелВалюта.ТекстовоеСодержимое);
						Иначе
							Продолжить;
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
			КонецЦикла;
			
			// увеличим счетчик
			ОдинДень = ОдинДень + 60*60*24;
		КонецЦикла;
		
		УдалитьФайлы(ВремКаталог,"*.*");
		
		// запись курсов
		Для Каждого ВыбраннаяВалюта Из МассивВыбранныеВалюты Цикл
			МассивСтрок = ТаблицаКурсы.НайтиСтроки(Новый Структура("Валюта", ВыбраннаяВалюта.Валюта));
			Для Каждого СтрокаМассива Из МассивСтрок Цикл
				ЗаписьКурсовВалют.Валюта = СтрокаМассива.Валюта;
				ЗаписьКурсовВалют.Период = СтрокаМассива.Период;
				ЗаписьКурсовВалют.Прочитать();
				ЗаписьКурсовВалют.Валюта    = СтрокаМассива.Валюта;
				ЗаписьКурсовВалют.Период    = СтрокаМассива.Период;
				ЗаписьКурсовВалют.Курс      = СтрокаМассива.Курс;
				ЗаписьКурсовВалют.Кратность = СтрокаМассива.Кратность;
				ЗаписьКурсовВалют.Записать();	
			КонецЦикла;
		КонецЦикла;
		Сообщить("Загрузка курсов валют завершена");
	КонецЕсли;
	
КонецПроцедуры // ЗагрузитьКурсыНБРБ()


Функция ПолучитьФайлССервера( пСерверИсточник, пСтрокаПараметраПолучения, пИмяВходящегоФайла )
	
	Результат = Истина;
	
	HTTP = Новый HTTPСоединение(пСерверИсточник);
	
	Попытка
		HTTP.Получить(пСтрокаПараметраПолучения, пИмяВходящегоФайла);
	Исключение
		Результат = Ложь;
		ЗафиксироватьОшибку("Ошибка при получении файла с сервера: " + ПолучитьПричинуОшибки(ИнформацияОбОшибке()).Описание);
	КонецПопытки;	
	
	Возврат Результат;
	
КонецФункции
Показать
4. Elvin1989 1 18.05.20 15:35 Сейчас в теме
Всем спасибо, написал свою загрузку через API ЦБ Беларуси.
5. user1260909 09.12.20 15:31 Сейчас в теме
Здравствуйте, может кто-то мог бы подсказать, что необходимо изменить в обработке загрузки курсов валют с НБРБ, после того как они перешли на протокол https&&
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот