Представление адреса.
Функция ПредставлениеАдреса(Адрес, ВключатьСтрануВПредставление, ТипАдреса = Неопределено) Экспорт
Если ТипЗнч(Адрес) <> Тип("Структура") Тогда
ВызватьИсключение НСтр("ru='Для формирования представления адреса передан некорректный тип адреса'");
КонецЕсли;
Если ТипАдреса = Неопределено Тогда
ТипАдреса = Адрес.AddressType;
КонецЕсли;
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(ТипАдреса) Тогда
Если Не Адрес.Свойство("Country") Или ПустаяСтрока(Адрес.Country) Тогда
Возврат Адрес.Value;
КонецЕсли;
ВПредставлениеЕстьСтрана = СтрНачинаетсяС(ВРег(Адрес.Value), ВРег(Адрес.Country));
Если ВключатьСтрануВПредставление Тогда
Если Не ВПредставлениеЕстьСтрана Тогда
Возврат Адрес.Country + ", " + Адрес.Value;
КонецЕсли;
Иначе
Если ВПредставлениеЕстьСтрана И СтрНайти(Адрес.Value, ",") > 0 Тогда
СписокПолей = СтрРазделить(Адрес.Value, ",");
СписокПолей.Удалить(0);
Возврат СтрСоединить(СписокПолей, ",");
КонецЕсли;
КонецЕсли;
Возврат Адрес.Value;
КонецЕсли;
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(ТипАдреса) Тогда
Возврат ПредставлениеАдресаВСвободнойФорме(Адрес, ВключатьСтрануВПредставление);
КонецЕсли;
СписокЗаполненныхУровней = Новый Массив;
НаименованиеСтраны = "";
Если ВключатьСтрануВПредставление И Адрес.Свойство("Country") И НЕ ПустаяСтрока(Адрес.Country) Тогда
СписокЗаполненныхУровней.Добавить(Адрес.Country);
НаименованиеСтраны = Адрес.Country;
КонецЕсли;
Если Адрес.Свойство("ZipCode") И НЕ ПустаяСтрока(Адрес.ZipCode) Тогда
СписокЗаполненныхУровней.Добавить(Адрес.ZipCode);
КонецЕсли;
Для каждого ИмяУровня Из ИменаУровнейАдреса(ТипАдреса, Истина) Цикл
Если Адрес.Свойство(ИмяУровня) И НЕ ПустаяСтрока(Адрес[ИмяУровня]) Тогда
Если НЕ ПредставлениеУровняБезСокращения(ИмяУровня) Тогда
СписокЗаполненныхУровней.Добавить(СокрЛП(Адрес[ИмяУровня] + " " + Адрес[ИмяУровня + "Type"]));
Иначе
СписокЗаполненныхУровней.Добавить(Адрес[ИмяУровня]);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Адрес.Свойство("HouseNumber") И НЕ ПустаяСтрока(Адрес.HouseNumber) Тогда
СписокЗаполненныхУровней.Добавить(НРег(Адрес.HouseType) + " " + Адрес.HouseNumber);
ИначеЕсли Адрес.Свойство("stead") И Не ПустаяСтрока(Адрес.stead) Тогда
СписокЗаполненныхУровней.Добавить("участок" + " " + Адрес.stead);
КонецЕсли;
Если Адрес.Свойство("Buildings") И Адрес.Buildings.Количество() > 0 Тогда
Для каждого Строение Из Адрес.Buildings Цикл
Если ЗначениеЗаполнено(Строение.Number) Тогда
СписокЗаполненныхУровней.Добавить(НРег(Строение.Type) + " " + Строение.Number);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Адрес.Свойство("Apartments")
И Адрес.Apartments <> Неопределено
И Адрес.Apartments.Количество() > 0 Тогда
Для каждого Строение Из Адрес.Apartments Цикл
Если ЗначениеЗаполнено(Строение.Number) Тогда
Если СтрСравнить(Строение.Type, "Другое") <> 0 Тогда
СписокЗаполненныхУровней.Добавить(НРег(Строение.Type) + " " + Строение.Number);
Иначе
СписокЗаполненныхУровней.Добавить(Строение.Number);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Представление = СтрСоединить(СписокЗаполненныхУровней, ", ");
Возврат Представление;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ОбновитьПредставлениеАдреса (БСП)
СформироватьПредставлениеАдреса (БСП)