Результат проверки адресов по классификатору. Проверяет данные на соответствие классификатору.
// Проверяет данные на соответствие классификатору.
//
// Параметры:
// Адреса - Массив - Проверяемые адреса. Содержит структуры с полями:
// * Адрес - ОбъектXDTO, Строка - Проверяемый адрес
// ((http://www.v8.1c.ru/ssl/AddressSystem) АдресРФ) или его
// XML-сериализация.
// * ФорматАдреса - Строка - Тип используемого классификатора для проверки.
//
// Возвращаемое значение:
// Структура - найденные варианты. Содержит поля:
// * Отказ - Булево - Поставщик не доступен.
// * ПодробноеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ
// = Ложь.
// * КраткоеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ
// = Ложь.
// * Данные - Массив - Результаты проверки. Индекс результата совпадает с индексом
// параметра Адреса.
// Каждый элемент массива - структура, содержащая поля:
// ** Ошибки - Массив - Описание ошибок поиска в классификаторе. Состоит из структур с полями.
// *** Ключ - Строка - Служебный идентификатор места ошибки - путь XPath в объекте XDTO.
// *** Текст - Строка - Текст ошибки.
// *** Подсказка - Строка - Текст возможного исправления ошибки.
// ** Варианты - Массив - Содержит описание найденных вариантов. Каждый элемент - структура с полями:
// *** Идентификатор - УникальныйИдентификатор - Код классификатора объекта - варианта.
// *** Индекс - Число - Почтовый индекс объекта - варианта.
// *** КодКЛАДР - Число - Код КЛАДР ближайшего объекта.
// *** OKATO - Число - Данные ФНС.
// *** ОКТМО - Число - Данные ФНС.
// *** КодИФНСФЛ - Число - Данные ФНС.
// *** КодИФНСЮЛ - Число - Данные ФНС.
// *** КодУчасткаИФНСФЛ - Число - Данные ФНС.
// *** КодУчасткаИФНСЮЛ - Число - Данные ФНС.
//
Функция РезультатПроверкиАдресовПоКлассификатору(Адреса) Экспорт
Результат = Новый Структура("Данные", Новый Массив);
СтруктураОписанияОшибкиПоставщика(Результат);
// Приводим типы
МестоПроверки = Новый Структура("ЗагруженныеСведения, ВебСервис", Новый Массив, Новый Массив);
Если ТипЗнч(Адреса) <> Тип("Массив") Тогда
Если Адреса.Свойство("Area") Тогда
ЗагруженныеСведения = СведенияОРегионе(Адреса.Area + " "+ Адреса.AreaType);
Если ЗагруженныеСведения.Загружен Тогда
МестоПроверки.ЗагруженныеСведения.Добавить(Адреса);
Иначе
МестоПроверки.ВебСервис.Добавить(Адреса);
КонецЕсли;
КонецЕсли;
Иначе
Для каждого АдресПроверки Из Адреса Цикл
Если АдресПроверки.Адрес.Свойство("Area") Тогда
Если ЗначениеЗаполнено(АдресПроверки.Адрес.Area) Тогда
ЗагруженныеСведения = СведенияОРегионе(АдресПроверки.Адрес.Area + " "+ АдресПроверки.Адрес.AreaType);
Если ЗагруженныеСведения.Загружен Тогда
МестоПроверки.ЗагруженныеСведения.Добавить(АдресПроверки);
Иначе
МестоПроверки.ВебСервис.Добавить(АдресПроверки);
КонецЕсли;
Иначе
МестоПроверки.ЗагруженныеСведения.Добавить(АдресПроверки);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ЗагруженныеАдресныеСведения = АдресныйКлассификаторПовтИсп.СведенияОЗагрузкеСубъектовРФ();
Если ЗагруженныеАдресныеСведения["ИспользоватьЗагруженные"] Тогда
ЗаполнитьРезультатПроверкиАдресаПоКлассификаторуВнутр(Результат, МестоПроверки.ЗагруженныеСведения);
КонецЕсли;
Если ЗагруженныеАдресныеСведения["КлассификаторДоступен"] = Истина Тогда
Для каждого АдресаДляПроверки Из МестоПроверки.ВебСервис Цикл
Попытка
ЗаполнитьРезультатПроверкиАдресаПоКлассификаторуСервис1С(Результат, АдресаДляПроверки);
Исключение
СтруктураОписанияОшибкиПоставщика(Результат, ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , Результат.ПодробноеПредставлениеОшибки);
КонецПопытки;
КонецЦикла;
Иначе
Для каждого АдресаДляПроверки Из МестоПроверки.ВебСервис Цикл
РезультатПроверки = Новый Структура();
РезультатПроверки.Вставить("id", "");
РезультатПроверки.Вставить("АдресПроверен", Ложь);
РезультатПроверки.Вставить("Варианты", Новый Массив);
РезультатПроверки.Вставить("Ошибки", Новый Массив);
Результат.Данные.Добавить(РезультатПроверки);
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПараметрыЗагрузкиКлассификатораАдресов (БСП)
ВернутьРезультатКакАдресВоВременномХранилище (БСП)
АдресаПоПочтовомуИндексуКлассификатора (БСП)
ДополнитьНастройкиПроверкиАдреса (БСП)
УстановитьИдентификаторыАдреса (БСП)
РезультатЗаданияПроверкиНаличияОбновлений (БСП)