#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Валюты.РежимВыбора = Параметры.РежимВыбора;
ДатаКурса = НачалоДня(ТекущаяДатаСеанса());
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ДатаКурса", ДатаКурса);
ИзменяемыеПоля = Новый Массив;
ИзменяемыеПоля.Добавить("Курс");
ИзменяемыеПоля.Добавить("Кратность");
ИзменяемыеПоля.Добавить("ОтносительныйКурс");
Список.УстановитьОграниченияИспользованияВГруппировке(ИзменяемыеПоля);
Список.УстановитьОграниченияИспользованияВПорядке(ИзменяемыеПоля);
Список.УстановитьОграниченияИспользованияВОтборе(ИзменяемыеПоля);
ДоступноИзменениеВалют = РаботаСКурсамиВалютСлужебный.ЕстьПравоИзмененияКурсовВалют();
ДоступнаЗагрузкаКурсов = РаботаСКурсамиВалют.ДоступнаЗагрузкаКурсовВалют() И ДоступноИзменениеВалют;
Элементы.ФормаПодборИзКлассификатора.Видимость = ДоступнаЗагрузкаКурсов;
Элементы.ФормаЗагрузитьКурсыВалют.Видимость = ДоступнаЗагрузкаКурсов;
Если ДоступноИзменениеВалют Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ФормаПодборИзМеждународногоКлассификатора",
"Видимость",
Не ДоступнаЗагрузкаКурсов);
КонецЕсли;
Если ДоступнаЗагрузкаКурсов и ДоступноИзменениеВалют Тогда
Элементы.ГруппаЗагрузитьКурсыВалют.Видимость = Истина;
Иначе
Элементы.ГруппаЗагрузитьКурсыВалют.Видимость = Ложь;
КонецЕсли;
Если Не ДоступнаЗагрузкаКурсов Тогда
Если ДоступноИзменениеВалют Тогда
Элементы.СоздатьВалюту.Заголовок = НСтр("ru = 'Создать'");
КонецЕсли;
Элементы.Создать.Вид = ВидГруппыФормы.ГруппаКнопок;
КонецЕсли;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют") Тогда
Элементы.Валюты.ИзменятьСоставСтрок = Ложь;
Элементы.ФормаПодборИзКлассификатора.Видимость = Ложь;
Элементы.ФормаЗагрузитьКурсыВалют.Видимость = Ложь;
КонецЕсли;
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Элементы.Валюты.Обновить();
Элементы.Валюты.ТекущаяСтрока = РезультатВыбора;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_КурсыВалют"
Или ИмяСобытия = "Запись_ЗагрузкаКурсовВалют"
Или ИмяСобытия = "Запись_ОтносительныеКурсыВалют"
Или ИмяСобытия = "Запись_ЗагрузкаОтносительныхКурсовВалют"Тогда
Элементы.Валюты.Обновить();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВалюты
&НаСервереБезКонтекста
Процедура ВалютыПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Перем ДатаКурса;
Если Не Настройки.ДополнительныеСвойства.Свойство("ДатаКурса", ДатаКурса) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КурсыВалют.Валюта КАК Валюта,
| КурсыВалют.БазоваяВалюта КАК БазоваяВалюта,
| КурсыВалют.КурсЧислитель КАК КурсЧислитель,
| КурсыВалют.КурсЗнаменатель КАК КурсЗнаменатель
|ИЗ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&КонецПериода, Валюта В (&Валюты)) КАК КурсыВалют
|ИТОГИ ПО
| Валюта";
Запрос.УстановитьПараметр("Валюты", Строки.ПолучитьКлючи());
Запрос.УстановитьПараметр("КонецПериода", ДатаКурса);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаВалюта = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаВалюта.Следующий() Цикл
СтрокаСписка = Строки[ВыборкаВалюта.Валюта];
ВыборкаДетальныеЗаписи = ВыборкаВалюта.Выбрать();
ОтносительныйКурс = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Валюта <> ВыборкаДетальныеЗаписи.БазоваяВалюта Тогда
ОтносительныйКурс = ?(ПустаяСтрока(ОтносительныйКурс), "", ОтносительныйКурс + ", ") + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 %2 за %3 %4'"),
ВыборкаДетальныеЗаписи.КурсЗнаменатель,
ВыборкаДетальныеЗаписи.Валюта,
ВыборкаДетальныеЗаписи.КурсЧислитель,
ВыборкаДетальныеЗаписи.БазоваяВалюта);
КонецЕсли;
КонецЦикла;
СтрокаСписка.Данные["ОтносительныйКурс"] = ОтносительныйКурс;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПодборИзКлассификатора(Команда)
ИмяФормыПодбора = "Обработка.ЗагрузкаКурсовВалют.Форма.ПодборВалютИзКлассификатора";
ОткрытьФорму(ИмяФормыПодбора,, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьКурсыВалют(Команда)
ПараметрыФормы = Новый Структура("ОткрытиеИзСписка");
РаботаСКурсамиВалютКлиент.ПоказатьЗагрузкуКурсовВалют(ПараметрыФормы);
КонецПроцедуры
#КонецОбласти