&НаСервере
Процедура
ЗагрузитьОплатыГоспошлины(Знач ДвоичныеДанныеФайла)
ИмяВремФайлаНаСервере
= ПолучитьИмяВременногоФайла("xlsx");
ДвоичныеДанныеФайла.Записать(ИмяВремФайлаНаСервере);
тзОплатыГП
= ЗагрузитьОплатыГоспошлины_ИзВремФайла_вТЗ(ИмяВремФайлаНаСервере);
тзОплатыГП.Свернуть("ЛС,
Адрес, ФИО, НомерСП, ПериодПЗ,
ДатаОплаты", "СуммаОплаты");
Если ЗначениеЗаполнено(тзОплатыГП)
Тогда
ЗагрузитьОплатыГоспошлины_ИзТЗ(тзОплатыГП);
КонецЕсли;
УдалитьФайлы(ИмяВремФайлаНаСервере);
КонецПроцедуры
&НаСервере
Функция ЗагрузитьОплатыГоспошлины_ИзВремФайла_вТЗ(ИмяВремФайла)
//Создаем Табличный документ для
перебора
ТабличныйДокумент
= Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ИмяВремФайла);
//Заголовки таблицы
Заголовки = "";
Для НомерКолонки
= 1 По ТабличныйДокумент.ШиринаТаблицы Цикл
Заголовки = Заголовки
+ НомерКолонки + " " + СокрЛП(ТабличныйДокумент.Область(1,
НомерКолонки).Текст) + Символы.ПС;
Если ТабличныйДокумент.ШиринаТаблицы <> 7 Тогда
КонецЕсли;
КонецЦикла;
//============================
//Колонки
файла с Госпошлиной
//============================
//1 Номер ЛС
//2 Адрес
//3 ФИО
//4 Сумма
//5 Номер СП
//6 Период ПЗ
//7 Дата
тзГП =
Новый ТаблицаЗначений;
тзГП.Колонки.Добавить("ЛС");//1
тзГП.Колонки.Добавить("Адрес");//2
тзГП.Колонки.Добавить("ФИО");//3
тзГП.Колонки.Добавить("СуммаОплаты");//4
тзГП.Колонки.Добавить("НомерСП");//5
тзГП.Колонки.Добавить("ПериодПЗ");//6
тзГП.Колонки.Добавить("ДатаОплаты");//7
Если ТабличныйДокумент.Области.Количество()
> 1 Тогда
//СписокОшибок.ДобавитьСтроку("В
файле загрузки несколько листов: " + ТабличныйДокумент.Области.Количество());
КонецЕсли;
//Перебор строк
Для НомерСтроки
= 2 По ТабличныйДокумент.ВысотаТаблицы Цикл
иксЛС
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 1).Текст);
иксАдрес
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 2).Текст);
иксФИО
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 3).Текст);
иксСуммаОплаты
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 4).Текст);
иксНомерСП
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 5).Текст);
иксПериодПЗ
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 6).Текст);
иксДатаОплаты
= СокрЛП(ТабличныйДокумент.Область(НомерСтроки, 7).Текст);
//=======================
//Добавляем
строку в ТЗ
//=======================
Если НЕ ЗначениеЗаполнено(иксЛС) Тогда
//СписокОшибок.ДобавитьСтроку("ЛС не найден в строке:
[" + ТабличныйДокумент.Область().Текст +
"]");
Продолжить;
КонецЕсли;
СтрокаТЗ
= тзГП.Добавить();
СтрокаТЗ.ЛС
= иксЛС;
СтрокаТЗ.ФИО
= иксФИО;
Если ЭтоЧисло2(иксСуммаОплаты) Тогда
СтрокаТЗ.СуммаОплаты = Число(иксСуммаОплаты);
КонецЕсли;
СтрокаТЗ.НомерСП
= иксНомерСП;
СтрокаТЗ.ПериодПЗ
= иксПериодПЗ;
СтрокаТЗ.ДатаОплаты
= иксДатаОплаты;
КонецЦикла;//Перебор
строк
Если ЗначениеЗаполнено(тзГП) Тогда
Возврат тзГП;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервере
Процедура
ЗагрузитьОплатыГоспошлины_ИзТЗ(Знач тзОплатыГП)
//============================
//Колонки ТЗ
Оплат Госпошлин
//============================
//1 - ЛС
//2 - Адрес
//3 - ФИО
//4 - Сумма
//5 - НомерСП
//6 - ПериодПЗ
//7 - Дата
Для Каждого ТекСтр
Из тзОплатыГП Цикл
//==============
//Строковые
//==============
стрЛС = ТекСтр.ЛС;
стрАдрес
= ТекСтр.Адрес;
стрФИО
= ТекСтр.ФИО;
чСуммаОплаты
= ТекСтр.СуммаОплаты;
стрНомерСП
= ТекСтр.НомерСП;
стрПериодПЗ
= ТекСтр.ПериодПЗ;
стрДатаОплаты
= ТекСтр.ДатаОплаты;
//=====================
//Преобразование типов
//=====================
дДатаОплаты
= СтрокуВДату(стрДатаОплаты);
Если НЕ ЗначениеЗаполнено(стрЛС) Тогда
Продолжить;
КонецЕсли;
//============
//Ссылки
//============
ссЛС
= ПолучитьСсылкуНаЛС(стрЛС);
ссБП
= ПолучитьСсылкуНаБП(ссЛС,
стрНомерСП);
//=================================
//Добавить новую
строку в таблицу
//=================================
ПроверкаЗаписи
= ПроверкаЗаписиВРеестреОплатГП(дДатаОплаты,
ссЛС, ссБП);
Если НЕ ПроверкаЗаписи И
ЗначениеЗаполнено(ссБП) Тогда
обБП = ссБП.ПолучитьОбъект();
НоваяСтр = ОбБп.ВзысканоПоИП.Добавить();
НоваяСтр.Период = дДатаОплаты;
НоваяСтр.ИсточникПоступлений = Справочники.ИсточникиПоступлений.НайтиПоНаименованию("ЛК
Недолжник");
НоваяСтр.НазначениеПлатежа = Справочники.НазначениеПлатежа.НайтиПоНаименованию("Госпошлина");
НоваяСтр.Сумма = чСуммаОплаты;
Попытка
//обБП.ОбменДанными.Загрузка = Истина;
обБП.Записать();
Исключение
ПроверкаЗаписи = Истина;//Сбрасываем запись в реестре
оплат
КонецПопытки;
КонецЕсли;
//===================================
//Добавить запись в
реестр оплат ГП
//===================================
Если НЕ ПроверкаЗаписи И
ЗначениеЗаполнено(дДатаОплаты) И
ЗначениеЗаполнено(ссЛС) И
ЗначениеЗаполнено(ссБП) И
ЗначениеЗаполнено(чСуммаОплаты) Тогда
ЗаписатьВРеестрОплатыГП(дДатаОплаты,
ссЛС, ссБП, чСуммаОплаты);
КонецЕсли;
КонецЦикла;//тзОплатыГП
КонецПроцедуры
|