///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ПрограммныйИнтерфейс

// Вызывается при начальном заполнении справочника валют для добавления указанных валют из классификатора.
//
// Параметры:
//  КодыВалют - Массив из Строка - цифровые коды добавляемых валют.
//  Валюты - Массив из СправочникСсылка.Валюты - выходной параметр. Добавленные валюты.
//  СтандартнаяОбработка - Булево - выходной параметр. Установить Ложь, если реализовано собственное заполнение.
//
Процедура ПриДобавленииВалютПоКоду(Знач КодыВалют, Валюты, СтандартнаяОбработка) Экспорт

	// Локализация
	СтандартнаяОбработка = Ложь;
	Валюты = Обработки.ЗагрузкаКурсовВалют.ДобавитьВалютыПоКоду(КодыВалют);
	// Конец Локализация

КонецПроцедуры

// Определяет техническую возможность загрузки курсов валют из Интернета
// (наличие такой функциональности в конфигурации).
//
// Параметры:
//  Значение - Булево
//
Процедура ПриОпределенииДоступностиЗагрузкиКурсовВалют(Значение) Экспорт

	// Локализация
	Значение = Истина;
	// Конец Локализация

КонецПроцедуры

// Определяет валюты, для которых есть техническая возможность загрузки курсов из Интернета
// (внешний ресурс предоставляет эти данные).
//
// Параметры:
//  КодыВалютЗагружаемыхИзИнтернета - Массив из Строка - выходной параметр.
//
Процедура ПриОпределенииКодовВалютЗагружаемыхИзИнтернета(КодыВалютЗагружаемыхИзИнтернета) Экспорт

	// Локализация
	КодыВалютЗагружаемыхИзИнтернета = Обработки.ЗагрузкаКурсовВалют.КодыВалютЗагружаемыхИзИнтернета();
	// Конец Локализация

КонецПроцедуры

// Вызывается при загрузке курсы валют на текущую дату.
//
// Параметры:
//  ПараметрыЗагрузки - Структура:
//   * НачалоПериода - Дата - начало периода загрузки.
//   * КонецПериода - Дата - конец периода загрузки.
//   * СписокВалют - ТаблицаЗначений:
//     ** Валюта - СправочникСсылка.Валюты
//     ** КодВалюты - Строка
//  АдресРезультата - Строка - адрес во временном хранилище для помещения результатов загрузки.
//
Процедура ПриЗагрузкеАктуальныхКурсов(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
	
	// Локализация
	ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ЗагрузкаКурсовВалют);
	Обработки.ЗагрузкаКурсовВалют.ЗагрузитьАктуальныйКурс(ПараметрыЗагрузки, АдресРезультата);
	// Конец Локализация
	
КонецПроцедуры

// См. РаботаСКлассификаторамиПереопределяемый.ПриЗагрузкеКлассификатора.
Процедура ПриЗагрузкеКлассификатора(Идентификатор, Версия, Адрес, Обработан, ДополнительныеПараметры) Экспорт

	// Локализация
	Обработки.ЗагрузкаКурсовВалют.ПриЗагрузкеКлассификатора(Идентификатор, Версия, Адрес, Обработан, 
		ДополнительныеПараметры);
	// Конец Локализация

КонецПроцедуры

