#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("ТипГрафика") Тогда
ТипГрафика = Параметры.ТипГрафика;
ИнициализироватьПараметрыЗагрузки();
КонецЕсли;
Параметры.Свойство("ВариантГрафика", ВариантГрафика);
Параметры.Свойство("ИдентификаторВладельца", ИдентификаторВладельца);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗаписатьГрафик(Команда)
ВыполнитьЗагрузкуГрафика();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Прочее
&НаКлиенте
Процедура ВыполнитьЗагрузкуГрафика()
Если ЗагрузитьГрафикСервер() Тогда
Закрыть(АдресГрафика);
КонецЕсли;
Текст = НСтр("ru = 'Загрузка окончена'");
ПоказатьОповещениеПользователя(Текст,,, БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаСервере
Процедура СообщитьОбОшибкеПреобразования(НомерСтроки, ИмяКолонки, СтроковоеЗначение)
ШаблонТекста = НСтр("ru='Строка №%1 колонка ""%2"" - ошибка преобразования значения ""%3""
|Строка не загружена!'");
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста, НомерСтроки, ИмяКолонки, СтроковоеЗначение);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст);
КонецПроцедуры
&НаСервере
Функция ТекстВДату(Знач СтроковоеЗначение, НомерСтроки, ИмяКолонки, Разделитель = ".")
Цифры = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтроковоеЗначение,Разделитель);
Попытка
Результат = ?(СтрДлина(Цифры[2]) = 2, "20" + Цифры[2], Цифры[2])
+ Формат(Цифры[1], "ЧЦ=2; ЧВН=;")
+ Формат(Цифры[0], "ЧЦ=2; ЧВН=;");
Результат = Дата(Результат);
Исключение
СообщитьОбОшибкеПреобразования(НомерСтроки, ИмяКолонки, СтроковоеЗначение);
КонецПопытки;
Возврат Результат;
КонецФункции
&НаСервере
Функция ТекстВЧисло(СтроковоеЗначение, НомерСтроки, ИмяКолонки)
Если ПустаяСтрока(СтроковоеЗначение) ИЛИ СтроковоеЗначение = Неопределено Тогда
Возврат 0;
КонецЕсли;
Попытка
Результат = Число(СтрЗаменить(СтроковоеЗначение," ",""));
Исключение
СообщитьОбОшибкеПреобразования(НомерСтроки, ИмяКолонки, СтроковоеЗначение);
КонецПопытки;
Возврат Результат;
КонецФункции
&НаСервере
Функция ЗагрузитьГрафикСервер()
НомерСтроки = 2;
СтроковыйНомер = Формат(НомерСтроки, "ЧН=0; ЧГ=0");
ПоляЗагрузки = ПараметрыЗагрузки.Поля;
ЗаполненаДата = ЗначениеЗаполнено(ТабличныйДокумент.Область("R" + СтроковыйНомер + ПоляЗагрузки.Период).Текст);
ЗагруженоБезОшибок = Истина;
ЗаписиГрафика = РегистрыСведений[ПараметрыЗагрузки.ИмяРегистра].СоздатьНаборЗаписей();
ЗаписиГрафика.Отбор.ВариантГрафика.Установить(ВариантГрафика);
Пока ЗаполненаДата Цикл
ДанныеСтроки = Неопределено;
Попытка
ДанныеСтроки = Новый Структура("ВариантГрафика",ВариантГрафика);
Для Каждого Поле Из ПоляЗагрузки Цикл
ТекстЗначения = ТабличныйДокумент.Область("R" + СтроковыйНомер + Поле.Значение).Текст;
Если Поле.Ключ = "Период" Тогда
ЗначениеПоля = ТекстВДату(ТекстЗначения, СтроковыйНомер, Поле.Ключ);
Иначе
ЗначениеПоля = ТекстВЧисло(ТекстЗначения, СтроковыйНомер, Поле.Ключ);
КонецЕсли;
ДанныеСтроки.Вставить(Поле.Ключ,ЗначениеПоля);
КонецЦикла;
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Если ЗначениеЗаполнено(ДанныеСтроки) Тогда
ВсеПоляЗаполнены = ЗначениеЗаполнено(ДанныеСтроки.Период);
Если ВсеПоляЗаполнены Тогда
СуммаПолей = 0;
Для Каждого Поле Из ПараметрыЗагрузки.ПоляКонтроля Цикл
СуммаПолей = СуммаПолей + ДанныеСтроки[Поле];
КонецЦикла;
Если СуммаПолей = 0 Тогда
ВсеПоляЗаполнены = Ложь;
ЗагруженоБезОшибок = Ложь;
ШаблонТекста = НСтр("ru='В строке №%1 нет заполненных колонок сумм.
|Строка не загружена!'");
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста, СтроковыйНомер);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст);
КонецЕсли;
КонецЕсли;
Если ВсеПоляЗаполнены Тогда
НоваяЗапись = ЗаписиГрафика.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, ДанныеСтроки);
КонецЕсли;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
СтроковыйНомер = Формат(НомерСтроки, "ЧН=0; ЧГ=0");
Попытка
ЗаполненаДата = ЗначениеЗаполнено(ТабличныйДокумент.Область("R" + СтроковыйНомер + ПоляЗагрузки.Период).Текст);
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
АдресГрафика = ПоместитьВоВременноеХранилище(ОбщегоНазначения.ЗначениеВСтрокуXML(ЗаписиГрафика), ИдентификаторВладельца);
Возврат ЗагруженоБезОшибок;
КонецФункции
&НаСервере
Процедура ИнициализироватьПараметрыЗагрузки()
ПараметрыЗагрузки = Новый Структура;
ПоляЗагрузки = Новый Структура("Период","C1");
Если ТипГрафика = "ГрафикНачислений" Тогда
ЭтаФорма.Заголовок = НСтр("ru = 'Загрузка графика начислений'");
ПоляЗагрузки.Вставить("Проценты","C2");
ПоляЗагрузки.Вставить("Комиссия","C3");
МассивПолей = Новый Массив;
МассивПолей.Добавить("Проценты");
МассивПолей.Добавить("Комиссия");
ПараметрыЗагрузки.Вставить("ПоляКонтроля", МассивПолей);
ПараметрыЗагрузки.Вставить("ИмяРегистра", "ГрафикНачисленийКредитовИДепозитов");
ИначеЕсли ТипГрафика = "ГрафикОплат" Тогда
ЭтаФорма.Заголовок = НСтр("ru = 'Загрузка графика оплат'");
ПоляЗагрузки.Вставить("Сумма","C2");
ПоляЗагрузки.Вставить("Проценты","C3");
ПоляЗагрузки.Вставить("Комиссия","C4");
МассивПолей = Новый Массив;
МассивПолей.Добавить("Сумма");
МассивПолей.Добавить("Проценты");
МассивПолей.Добавить("Комиссия");
ПараметрыЗагрузки.Вставить("ПоляКонтроля", МассивПолей);
ПараметрыЗагрузки.Вставить("ИмяРегистра", "ГрафикОплатКредитовИДепозитов");
ИначеЕсли ТипГрафика = "ГрафикТраншей" Тогда
ЭтаФорма.Заголовок = НСтр("ru = 'Загрузка графика траншей'");
ПоляЗагрузки.Вставить("Сумма","C2");
МассивПолей = Новый Массив;
МассивПолей.Добавить("Сумма");
ПараметрыЗагрузки.Вставить("ПоляКонтроля", МассивПолей);
ПараметрыЗагрузки.Вставить("ИмяРегистра", "ГрафикТраншейКредитовИДепозитов");
КонецЕсли;
ПараметрыЗагрузки.Вставить("Поля", ПоляЗагрузки);
МакетШаблона = Справочники.ВариантыГрафиковКредитовИДепозитов.ПолучитьМакет("МакетЗагрузкиГрафиков");
ТабличныйДокумент.Очистить();
ОбластьКолонки = МакетШаблона.ПолучитьОбласть(ТипГрафика);
ТабличныйДокумент.Присоединить(ОбластьКолонки);
ТабличныйДокумент.ФиксацияСверху = 1;
КонецПроцедуры
#КонецОбласти
#КонецОбласти