Адрес по идентификатору. Возвращает адрес в виде строки XML в соответствии со структурой XDTO Контактная информация и Адрес.
// Возвращает адрес в виде строки XML в соответствии со структурой XDTO Контактная информация и Адрес.
//
// Параметры:
// ИдентификаторАдреса - Строка - глобальный уникальный идентификационный код адресного объекта.
// ДополнительнаяИнформацияАдреса - Структура - поля адреса, которые будет добавлены в адрес:
// * АдресВJSON - Булево - возвращает адрес в формате JSON.
// * ДополнительнаяИнформация - Строка - комментарий адреса.
// * Страна - Строка - наименование страны адреса.
// * НомерДома - Строка - номер дома.
// * НомерОфиса - Строка - номер офиса.
// * НомерСтроения - Строка - номер строения.
// * ПочтовыйИндекс - Строка - почтовый индекс адреса.
// * АбонентскийЯщик - Строка - абонентский ящик адреса.
// * Муниципальный - Булево - если Истина, адрес будет сформирован в муниципальном формате.
// По умолчанию Ложь.
//
// Возвращаемое значение:
// Строка, Неопределено - XML в соответствии со структурой XDTO пакетов Контактная информация и Адрес.
// JSON, если в ДополнительнаяИнформацияАдреса параметр АдресВJSON установлен в Истина.
// Неопределено, если не удалось сформировать адрес по идентификатору.
//
Функция АдресПоИдентификатору(ИдентификаторАдреса, ДополнительнаяИнформацияАдреса = Неопределено) Экспорт
Если ДополнительнаяИнформацияАдреса = Неопределено Тогда
ДополнительнаяИнформацияАдреса = Новый Структура();
КонецЕсли;
Муниципальный = ?(ДополнительнаяИнформацияАдреса.Свойство("Муниципальный"), Булево(ДополнительнаяИнформацияАдреса.Муниципальный), Ложь);
Сведения = Новый Структура();
Сведения.Вставить("Идентификатор", ИдентификаторАдреса);
Сведения.Вставить("Муниципальный", Муниципальный);
МодульАдресныйКлассификаторСлужебный = ОбщегоНазначения.ОбщийМодуль("АдресныйКлассификаторСлужебный");
ПолученныеАдрес = МодульАдресныйКлассификаторСлужебный.АктуальныеАдресныеСведения(Сведения);
Если ПолученныеАдрес.Отказ Тогда
Возврат Неопределено;
КонецЕсли;
Адрес = ПолученныеАдрес.Данные;
Если ДополнительнаяИнформацияАдреса.Свойство("НомерДома") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.НомерДома) Тогда
ОписаниеДома = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерДома, "Дом");
Адрес.Вставить("houseType", ОписаниеДома.Тип);
Адрес.Вставить("houseNumber", ОписаниеДома.Номер);
Адрес.Вставить("houseId", "");
КонецЕсли;
Если ДополнительнаяИнформацияАдреса.Свойство("НомерСтроения") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.НомерСтроения) Тогда
ОписаниеСтроения = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерСтроения, "Корпус");
Строение = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеСтроения.Тип, ОписаниеСтроения.Номер);
Адрес.buildings.Добавить(Строение);
КонецЕсли;
Если ДополнительнаяИнформацияАдреса.Свойство("НомерОфиса") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.НомерОфиса) Тогда
ОписаниеПомещения = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерОфиса, "Офис");
Помещение = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеПомещения.Тип, ОписаниеПомещения.Номер);
Адрес.apartments.Добавить(Помещение);
КонецЕсли;
Если ДополнительнаяИнформацияАдреса.Свойство("АбонентскийЯщик") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.АбонентскийЯщик) Тогда
ОписаниеАбонентскийЯщик = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.АбонентскийЯщик, "А/Я");
АбонентскийЯщик = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеАбонентскийЯщик.Тип, ОписаниеАбонентскийЯщик.Номер);
Адрес.apartments.Добавить(АбонентскийЯщик);
КонецЕсли;
Если ДополнительнаяИнформацияАдреса.Свойство("ПочтовыйИндекс") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.ПочтовыйИндекс) Тогда
Адрес.ZIPcode = ДополнительнаяИнформацияАдреса.ПочтовыйИндекс;
КонецЕсли;
Если ДополнительнаяИнформацияАдреса.Свойство("ДополнительнаяИнформация") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.ДополнительнаяИнформация) Тогда
Адрес.comment = ДополнительнаяИнформацияАдреса.ДополнительнаяИнформация;
КонецЕсли;
Если ДополнительнаяИнформацияАдреса.Свойство("Страна") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.Страна) Тогда
Адрес.country = ВРег(ДополнительнаяИнформацияАдреса.Страна);
КонецЕсли;
ВидИнформации = Новый Структура("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
РасчетноеПредставление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(Адрес, ВидИнформации);
Адрес.value = РасчетноеПредставление;
Если ДополнительнаяИнформацияАдреса.Свойство("АдресВJSON") И ДополнительнаяИнформацияАдреса.АдресВJSON = Истина Тогда
Возврат УправлениеКонтактнойИнформациейСлужебный.СтруктураВСтрокуJSON(Адрес);
КонецЕсли;
Возврат УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзJSONВXML(Адрес, Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////