АдресПоИдентификатору (БСП)

Автор: 1С
ОбщийМодуль.РаботаСАдресами
БСП

Адрес по идентификатору. Возвращает адрес в виде строки 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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ОпределитьИдентификаторыАдреса (БСП)

УстановитьИдентификаторыАдреса (БСП)

ИдентификаторыАдреса (БСП)

АдресЕАЭС (БСП)

РаспознатьАдрес (БСП)

ЭтоМуниципальныйАдрес (БСП)

МуниципальныйАдрес (БСП)

ПредставлениеАдреса (БСП)

ИностранныйАдрес (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз