|
Процедура ДобавитьОССвРегистр(Знач ссАдрес, Знач ДатаСоставления, Знач НомерПротокола, Знач СсылкаНаФайл)
Если ЗначениеЗаполнено(ссАдрес) Тогда
МЗ =
РегистрыСведений.ОбщиеСобранияСобственников.СоздатьМенеджерЗаписи();
//Измерения
МЗ.Адрес = ссАдрес;
МЗ.Период = ТекущаяДата();
//Ресурсы
МЗ.ДатаСоставления
= ДатаСоставления;
МЗ.НомерПротокола
= НомерПротокола;
МЗ.СсылкаНаФайл =
СсылкаНаФайл;
Попытка
МЗ.Записать();
Исключение
КонецПопытки;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьКодФИАС(Знач АпиКлюч, Знач СекретныйКлюч, Знач АдресДома)
Соединение = Новый HTTPСоединение("cleaner.dadata.ru",443,,, ,30, Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type" , "application/json");
Заголовки.Вставить("Authorization",
"Token " + АпиКлюч);
Заголовки.Вставить("X-Secret", СекретныйКлюч);
Запрос = Новый HTTPЗапрос("api/v1/clean/address", Заголовки);
ТелоЗапроса = "[
""" + АдресДома + """
]";
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);
Результат = Соединение.ВызватьHTTPМетод("POST", Запрос);
Если Результат.КодСостояния =
200 Тогда
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));
РезСтруктура =
ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Если ЗначениеЗаполнено(РезСтруктура) Тогда
Возврат РезСтруктура[0].fias_id;
Иначе
Возврат "";
КонецЕсли;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
&НаСервере
Функция АдресПоФИАС(Знач КодФИАС)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| F1_Дома.Ссылка КАК Ссылка
|ИЗ
| Справочник.F1_Дома КАК F1_Дома
|ГДЕ
| F1_Дома.КодДомаПоФИАС = &КодФИАС";
Запрос.УстановитьПараметр("КодФИАС", КодФИАС);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий()
Тогда
Возврат Выборка.Ссылка;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции//АдресПоФИАС
Процедура ПрочитатьФайлСОСС(Знач ПолноеИмяФайла)
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл(ПолноеИмяФайла);
Попытка
мСобраний = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Исключение
КонецПопытки;
Если ЗначениеЗаполнено(мСобраний) Тогда
Для Каждого Эл Из мСобраний
Цикл
Если СтрНайти(Эл.subject, "Общее собрание собственников")
<> 0 И
ЗначениеЗаполнено(Эл.file) И
СтрНайти(Эл.file, "null") = 0
Тогда
Для Каждого ТекАдрес Из Эл.address Цикл
ДатаСоздания = XMLЗначение(Тип("Дата"),
Эл.date_created);
НомерПротокола = Эл.protocolNumber;
СсылкаНаФайл = Эл.file;
Если
ЗначениеЗаполнено(ТекАдрес.address_id.title)
Тогда
АпиКей = "123abc";
СекретныйКлюч = "456def";
КодФИАС = ПолучитьКодФИАС(АпиКей, СекретныйКлюч, ТекАдрес.address_id.title);
ссАдрес = АдресПоФИАС(КодФИАС);
//======================
ДобавитьОССвРегистр(ссАдрес, ДатаСоздания, НомерПротокола, СсылкаНаФайл);
//======================
КонецЕсли;
КонецЦикла;//По Адресам
КонецЕсли;
КонецЦикла;//мСобраний
КонецЕсли;
КонецПроцедуры//ПрочитатьФайлСОСС
&НаСервере
Функция ЗагрузитьФайлыСФТП(НазваниеЗагрузки, Каталог, ИмяФайла,
Сервер, Порт, Пользователь, Пароль, SSL)
Попытка
Если SSL Тогда
ЗащСоед
= Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
FTPСоединение
= Новый FTPСоединение(Сервер, Порт, Пользователь,
Пароль, Неопределено, Истина, 0, ЗащСоед);
Иначе
FTPСоединение
= Новый FTPСоединение(Сервер, Порт, Пользователь,
Пароль, Неопределено, Истина, 0);
КонецЕсли;
Исключение
Возврат Неопределено;
КонецПопытки;
FTPСоединение.УстановитьТекущийКаталог("/");
КаталогТемп = КаталогВременныхФайлов();
МассивФайлов = FTPСоединение.НайтиФайлы(Каталог,
ИмяФайла, Ложь);
Если МассивФайлов.Количество()
= 0 Тогда
Возврат Неопределено;
КонецЕсли;
Для Каждого Фл из МассивФайлов Цикл
ТемпФайл = КаталогВременныхФайлов() + Фл.Имя;
Попытка
FTPСоединение.Получить(Фл.ПолноеИмя, ТемпФайл);
ИначеЕсли
НазваниеЗагрузки = "Загрузка ОСС" Тогда
ПрочитатьФайлСОСС(ТемпФайл);
Иначе
УдалитьФайлы(ТемпФайл);//Удаляем временный
файл
Возврат Неопределено;
КонецЕсли;
Исключение
КонецПопытки;
УдалитьФайлы(ТемпФайл);//Удаляем временный
файл
FTPСоединение.Удалить(Фл.ПолноеИмя);//Удаляем файл
на ФТП
КонецЦикла;
FTPСоединение = Неопределено;
КонецФункции//ЗагрузитьФайлыСФТП
&НаСервере
Функция ПрочитатьНастройки(Знач НазваниеЗагрузки)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиДляЗагрузкиСФТП.Ссылка КАК Ссылка,
| НастройкиДляЗагрузкиСФТП.ПометкаУдаления КАК ПометкаУдаления,
| НастройкиДляЗагрузкиСФТП.Наименование КАК Наименование,
| НастройкиДляЗагрузкиСФТП.Сервер КАК Сервер,
| НастройкиДляЗагрузкиСФТП.Порт КАК Порт,
| НастройкиДляЗагрузкиСФТП.Логин КАК Логин,
| НастройкиДляЗагрузкиСФТП.Пароль КАК Пароль,
| НастройкиДляЗагрузкиСФТП.Каталог КАК Каталог,
| НастройкиДляЗагрузкиСФТП.SSL КАК SSL
|ИЗ
| Справочник.НастройкиДляЗагрузкиСФТП КАК НастройкиДляЗагрузкиСФТП
|ГДЕ
| НастройкиДляЗагрузкиСФТП.ПометкаУдаления = ЛОЖЬ
| И
НастройкиДляЗагрузкиСФТП.Наименование = &НазваниеЗагрузки";
Запрос.Параметры.Вставить("НазваниеЗагрузки", НазваниеЗагрузки);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ЗагрузитьФайлыСФТП(НазваниеЗагрузки, Выборка.Каталог,
"*.json", Выборка.Сервер,
Выборка.Порт, Выборка.Логин,
Выборка.Пароль, Выборка.SSL);
КонецЦикла;
КонецФункции//ПрочитатьНастройки
////////////////////////////////////////////
Функция ДляРегламентногоЗадания_ЗагрузкаОСС() Экспорт
ПрочитатьНастройки("Загрузка
ОСС");
КонецФункции
|