// Добавляет новое дело в список на рабочем столе.
//
// Параметры:
//   ТекущиеДела - см. ТекущиеДелаСервер.ТекущиеДела.
//
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт

	// Локализация
	МодульТекущиеДелаСервер = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСервер");
	Если ОбщегоНазначения.РазделениеВключено() // В модели сервиса курсы обновляются автоматически.
		Или ОбщегоНазначения.ЭтоАвтономноеРабочееМесто()
		Или Не РаботаСКурсамиВалютСлужебный.ЕстьПравоИзмененияКурсовВалют()
		Или МодульТекущиеДелаСервер.ДелоОтключено("КлассификаторВалют") Тогда
		Возврат;
	КонецЕсли;
	
	КурсыАктуальны = РаботаСКурсамиВалют.КурсыАктуальны();
	
	// Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь
	// не делается проверка существования подсистемы.
	Разделы = МодульТекущиеДелаСервер.РазделыДляОбъекта(Метаданные.Обработки.ЗагрузкаКурсовВалют.ПолноеИмя());
	
	Для Каждого Раздел Из Разделы Цикл
		
		ИдентификаторВалюты = "КлассификаторВалют" + СтрЗаменить(Раздел.ПолноеИмя(), ".", "");
		Дело = ТекущиеДела.Добавить();
		Дело.Идентификатор  = ИдентификаторВалюты;
		Дело.ЕстьДела       = Не КурсыАктуальны;
		Дело.Представление  = НСтр("ru = 'Курсы валют устарели'");
		Дело.Важное         = Истина;
		Дело.Форма          = "Обработка.ЗагрузкаКурсовВалют.Форма";
		Дело.ПараметрыФормы = Новый Структура("ОткрытиеИзСписка", Истина);
		Дело.Владелец       = Раздел;
		
	КонецЦикла;
	// Конец Локализация
	
КонецПроцедуры

// Указывает коллекции объектов метаданных, содержащие формы ввода прописей для различных языков.
// Имя формы должно соответствовать шаблону ПараметрыПрописиВалюты_<код языка>. Например, "ПараметрыПрописиВалюты_en".
// 
// Для того, чтобы создать новую форму ввода прописей на нужном языке, необходимо скопировать
// форму ПараметрыПрописиВалюты_en, изменить в ее имени код языка и реализовать в ней заполнение параметров прописи на
// выбранном языке. См. описание параметра ПараметрыПредметаИсчисления в функции ЧислоПрописью в синтакс-помощнике.
// 
// Параметры:
//  КоллекцииФорм - Массив из КоллекцияОбъектовМетаданных - выходной параметр.
//
Процедура ПриОпределенииФормВводаПрописей(КоллекцииФорм) Экспорт

	// Локализация
	КоллекцииФорм.Добавить(Метаданные.Обработки.ЗагрузкаКурсовВалют.Формы);
	// Конец Локализация

КонецПроцедуры

// См. РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий.
Процедура ПриОпределенииНастроекРегламентныхЗаданий(Настройки) Экспорт

	// Локализация
	Обработки.ЗагрузкаКурсовВалют.ПриОпределенииНастроекРегламентныхЗаданий(Настройки);
	// Конец Локализация
	
КонецПроцедуры

// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
	
	// Локализация
	Обработки.ЗагрузкаКурсовВалют.ПриДобавленииОбработчиковОбновления(Обработчики);
	// Конец Локализация
	
КонецПроцедуры

// См. ИнтернетПоддержкаПользователейПереопределяемый.ПриИзмененииДанныхАутентификацииИнтернетПоддержки.
Процедура ПриИзмененииДанныхАутентификацииИнтернетПоддержки(ДанныеПользователя) Экспорт
	
	// Локализация
	Обработки.ЗагрузкаКурсовВалют.ПриИзмененииДанныхАутентификацииИнтернетПоддержки(ДанныеПользователя);
	// Конец Локализация
	
КонецПроцедуры

// См. РаботаВБезопасномРежимеПереопределяемый.ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам.
Процедура ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам(ЗапросыРазрешений) Экспорт
	
	// Локализация
	Если ОбщегоНазначения.РазделениеВключено() Тогда
		Возврат;
	КонецЕсли;
	
	МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме");
	ЗапросыРазрешений.Добавить(
		МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(Разрешения()));
	// Конец Локализация
	
КонецПроцедуры

#КонецОбласти

// Локализация

#Область СлужебныеПроцедурыИФункции

// Возвращает список разрешений для загрузки курсов валют из внешних ресурсов.
//
// Возвращаемое значение:
//  Массив
//
Функция Разрешения()
	
	Разрешения = Новый Массив;
	Обработки.ЗагрузкаКурсовВалют.ДобавитьРазрешения(Разрешения);
	Возврат Разрешения;
	
КонецФункции

#КонецОбласти

// Конец Локализация

