LaCastet
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AlekseyKRD Цитата: А это что: Код: // Процедура для загрузки курсов валют по определенному периоду. // // Параметры: // Валюты - любая коллекция - со следующими полями: // КодВалюты - числовой код валюты. // Валюта - ссылка на валюту. // НачалоПериодаЗагрузки - Дата - начало периода загрузки курсов. // ОкончаниеПериодаЗагрузки - Дата - окончание периода загрузки курсов. // // Возвращаемое значение: // Массив состояния загрузки - каждый элемент - структура с полями. // Валюта - загружаемая валюта. // СтатусОперации - завершилась ли загрузка успешно. // Сообщение - пояснение о загрузке (текст сообщения об ошибке или поясняющее сообщение). // Функция ЗагрузитьКурсыВалютПоПараметрам(Знач Валюты, Знач НачалоПериодаЗагрузки, Знач ОкончаниеПериодаЗагрузки, ПриЗагрузкеВозниклиОшибки = Ложь) СостояниеЗагрузки = Новый Массив; ПараметрыПолучения = Неопределено; ИмяФайлаДневногоКурса = Формат(ОкончаниеПериодаЗагрузки, "ДФ=/yyyy/MM/dd"); УстановитьПривилегированныйРежим(Истина); ИспользоватьАльтернативныйСервер = Константы.ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют.Получить(); УстановитьПривилегированныйРежим(Ложь); Если ИспользоватьАльтернативныйСервер Тогда СерверИсточник = "http://cbrates.rbc.ru"; Если НачалоПериодаЗагрузки = ОкончаниеПериодаЗагрузки Тогда ШаблонИмениФайла = СерверИсточник + "/tsv/%1" + ИмяФайлаДневногоКурса + ".tsv"; Иначе ШаблонИмениФайла = СерверИсточник + "/tsv/cb/%1.tsv"; КонецЕсли; Иначе СерверИсточник = "https://currencyrates.1c.ru/exchangerate/v1"; Если НачалоПериодаЗагрузки = ОкончаниеПериодаЗагрузки Тогда ШаблонИмениФайла = СерверИсточник + "/%1" + ИмяФайлаДневногоКурса + ".tsv"; Иначе ШаблонИмениФайла = СерверИсточник + "/%1.tsv"; КонецЕсли; УстановитьПривилегированныйРежим(Истина); ПараметрыПолучения = ПараметрыАутентификацииНаСайте(); УстановитьПривилегированныйРежим(Ложь); КонецЕсли; ВалютыЗагружаемыеИзИнтернета = ВалютыЗагружаемыеИзИнтернета(); Для Каждого Валюта Из Валюты Цикл Если ВалютыЗагружаемыеИзИнтернета.Найти(Валюта.Валюта) = Неопределено Тогда ПриЗагрузкеВозниклиОшибки = Истина; СтатусОперации = Ложь; ПоясняющееСообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Невозможно получить файл данных с курсами валюты %2 (код %1): |Курсы данной валюты не предоставляются.'"), Валюта.КодВалюты, Валюта.Валюта); ЗаписьЖурналаРегистрации(ИмяСобытияЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ПоясняющееСообщение); Иначе ФайлНаВебСервере = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИмениФайла, Валюта.КодВалюты); Результат = ПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(ФайлНаВебСервере, ПараметрыПолучения); Если Результат.Статус Тогда ПоясняющееСообщение = ЗагрузитьКурсВалютыИзФайла(Валюта.Валюта, Результат.Путь, НачалоПериодаЗагрузки, ОкончаниеПериодаЗагрузки) + Символы.ПС; УдалитьФайлы(Результат.Путь); СтатусОперации = ПустаяСтрока(ПоясняющееСообщение); Иначе ПоясняющееСообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Невозможно получить файл данных с курсами валюты %2 (код %1): |%3 |Возможно, нет доступа к веб-сайту с курсами валют, либо указана несуществующая валюта.'"), Валюта.КодВалюты, Валюта.Валюта, Результат.СообщениеОбОшибке); СтатусОперации = Ложь; ПриЗагрузкеВозниклиОшибки = Истина; КонецЕсли; КонецЕсли; СостояниеЗагрузки.Добавить(Новый Структура("Валюта,СтатусОперации,Сообщение", Валюта.Валюта, СтатусОперации, ПоясняющееСообщение)); КонецЦикла; Возврат СостояниеЗагрузки; КонецФункции | Как там может не быть, если курсы загружаются с РБК?
---------- Пиво — это еще одно доказательство того, что Господь любит нас и хочет, чтоб мы были счастливы! |
| Всего записей: 4566 | Зарегистр. 27-07-2005 | Отправлено: 17:50 26-08-2021 | Исправлено: LaCastet, 17:51 26-08-2021 |
|