985 lines
69 KiB
Plaintext
985 lines
69 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Copyright (c) 2025, ООО 1С-Софт
|
||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||
// Текст лицензии доступен по ссылке:
|
||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
// Возвращает структуру полей адреса для программного формирования адреса.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Представление - Строка - текстовое представление адреса по административно-территориальному делению.
|
||
// Например, "175430, Новгородская обл, Валдайский р-н, Бор д, Полевая ул, дом 4".
|
||
// * МуниципальноеПредставление - Строка - текстовое представление адреса по муниципальному делению.
|
||
// Например, "175430, Новгородская обл, Валдайский муниципальный район, сельское
|
||
// поселение Никулинское, Бор д, Полевая ул, дом 4".
|
||
// * ТипАдреса - Строка - основной тип адреса (только для адресов РФ).
|
||
// Варианты: "Муниципальный", "Административно-территориальный".
|
||
// * Страна - Строка - текстовое представление страны. Например, "Россия".
|
||
// * КодСтраны - Строка - код страны по ОКСМ. Например, "643".
|
||
// * Индекс - Строка - почтовый индекс. Например, "12700".
|
||
// * КодРегиона - Строка - код региона РФ. Например, "50".
|
||
// * Регион - Строка - текстовое представление региона РФ. Например, "Московская"
|
||
// * РегионТипПолный - Строка - тип региона. Например, "область".
|
||
// * РегионТипКраткий - Строка - сокращение региона. Например, "обл".
|
||
// * РегионСокращение - Строка - устарело. Сокращение региона. Например, "обл".
|
||
// * Округ - Строка - устарело. Текстовое представление округа (устарело).
|
||
// * ОкругСокращение - Строка - устарело. Сокращение округа (устарело).
|
||
// * Район - Строка - текстовое представление района у адресов по административно-территориальному
|
||
// делению. Например, "Валдайский".
|
||
// * РайонТипПолный - Строка - тип района у адресов по административно-территориальному делению. Например, "район".
|
||
// * РайонТипКраткий - Строка - сокращение района у адресов по административно-территориальному делению. Например, "р-н".
|
||
// * РайонСокращение - Строка - устарело. Сокращение района у адресов по административно-территориальному делению.
|
||
// Например, "р-н".
|
||
// * МуниципальныйРайон - Строка - текстовое представление муниципального района у адресов по муниципальному делению.
|
||
// Например, "Валдайский".
|
||
// * МуниципальныйРайонТипПолный - Строка - тип муниципального района у адресов по муниципальному делению.
|
||
// Например, "муниципальный район".
|
||
// * МуниципальныйРайонТипКраткий - Строка - сокращение муниципального района у адресов по муниципальному делению.
|
||
// Например, "м.р-н".
|
||
// * МуниципальныйРайонСокращение - Строка - устарело. Сокращение муниципального района у адресов по муниципальному делению.
|
||
// Например, "м.р-н".
|
||
// * Город - Строка - текстовое представление города у адресов по административно-территориальному
|
||
// делению. Например, "Валдай".
|
||
// * ГородТипПолный - Строка - тип города. Например, "город".
|
||
// * ГородТипКраткий - Строка - сокращение типа города. Например, "г".
|
||
// * ГородСокращение - Строка - устарело. Сокращение типа города. Например, "г".
|
||
// * Поселение - Строка - текстовое представление поселения у адресов по муниципальному делению. Например,
|
||
// "сельское поселение Никулинское".
|
||
// * ПоселениеТипПолный - Строка - тип поселения у адресов по муниципальному делению. Например, "сельское поселение";
|
||
// * ПоселениеТипКраткий - Строка - сокращение типа поселения у адресов по муниципальному делению. Например, "с.п.";
|
||
// * ПоселениеСокращение - Строка - устарело. Сокращение поселения у адресов по муниципальному делению. Например, "с.п.";
|
||
// * ВнутригородскойРайон - Строка - устарело. Текстовое представление внутригородского района. Например, "Центральный"
|
||
// * ВнутригородскойРайонТипПолный - Строка - устарело. Тип внутригородского района. Например, "микрорайон";
|
||
// * ВнутригородскойРайонТипКраткий - Строка - устарело. Сокращение типа внутригородского района. Например, "мкр";
|
||
// * ВнутригородскойРайонСокращение - Строка - устарело. Сокращение внутригородского района. Например, "мкр";
|
||
// * НаселенныйПункт - Строка - текстовое представление населенного пункта. Например, "Бор".
|
||
// * НаселенныйПунктТипПолный - Строка - тип населенного пункта. Например, "деревня".
|
||
// * НаселенныйПунктТипКраткий - Строка - сокращение типа населенного пункта. Например, "д".
|
||
// * НаселенныйПунктСокращение - Строка - устарело. Сокращение населенного пункта. Например, "д".
|
||
// * Территория - Строка - текстовое представление территории. Например, "Мотор".
|
||
// * ТерриторияТипПолный - Строка -тип территории. Например, "территория".
|
||
// * ТерриторияТипКраткий - Строка - сокращение территории. Например, "тер".
|
||
// * ТерриторияСокращение - Строка - устарело. Сокращение территории. Например, "тер".
|
||
// * Улица - Строка - текстовое представление улицы. Например "Полевая".
|
||
// * УлицаТипПолный - Строка - тип улицы. Например "улица".
|
||
// * УлицаТипКраткий - Строка - сокращение типа улицы. Например "ул".
|
||
// * УлицаСокращение - Строка - устарело. Сокращение улицы. Например "ул".
|
||
// * ДополнительнаяТерритория - Строка - текстовое представление дополнительной территории (устарело).
|
||
// * ДополнительнаяТерриторияСокращение - Строка - сокращение дополнительной территории (устарело).
|
||
// * ЭлементДополнительнойТерритории - Строка - текстовое представление элемента дополнительной территории (устарело).
|
||
// * ЭлементДополнительнойТерриторииСокращение - Строка - сокращение элемента дополнительной территории (устарело).
|
||
// * Здание - Структура - структура с информацией о здании адреса:
|
||
// ** ТипЗдания - Строка - тип объекта адресации адреса РФ согласно приказу Минфина России от 5.11.2015 г. N171н.
|
||
// ** Номер - Строка - текстовое представление номера дома (только для адресов РФ).
|
||
// * Корпуса - Массив из Структура - содержит список корпусов и строений адреса:
|
||
// * ТипКорпуса - Строка - наименование строения корпуса. Например, "Строение".
|
||
// * Номер - Строка - номер строения или корпуса. Например, "1".
|
||
// * Помещения - Массив из см. ПоляПомещения
|
||
// * НомерЗемельногоУчастка - Неопределено
|
||
// - Строка - текстовое представление номера участка. Например, "10".
|
||
// * ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - идентификационный код последнего адресного объекта
|
||
// в иерархи адреса. Например, для адреса: Москва г., Дмитровское ш., д.9 это
|
||
// будет идентификатор улицы. Например, "8fe5e839-24c8-4500-bea8-a81a55a0fd1e".
|
||
// * ИдентификаторДома - УникальныйИдентификатор - идентификационный код дома(строения) адресного объекта.
|
||
// Например, "bc26bdef-12be-40f8-959c-2149de1911b9".
|
||
// * ИдентификаторЗемельногоУчастка - Неопределено
|
||
// - УникальныйИдентификатор - идентификационный код земельного участка.
|
||
// * ИдентификаторПомещения - УникальныйИдентификатор - идентификационный код помещения (квартиры, офиса) дома.
|
||
// * Идентификаторы - Структура - идентификаторы адресных объектов адреса:
|
||
// ** РегионИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор региона.
|
||
// ** РайонИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор района.
|
||
// ** МуниципальныйРайонИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор муниципального района.
|
||
// ** ГородИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор города.
|
||
// ** ПоселениеИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор поселения.
|
||
// ** ВнутригородскойРайонИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор
|
||
// внутригородского района.
|
||
// ** НаселенныйПунктИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор населенного пункта.
|
||
// ** ТерриторияИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор территории.
|
||
// ** УлицаИдентификатор - УникальныйИдентификатор
|
||
// - Неопределено - идентификатор улица.
|
||
// * КодыКЛАДР - Структура - коды КЛАДР, если установлен параметр КодыКЛАДР. Например, "53004000040000200":
|
||
// ** Регион - Строка - код КЛАДР региона.
|
||
// ** Район - Строка - код КЛАДР район.
|
||
// ** Город - Строка - код КЛАДР города.
|
||
// ** НаселенныйПункт - Строка - код КЛАДР населенного пункта.
|
||
// ** Улица - Строка - код КЛАДР улицы.
|
||
// * ДополнительныеКоды - Структура:
|
||
// ** ОКТМО - Строка - код общероссийского классификатора территорий муниципальных образований. Например, "45346000".
|
||
// ** ОКАТО - Строка - код общероссийского классификатора административно-территориальных образований. Например, "45277592000".
|
||
// ** КодИФНСФЛ - Строка - код налоговых инспекции физических лиц. Например, "7713"
|
||
// ** КодИФНСЮЛ - Строка - код налоговых инспекции юридических лиц. Например, "7713"
|
||
// ** КодУчасткаИФНСФЛ - Строка - код участка налоговой инспекции физических лиц. Например, "7713"
|
||
// ** КодУчасткаИФНСЮЛ - Строка - код участка налоговой инспекции юридических лиц. Например, "7713"
|
||
// * Комментарий - Строка - комментарий к адресу.
|
||
// * ДополнительнаяИнформация - Строка - текстовое представление дополнительной информации.
|
||
//
|
||
Функция ПоляАдреса() Экспорт
|
||
|
||
Результат = УправлениеКонтактнойИнформациейКлиентСервер.ПоляАдреса();
|
||
|
||
Результат.Вставить("МуниципальноеПредставление", "");
|
||
|
||
Результат.Вставить("КодРегиона" , "");
|
||
Результат.Вставить("Регион" , "");
|
||
Результат.Вставить("РегионТипПолный" , "");
|
||
Результат.Вставить("РегионТипКраткий" , "");
|
||
|
||
Результат.Вставить("Район" , "");
|
||
Результат.Вставить("РайонТипПолный" , "");
|
||
Результат.Вставить("РайонТипКраткий" , "");
|
||
|
||
Результат.Вставить("МуниципальныйРайон" , "");
|
||
Результат.Вставить("МуниципальныйРайонТипПолный" , "");
|
||
Результат.Вставить("МуниципальныйРайонТипКраткий" , "");
|
||
|
||
Результат.Вставить("ГородТипПолный" , "");
|
||
Результат.Вставить("ГородТипКраткий" , "");
|
||
|
||
Результат.Вставить("Поселение" , "");
|
||
Результат.Вставить("ПоселениеТипПолный" , "");
|
||
Результат.Вставить("ПоселениеТипКраткий" , "");
|
||
|
||
Результат.Вставить("ВнутригородскойРайон" , "");
|
||
Результат.Вставить("ВнутригородскойРайонТипПолный" , "");
|
||
Результат.Вставить("ВнутригородскойРайонТипКраткий" , "");
|
||
|
||
Результат.Вставить("НаселенныйПункт" , "");
|
||
Результат.Вставить("НаселенныйПунктТипПолный" , "");
|
||
Результат.Вставить("НаселенныйПунктТипКраткий" , "");
|
||
|
||
Результат.Вставить("Территория" , "");
|
||
Результат.Вставить("ТерриторияТипПолный" , "");
|
||
Результат.Вставить("ТерриторияТипКраткий" , "");
|
||
|
||
Результат.Вставить("УлицаТипПолный" , "");
|
||
Результат.Вставить("УлицаТипКраткий" , "");
|
||
|
||
// устаревшие свойства
|
||
Результат.Вставить("РегионСокращение" , "");
|
||
Результат.Вставить("Округ" , "");
|
||
Результат.Вставить("ОкругСокращение" , "");
|
||
Результат.Вставить("РайонСокращение" , "");
|
||
Результат.Вставить("МуниципальныйРайонСокращение" , "");
|
||
Результат.Вставить("ГородСокращение" , "");
|
||
Результат.Вставить("ПоселениеСокращение" , "");
|
||
Результат.Вставить("ВнутригородскойРайонСокращение" , "");
|
||
Результат.Вставить("НаселенныйПунктСокращение" , "");
|
||
Результат.Вставить("ТерриторияСокращение" , "");
|
||
Результат.Вставить("УлицаСокращение" , "");
|
||
Результат.Вставить("ДополнительнаяТерритория" , "");
|
||
Результат.Вставить("ДополнительнаяТерриторияСокращение" , "");
|
||
Результат.Вставить("ЭлементДополнительнойТерритории" , "");
|
||
Результат.Вставить("ЭлементДополнительнойТерриторииСокращение", "");
|
||
|
||
Здание = Новый Структура;
|
||
Здание.Вставить("ТипЗдания", "");
|
||
Здание.Вставить("Номер" , "");
|
||
Результат.Вставить("Здание", Здание);
|
||
|
||
Результат.Вставить("Корпуса" , Новый Массив);
|
||
Результат.Вставить("Помещения", Новый Массив);
|
||
|
||
Результат.Вставить("ИдентификаторАдресногоОбъекта" , Неопределено);
|
||
Результат.Вставить("ИдентификаторДома" , Неопределено);
|
||
Результат.Вставить("НомерЗемельногоУчастка" , Неопределено);
|
||
Результат.Вставить("ИдентификаторЗемельногоУчастка" , Неопределено);
|
||
Результат.Вставить("ИдентификаторПомещения" , Неопределено);
|
||
|
||
Результат.Вставить("УровниМуниципальногоАдреса" , Новый Массив());
|
||
Результат.Вставить("УровниАдминистративноТерриториальногоАдреса", Новый Массив());
|
||
|
||
Идентификаторы = Новый Структура;
|
||
Идентификаторы.Вставить("РегионИдентификатор" , Неопределено);
|
||
Идентификаторы.Вставить("РайонИдентификатор" , Неопределено);
|
||
Идентификаторы.Вставить("МуниципальныйРайонИдентификатор" , Неопределено);
|
||
Идентификаторы.Вставить("ГородИдентификатор" , Неопределено);
|
||
Идентификаторы.Вставить("ПоселениеИдентификатор" , Неопределено);
|
||
Идентификаторы.Вставить("ВнутригородскойРайонИдентификатор", Неопределено);
|
||
Идентификаторы.Вставить("НаселенныйПунктИдентификатор" , Неопределено);
|
||
Идентификаторы.Вставить("ТерриторияИдентификатор" , Неопределено);
|
||
Идентификаторы.Вставить("УлицаИдентификатор" , Неопределено);
|
||
Результат.Вставить("Идентификаторы", Идентификаторы);
|
||
|
||
ДополнительныеКоды = Новый Структура;
|
||
ДополнительныеКоды.Вставить("ОКТМО" , "");
|
||
ДополнительныеКоды.Вставить("ОКАТО" , "");
|
||
ДополнительныеКоды.Вставить("КодИФНСФЛ" , "");
|
||
ДополнительныеКоды.Вставить("КодИФНСЮЛ" , "");
|
||
ДополнительныеКоды.Вставить("КодУчасткаИФНСФЛ", "");
|
||
ДополнительныеКоды.Вставить("КодУчасткаИФНСЮЛ", "");
|
||
Результат.Вставить("ДополнительныеКоды", ДополнительныеКоды);
|
||
|
||
КодыКЛАДР = Новый Структура;
|
||
КодыКЛАДР.Вставить("Регион" , "");
|
||
КодыКЛАДР.Вставить("Район" , "");
|
||
КодыКЛАДР.Вставить("Город" , "");
|
||
КодыКЛАДР.Вставить("НаселенныйПункт", "");
|
||
КодыКЛАДР.Вставить("Улица" , "");
|
||
Результат.Вставить("КодыКЛАДР", КодыКЛАДР);
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает структуру полей помещений адреса для программного формирования адреса.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ТипПомещения - Строка - наименование помещения. Например, "Офис"
|
||
// * Номер - Строка - номер помещения. Например, "1".
|
||
//
|
||
Функция ПоляПомещения() Экспорт
|
||
|
||
Результат = Новый Структура;
|
||
|
||
Результат.Вставить("ТипПомещения", "");
|
||
Результат.Вставить("Номер", "");
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Проверяет, соответствует ли переданный тип адреса муниципальному делению.
|
||
// Функция сравнивает входную строку с каноническим представлением типа адреса,
|
||
// возвращаемым функцией МуниципальныйАдрес().
|
||
//
|
||
// Параметры:
|
||
// ТипАдреса - Строка - тип адресного деления для проверки.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - если Истина, то тип адреса является муниципальным.
|
||
//
|
||
Функция ЭтоМуниципальныйАдрес(ТипАдреса) Экспорт
|
||
|
||
Возврат СтрСравнить(ТипАдреса, МуниципальныйАдрес()) = 0;
|
||
|
||
КонецФункции
|
||
|
||
// Проверяет, соответствует ли переданный тип адреса административно‑территориальному делению.
|
||
// Функция сравнивает входную строку с каноническим представлением типа адреса,
|
||
// возвращаемым функцией АдминистративноТерриториальныйАдрес().
|
||
//
|
||
// Параметры:
|
||
// ТипАдреса - Строка - тип адресного деления для проверки.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - если Истина, то тип адреса является административно‑территориальным.
|
||
//
|
||
Функция ЭтоАдминистративноТерриториальныйАдрес(ТипАдреса) Экспорт
|
||
|
||
Возврат СтрСравнить(ТипАдреса, АдминистративноТерриториальныйАдрес()) = 0;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает каноническую строку, обозначающую административно‑территориальный тип адреса.
|
||
// Используется для унификации сравнений и идентификации типа адреса в других функциях,
|
||
// например, в функции РаботаСАдресами.ПредставлениеАдресногоЭлементаПоУровню -
|
||
// для корректного получения представления адресного элемента с учетом типа деления.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - каноническое представление типа адреса: "Административно-территориальный".
|
||
//
|
||
Функция АдминистративноТерриториальныйАдрес() Экспорт
|
||
Возврат "Административно-территориальный";
|
||
КонецФункции
|
||
|
||
// Возвращает каноническую строку, обозначающую муниципальный тип адреса.
|
||
// Используется для унификации сравнений и идентификации типа адреса в других функциях,
|
||
// например, в функции РаботаСАдресами.ПредставлениеАдресногоЭлементаПоУровню -
|
||
// для корректного получения представления адресного элемента с учетом типа деления.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - каноническое представление типа адреса: "Муниципальный".
|
||
//
|
||
Функция МуниципальныйАдрес() Экспорт
|
||
Возврат "Муниципальный";
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныйПрограммныйИнтерфейс
|
||
|
||
// Возвращаемое значение:
|
||
// СправочникСсылка.СтраныМира
|
||
//
|
||
Функция ОсновнаяСтрана() Экспорт
|
||
Возврат ПредопределенноеЗначение("Справочник.СтраныМира.Россия");
|
||
КонецФункции
|
||
|
||
Функция ПредставлениеАдреса(Адрес, ВключатьСтрануВПредставление, ТипАдреса = Неопределено, ПредставлениеИзПолей = Ложь) Экспорт
|
||
|
||
Если ТипЗнч(Адрес) <> Тип("Структура") Тогда
|
||
ВызватьИсключение НСтр("ru = 'Для создания представления адреса был передан недопустимый тип данных.'");
|
||
КонецЕсли;
|
||
|
||
Если ТипАдреса = Неопределено Тогда
|
||
ТипАдреса = Адрес.AddressType;
|
||
КонецЕсли;
|
||
|
||
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(ТипАдреса) И Не ПредставлениеИзПолей Тогда
|
||
|
||
Если Не Адрес.Свойство("country") Или ПустаяСтрока(Адрес.Country) Тогда
|
||
Возврат Адрес.Value;
|
||
КонецЕсли;
|
||
|
||
ВПредставлениеЕстьСтрана = СтрНачинаетсяС(ВРег(Адрес.Value), ВРег(Адрес.Country));
|
||
Если ВключатьСтрануВПредставление Тогда
|
||
Если Не ВПредставлениеЕстьСтрана Тогда
|
||
Возврат Адрес.Country + ", " + Адрес.Value;
|
||
КонецЕсли;
|
||
Иначе
|
||
Если ВПредставлениеЕстьСтрана И СтрНайти(Адрес.Value, ",") > 0 Тогда
|
||
СписокПолей = СтрРазделить(Адрес.Value, ",");
|
||
СписокПолей.Удалить(0);
|
||
Возврат СтрСоединить(СписокПолей, ",");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Возврат Адрес.Value;
|
||
|
||
КонецЕсли;
|
||
|
||
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(ТипАдреса) И Не ПредставлениеИзПолей Тогда
|
||
Возврат ПредставлениеАдресаВСвободнойФорме(Адрес, ВключатьСтрануВПредставление);
|
||
КонецЕсли;
|
||
|
||
СписокЗаполненныхУровней = Новый Массив;
|
||
|
||
Если ВключатьСтрануВПредставление И Адрес.Свойство("country") И НЕ ПустаяСтрока(Адрес.Country) Тогда
|
||
СписокЗаполненныхУровней.Добавить(Адрес.Country);
|
||
КонецЕсли;
|
||
|
||
Если Адрес.Свойство("zipCode") И НЕ ПустаяСтрока(Адрес.ZipCode) Тогда
|
||
СписокЗаполненныхУровней.Добавить(Адрес.ZipCode);
|
||
КонецЕсли;
|
||
|
||
ПорядокУровнейВАдресе = ИменаУровнейАдресаПоАдресу(Адрес, Истина,, ТипАдреса);
|
||
|
||
СокращатьТипы = ?(УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(ТипАдреса) И ПредставлениеИзПолей, Ложь, Истина);
|
||
|
||
Для каждого ИмяУровня Из ПорядокУровнейВАдресе Цикл
|
||
|
||
Если ЗначениеЗаполнено(Адрес[ИмяУровня]) Тогда
|
||
|
||
Если СтрСравнить(ИмяУровня, "munDistrict") = 0 Тогда
|
||
Адрес[ИмяУровня] = КраткоеНаписаниеМуниципальныхРайонов(Адрес[ИмяУровня], Адрес[ИмяУровня + "Type"]);
|
||
КонецЕсли;
|
||
|
||
Если СтрСравнить(ИмяУровня, "settlement") = 0 Тогда
|
||
Адрес[ИмяУровня] = КраткоеНаписаниеПоселений(Адрес[ИмяУровня], Адрес[ИмяУровня + "Type"]);
|
||
КонецЕсли;
|
||
|
||
СписокЗаполненныхУровней.Добавить(ПредставлениеУровняАдреса(Адрес, ИмяУровня));
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Если Адрес.Свойство("houseNumber") И НЕ ПустаяСтрока(Адрес.HouseNumber) Тогда
|
||
|
||
СписокЗаполненныхУровней.Добавить(СоединитьНомерИТипЗдания(Адрес.HouseNumber, Адрес.HouseType, СокращатьТипы));
|
||
|
||
ИначеЕсли Адрес.Свойство("stead") И Не ПустаяСтрока(Адрес.stead) Тогда
|
||
|
||
СписокЗаполненныхУровней.Добавить(
|
||
СоединитьНомерИТипЗдания(Адрес.stead, НаименованиеЗемельногоУчастка(), СокращатьТипы));
|
||
|
||
КонецЕсли;
|
||
|
||
Если Адрес.Свойство("buildings") И Адрес.Buildings.Количество() > 0 Тогда
|
||
|
||
Для каждого Строение Из Адрес.Buildings Цикл
|
||
Если ЗначениеЗаполнено(Строение.Number) Тогда
|
||
|
||
СписокЗаполненныхУровней.Добавить(СоединитьНомерИТипЗдания(Строение.Number, Строение.Type, СокращатьТипы));
|
||
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
Если Адрес.Свойство("apartments")
|
||
И Адрес.Apartments <> Неопределено
|
||
И Адрес.Apartments.Количество() > 0 Тогда
|
||
|
||
Для каждого Строение Из Адрес.Apartments Цикл
|
||
Если ЗначениеЗаполнено(Строение.Number) Тогда
|
||
Если СтрСравнить(Строение.Type, "Другое") <> 0 Тогда
|
||
СписокЗаполненныхУровней.Добавить(СоединитьНомерИТипЗдания(Строение.Number, Строение.Type, СокращатьТипы));
|
||
Иначе
|
||
СписокЗаполненныхУровней.Добавить(Строение.Number);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецЕсли;
|
||
|
||
Представление = СтрСоединить(СписокЗаполненныхУровней, ", ");
|
||
|
||
Возврат Представление;
|
||
|
||
КонецФункции
|
||
|
||
Функция ЭтоОсновнаяСтрана(Страна) Экспорт
|
||
Возврат СтрСравнить(ОсновнаяСтрана(), Страна) = 0;
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
// Описание национальных полей структуры контактной информации для хранения ее в формате JSON.
|
||
// Основной список полей определяется в одноименной функции общего модуля УправлениеКонтактнойИнформациейКлиентСервер.
|
||
//
|
||
// Параметры:
|
||
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации -
|
||
// Тип контактной информации, определяющий состав полей контактной информации.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура - поля контактной информации для типа Адрес добавленные к основным полям:
|
||
// * value - Строка - представление контактной информации.
|
||
// * comment - Строка - комментарий.
|
||
// * type - Строка - тип контактной информации. См. значение в Перечисление.ТипыКонтактнойИнформации.Адрес.
|
||
// * country - Строка - наименование страны, например "Уругвай".
|
||
// * countryCode - Строка -код страны.
|
||
// * ZIPcode- Строка - почтовый индекс.
|
||
// * addressType - Строка - тип адреса: в свободной форме или с разбивкой по полям.
|
||
// * id - Строка - идентификационный код последнего адресного объекта в иерархи адреса.
|
||
// * addressType - Строка - установленный пользователем тип адреса(только для адресов РФ).
|
||
// Варианты: "Муниципальный", "Административно-территориальный".
|
||
// * area - Строка - наименование региона.
|
||
// * areaType - Строка - сокращение(тип) региона.
|
||
// * areaCode - Строка - код региона РФ.
|
||
// * areaID - Строка - идентификатор региона.
|
||
// * district - Строка - представление района у адресов по административно-территориальному делению.
|
||
// * districtType - Строка - сокращение района у адресов по административно-территориальному делению.
|
||
// * districtID - Строка - идентификатор региона у адресов по административно-территориальному делению.
|
||
// * munDistrict - Строка - представление муниципального района у адресов по муниципальному делению.
|
||
// * munDistrictType - Строка - сокращение муниципального района у адресов по муниципальному делению.
|
||
// * munDistrictID - Строка - идентификатор муниципального района у адресов по муниципальному делению.
|
||
// * city - Строка - наименование города.
|
||
// * cityType - Строка - сокращение (тип) города, например "г".
|
||
// * cityID - Строка - идентификатор муниципального города у адресов по административно-территориальному делению.
|
||
// * settlement - Строка - представление поселения у адресов по муниципальному делению.
|
||
// * settlementType - Строка - сокращение поселения у адресов по муниципальному делению.
|
||
// * settlementID - Строка - идентификатор поселения.
|
||
// * cityDistrict - Строка - представление внутригородского района.
|
||
// * cityDistrictType - Строка - сокращение внутригородского района.
|
||
// * cityDistrictID - Строка - идентификатор внутригородского района.
|
||
// * territory - Строка - представление территории.
|
||
// * territoryType - Строка - сокращение территории.
|
||
// * territoryID - Строка - идентификатор территории.
|
||
// * locality - Строка - представление населенного пункта.
|
||
// * localityType - Строка - сокращение населенного пункта.
|
||
// * localityID - Строка - идентификатор населенного пункта.
|
||
// * street - Строка - название улицы, проспекта, переулка и т.д.. Но также может содержать номер дома, квартиры или
|
||
// офиса.
|
||
// * streetType - Строка - сокращение (тип) улицы, например "ул".
|
||
// * streetID - Строка - идентификатор улицы.
|
||
// * houseType - Строка - тип дома, владения.
|
||
// * houseNumber - Строка - дополнительное поле, которое используется для уточнения или добавления информации.
|
||
// Например, номер дома, Название здания, номер подъезда или этаж
|
||
// * houseID - Строка - идентификатор дома.
|
||
// * apartmentId - идентификатор помещения.
|
||
// * buildings - Массив - содержит структуры(поля структуры: type, number) с перечнем корпусов (строений) адреса.
|
||
// * apartments - Массив - содержит структуры(поля структуры: type, number) с перечнем помещений адреса.
|
||
// * stead - Строка - земельный участок.
|
||
// * steadId - Строка - идентификатор земельного участка.
|
||
// * codeKLADR - Строка - код КЛАДР.
|
||
// * oktmo - Строка - код ОКТМО.
|
||
// * oktmoBudget - Строка - код ОКТМО бюджетополучателя.
|
||
// * okato - Строка - код ОКАТО.
|
||
// * ifnsFLCode - Строка - код ИФНСФЛ.
|
||
// * ifnsULCode - Строка - код ИФНСЮЛ.
|
||
// * ifnsFLAreaCode - Строка - код участка ИФНСФЛ.
|
||
// * ifnsULAreaCode - Строка - код участка ИФНСЮЛ.
|
||
// * admLevels - Массив - порядок административных полей в представлении адреса
|
||
// * munLevels - Массив - порядок муниципальных полей в представлении адреса
|
||
//
|
||
Функция ОписаниеНовойКонтактнойИнформации(Знач ТипКонтактнойИнформации) Экспорт
|
||
|
||
Если ТипЗнч(ТипКонтактнойИнформации) <> Тип("ПеречислениеСсылка.ТипыКонтактнойИнформации") Тогда
|
||
ТипКонтактнойИнформации = "";
|
||
КонецЕсли;
|
||
|
||
Результат = УправлениеКонтактнойИнформациейКлиентСервер.ОписаниеНовойКонтактнойИнформации(ТипКонтактнойИнформации);
|
||
|
||
Если ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
|
||
|
||
Результат.Вставить("id", "");
|
||
Результат.Вставить("areaCode", "");
|
||
Результат.Вставить("areaId", "");
|
||
Результат.Вставить("areaValue", "");
|
||
Результат.Вставить("district", "");
|
||
Результат.Вставить("districtType", "");
|
||
Результат.Вставить("districtId", "");
|
||
Результат.Вставить("munDistrict", "");
|
||
Результат.Вставить("munDistrictType", "");
|
||
Результат.Вставить("munDistrictId", "");
|
||
Результат.Вставить("cityId", "");
|
||
Результат.Вставить("settlement", "");
|
||
Результат.Вставить("settlementType", "");
|
||
Результат.Вставить("settlementId", "");
|
||
Результат.Вставить("cityDistrict", "");
|
||
Результат.Вставить("cityDistrictType", "");
|
||
Результат.Вставить("cityDistrictId", "");
|
||
Результат.Вставить("territory", "");
|
||
Результат.Вставить("territoryType", "");
|
||
Результат.Вставить("territoryId", "");
|
||
Результат.Вставить("locality", "");
|
||
Результат.Вставить("localityType", "");
|
||
Результат.Вставить("localityId", "");
|
||
Результат.Вставить("streetId", "");
|
||
Результат.Вставить("houseType", "");
|
||
Результат.Вставить("houseNumber", "");
|
||
Результат.Вставить("houseId", "");
|
||
Результат.Вставить("apartmentId", "");
|
||
Результат.Вставить("buildings", Новый Массив);
|
||
Результат.Вставить("apartments", Новый Массив);
|
||
Результат.Вставить("codeKLADR", "");
|
||
Результат.Вставить("oktmo", "");
|
||
Результат.Вставить("oktmoBudget", "");
|
||
Результат.Вставить("okato", "");
|
||
Результат.Вставить("asInDocument", "");
|
||
Результат.Вставить("ifnsFLCode", "");
|
||
Результат.Вставить("ifnsULCode", "");
|
||
Результат.Вставить("ifnsFLAreaCode", "");
|
||
Результат.Вставить("ifnsULAreaCode", "");
|
||
Результат.Вставить("stead", "");
|
||
Результат.Вставить("steadId", "");
|
||
Результат.Вставить("admLevels", Новый Массив);
|
||
Результат.Вставить("munLevels", Новый Массив);
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция СопоставлениеНаименованиеУровнюАдреса(ИмяУровня) Экспорт
|
||
|
||
Уровни = Новый Соответствие;
|
||
|
||
Уровни.Вставить("AREA", 1);
|
||
Уровни.Вставить("DISTRICT", 2);
|
||
Уровни.Вставить("MUNDISTRICT", 3);
|
||
Уровни.Вставить("SETTLEMENT", 4);
|
||
Уровни.Вставить("CITY", 5);
|
||
Уровни.Вставить("LOCALITY", 6);
|
||
Уровни.Вставить("TERRITORY", 7);
|
||
Уровни.Вставить("STREET", 8);
|
||
Уровни.Вставить("HOUSE", 9);
|
||
|
||
Возврат Уровни[ВРег(ИмяУровня)];
|
||
|
||
КонецФункции
|
||
|
||
Функция ИдентификаторАдреса(Адрес, ВключатьУлицу, ВключатьУровеньДома = Ложь) Экспорт
|
||
|
||
ИдентификаторАдреса = Неопределено;
|
||
|
||
Уровни = ИменаУровнейАдресаПоАдресу(Адрес, ВключатьУлицу, ВключатьУровеньДома);
|
||
|
||
Для каждого Уровень Из Уровни Цикл
|
||
|
||
Если Адрес.Свойство(Уровень + "Id")
|
||
И ЗначениеЗаполнено(Адрес[Уровень+ "Id"]) Тогда
|
||
ИдентификаторАдреса = Адрес[Уровень + "Id"];
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
Возврат ИдентификаторАдреса;
|
||
|
||
КонецФункции
|
||
|
||
Функция ИменаУровнейАдреса(ТипАдреса, ВключатьУровеньУлицы, ВключатьУровеньДома = Ложь) Экспорт
|
||
|
||
Уровни = Новый Массив;
|
||
|
||
Уровни.Добавить("area");
|
||
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоИностранныйАдресИлиЕАЭС(ТипАдреса) Тогда
|
||
|
||
Уровни.Добавить("district");
|
||
Уровни.Добавить("city");
|
||
Уровни.Добавить("locality");
|
||
|
||
Иначе
|
||
|
||
Если ТипАдреса = "Все" Тогда
|
||
Уровни.Добавить("district");
|
||
Уровни.Добавить("munDistrict");
|
||
Уровни.Добавить("settlement");
|
||
Иначе
|
||
Если ЭтоМуниципальныйАдрес(ТипАдреса) Тогда
|
||
Уровни.Добавить("munDistrict");
|
||
Уровни.Добавить("settlement");
|
||
Иначе
|
||
Уровни.Добавить("district");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Уровни.Добавить("city");
|
||
Уровни.Добавить("locality");
|
||
Уровни.Добавить("territory");
|
||
|
||
КонецЕсли;
|
||
|
||
Если ВключатьУровеньУлицы Тогда
|
||
Уровни.Добавить("street");
|
||
КонецЕсли;
|
||
|
||
Если ВключатьУровеньДома Тогда
|
||
Уровни.Добавить("house");
|
||
КонецЕсли;
|
||
|
||
Возврат Уровни;
|
||
|
||
КонецФункции
|
||
|
||
Функция ИменаУровнейАдресаПоАдресу(Адрес, ВключатьУровеньУлицы, ВключатьУровеньДома = Ложь, ТипАдреса = Неопределено) Экспорт
|
||
|
||
Если ТипАдреса = Неопределено Тогда
|
||
ТипАдреса = Адрес.AddressType;
|
||
КонецЕсли;
|
||
|
||
Если ЭтоМуниципальныйАдрес(ТипАдреса) Тогда
|
||
Уровни = Адрес.munLevels;
|
||
ИначеЕсли ЭтоАдминистративноТерриториальныйАдрес(ТипАдреса) Тогда
|
||
Уровни = Адрес.admLevels;
|
||
Иначе
|
||
Уровни = Новый Массив;
|
||
КонецЕсли;
|
||
|
||
Уровни = ?(ТипЗнч(Уровни) = Тип("Массив"), Новый Массив(Новый ФиксированныйМассив(Уровни)), Новый Массив);
|
||
|
||
Если Уровни.Количество() > 0 Тогда
|
||
|
||
Если Не ВключатьУровеньУлицы Тогда
|
||
Позиция = Уровни.Найти("street");
|
||
Если Позиция <> Неопределено Тогда
|
||
Уровни.Удалить(Позиция);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Позиция = Уровни.Найти("house");
|
||
Если ВключатьУровеньДома Тогда
|
||
Если Позиция = Неопределено Тогда
|
||
Уровни.Добавить("house");
|
||
КонецЕсли;
|
||
Иначе
|
||
Если Позиция <> Неопределено Тогда
|
||
Уровни.Удалить(Позиция);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Позиция = Уровни.Найти("stead");
|
||
Если ВключатьУровеньДома Тогда
|
||
Если Позиция = Неопределено Тогда
|
||
Уровни.Добавить("stead");
|
||
КонецЕсли;
|
||
Иначе
|
||
Если Позиция <> Неопределено Тогда
|
||
Уровни.Удалить(Позиция);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Для Позиция = -Уровни.ВГраница() По 0 Цикл
|
||
Если ТипЗнч(Уровни[-Позиция]) <> Тип("Строка")
|
||
Или СопоставлениеНаименованиеУровнюАдреса(ВРег(Строка(Уровни[-Позиция]))) = Неопределено Тогда
|
||
Уровни.Удалить(-Позиция);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Уровни;
|
||
|
||
КонецЕсли;
|
||
|
||
Уровни.Добавить("area");
|
||
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоИностранныйАдресИлиЕАЭС(ТипАдреса) Тогда
|
||
|
||
Уровни.Добавить("district");
|
||
Уровни.Добавить("city");
|
||
Уровни.Добавить("locality");
|
||
|
||
Иначе
|
||
|
||
Если ТипАдреса = "Все" Тогда
|
||
Уровни.Добавить("district");
|
||
Уровни.Добавить("munDistrict");
|
||
Уровни.Добавить("settlement");
|
||
|
||
Иначе
|
||
Если ЭтоМуниципальныйАдрес(ТипАдреса) Тогда
|
||
Уровни.Добавить("munDistrict");
|
||
Уровни.Добавить("settlement");
|
||
Иначе
|
||
Уровни.Добавить("district");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Уровни.Добавить("city");
|
||
Уровни.Добавить("locality");
|
||
Уровни.Добавить("territory");
|
||
|
||
КонецЕсли;
|
||
|
||
Если ВключатьУровеньУлицы Тогда
|
||
Уровни.Добавить("street");
|
||
КонецЕсли;
|
||
|
||
Если ВключатьУровеньДома Тогда
|
||
Уровни.Добавить("house");
|
||
КонецЕсли;
|
||
|
||
Возврат Уровни;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПредставлениеУровняАдреса(Адрес, ИмяУровня) Экспорт
|
||
|
||
Если (ЭтоМуниципальныйАдрес(Адрес.addressType)
|
||
Или ЭтоАдминистративноТерриториальныйАдрес(Адрес.addressType))
|
||
И ЭтоИмяУровняРегиона(ИмяУровня)
|
||
И ЗначениеЗаполнено(Адрес["areaValue"]) Тогда
|
||
Возврат Адрес["areaValue"];
|
||
КонецЕсли;
|
||
|
||
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СоединитьНаименованиеИТипАдресногоОбъекта(
|
||
Адрес[ИмяУровня], Адрес[ИмяУровня + "Type"], СтрСравнить(ИмяУровня, "area") = 0);
|
||
|
||
КонецФункции
|
||
|
||
Функция ЭтоИмяУровняРегиона(ИмяУровня)
|
||
Возврат СтрСравнить(ИмяУровня, "area") = 0;
|
||
КонецФункции
|
||
|
||
Функция НаименованиеЗемельногоУчастка() Экспорт
|
||
Возврат "Зем. участок";
|
||
КонецФункции
|
||
|
||
Функция ТипЗемельногоУчастка() Экспорт
|
||
Возврат "з/у";
|
||
КонецФункции
|
||
|
||
Функция СоединитьНомерИТипЗдания(Знач Номер, Знач ТипЗданияИлиПомещения, СокращатьТипы = Истина) Экспорт
|
||
|
||
Если ПустаяСтрока(ТипЗданияИлиПомещения) Тогда
|
||
Возврат Номер;
|
||
КонецЕсли;
|
||
|
||
Если СокращатьТипы Тогда
|
||
СокращенияЗданийИПомещений = СокращенияЗданийИПомещений();
|
||
|
||
Если СокращенияЗданийИПомещений[ВРег(ТипЗданияИлиПомещения)] = Неопределено Тогда
|
||
Возврат НРег(ТипЗданияИлиПомещения) + " "+ Номер;
|
||
КонецЕсли;
|
||
|
||
Возврат СокращенияЗданийИПомещений[ВРег(ТипЗданияИлиПомещения)] + " " + Номер;
|
||
Иначе
|
||
Возврат ТипЗданияИлиПомещения + " " + Номер;
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
Функция СокращенияЗданийИПомещений() Экспорт
|
||
|
||
Сокращения = Новый Соответствие;
|
||
|
||
// АПК:1036-выкл Данные из адресного классификатора (сокращения)
|
||
Сокращения.Вставить("ВЛАДЕНИЕ", "влд.");
|
||
Сокращения.Вставить("ГАРАЖ", "г-ж");
|
||
Сокращения.Вставить("ДОМ", "д.");
|
||
Сокращения.Вставить("ДОМОВЛАДЕНИЕ", "двлд.");
|
||
Сокращения.Вставить("ЗДАНИЕ", "зд.");
|
||
Сокращения.Вставить("ЗЕМЕЛЬНЫЙ УЧАСТОК", "з/у");
|
||
Сокращения.Вставить("ЗЕМ. УЧАСТОК", "з/у");
|
||
Сокращения.Вставить("КВАРТИРА", "кв.");
|
||
Сокращения.Вставить("КОМНАТА", "ком.");
|
||
Сокращения.Вставить("ПОДВАЛ", "подв.");
|
||
Сокращения.Вставить("КОТЕЛЬНАЯ", "кот.");
|
||
Сокращения.Вставить("ПОГРЕБ", "п-б");
|
||
Сокращения.Вставить("КОРПУС", "к.");
|
||
Сокращения.Вставить("МАШИНО-МЕСТО", "м/м");
|
||
Сокращения.Вставить("ОБЪЕКТ НЕЗАВЕРШЕННОГО СТРОИТЕЛЬСТВА", "ОНС");
|
||
Сокращения.Вставить("ОФИС", "офис");
|
||
Сокращения.Вставить("ПАВИЛЬОН", "пав.");
|
||
Сокращения.Вставить("ПОМЕЩЕНИЕ", "помещ.");
|
||
Сокращения.Вставить("РАБОЧИЙ УЧАСТОК", "раб.уч.");
|
||
Сокращения.Вставить("СКЛАД", "скл.");
|
||
Сокращения.Вставить("СООРУЖЕНИЕ", "соор.");
|
||
Сокращения.Вставить("СТРОЕНИЕ", "стр.");
|
||
Сокращения.Вставить("ТОРГОВЫЙ ЗАЛ", "торг.зал");
|
||
Сокращения.Вставить("ЦЕХ", "цех");
|
||
// АПК:1036-вкл
|
||
|
||
Возврат Сокращения;
|
||
|
||
КонецФункции
|
||
|
||
// Обратная совместимость
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка
|
||
//
|
||
Функция КраткоеНаписаниеМуниципальныхРайонов(Наименование, Сокращение) Экспорт
|
||
|
||
// АПК: 1297-выкл Данные адресного классификатора, не локализуются
|
||
Если СтрСравнить(Сокращение, "г.о.") = 0 Тогда
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Городской округ", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
Если СтрСравнить(Сокращение, "м.р-н") = 0 Тогда
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "муниципальный район", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
Если СтрСравнить(Сокращение, "вн.тер.") = 0 Тогда
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Внутригородская территория", "")); // @Non-NLS-1
|
||
Сокращение = "вн.тер.г.";
|
||
КонецЕсли;
|
||
Если СтрСравнить(Сокращение, "вн.тер.г.") = 0 Тогда
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Внутригородская территория", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
Если СтрСравнить(Сокращение, "м.о.") = 0 Или СтрСравнить(Сокращение, "мун. окр.") = 0 Тогда // @Non-NLS-2
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Муниципальный округ", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
// АПК: 1297-вкл
|
||
|
||
Возврат Наименование;
|
||
|
||
КонецФункции
|
||
|
||
// Обратная совместимость
|
||
//
|
||
// Параметры:
|
||
// Наименование - Строка
|
||
// Сокращение - Строка
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка
|
||
//
|
||
Функция КраткоеНаписаниеПоселений(Наименование, Сокращение) Экспорт
|
||
|
||
// АПК: 1297-выкл Данные адресного классификатора, не локализуются
|
||
Если СтрСравнить(Сокращение, "г.п.") Или СтрСравнить(Сокращение, "г. п.") = 0 Тогда // @Non-NLS-2
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Городское поселение", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
Если СтрСравнить(Сокращение, "вн.р-н") = 0 Тогда
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Внутригородской район", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
Если СтрСравнить(Сокращение, "с.п.") = 0 Тогда
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Сельское поселение", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
Если СтрСравнить(Сокращение, "меж.тер.") = 0 Тогда
|
||
Наименование = СокрЛП(СтрЗаменить(Наименование, "Межселенная территория", "")); // @Non-NLS-1
|
||
КонецЕсли;
|
||
// АПК: 1297-вкл
|
||
|
||
Возврат Наименование;
|
||
|
||
КонецФункции
|
||
|
||
#Область ПрочиеСлужебныеПроцедурыИФункции
|
||
|
||
Функция ПредставлениеАдресаВСвободнойФорме(Знач Адрес, Знач ВключатьСтрануВПредставление)
|
||
|
||
Если ВключатьСтрануВПредставление И Адрес.Свойство("Country") И НЕ ПустаяСтрока(Адрес.Country) Тогда
|
||
ЧастиАдреса = СтрРазделить(Адрес.Value, ",");
|
||
Если ЗначениеЗаполнено(Адрес.Value) И СтрСравнить(ЧастиАдреса[0], Адрес.Country) = 0 Тогда
|
||
ЧастиАдреса.Удалить(0);
|
||
Адрес.Value = СтрСоединить(ЧастиАдреса, ",");
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Адрес.Value;
|
||
|
||
КонецФункции
|
||
|
||
// Проверить корректность кода города и номера телефона кодов страны.
|
||
//
|
||
// Параметры:
|
||
// ПоляТелефона - см. УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона
|
||
// СписокОшибок - СписокЗначений
|
||
//
|
||
Процедура ПроверитьКорректностьКодовСтраныИГорода(ПоляТелефона, СписокОшибок) Экспорт
|
||
|
||
КодСтраны = ПоляТелефона.КодСтраны;
|
||
КодГорода = ПоляТелефона.КодГорода;
|
||
НомерТелефона = ПоляТелефона.НомерТелефона;
|
||
|
||
Если КодСтраны = "7" ИЛИ КодСтраны = "+7" Тогда
|
||
Если СтрДлина(УправлениеКонтактнойИнформациейКлиентСервер.ОставитьТолькоЦифрыВСтроке(НомерТелефона)) > 7 Тогда
|
||
СписокОшибок.Добавить("НомерТелефона", НСтр("ru = 'В России номер телефона не может быть больше 7 цифр'"));
|
||
КонецЕсли;
|
||
|
||
Если СтрНачинаетсяС(КодГорода, "9") И СтрДлина(КодГорода) <> 3 Тогда
|
||
СписокОшибок.Добавить("НомерТелефона", НСтр("ru = 'В России номера мобильных телефонов должны содержать 3 цифры'"));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * НаселенныйПунктДетально - Структура
|
||
// * УАдресаЕстьУлицы - Булево
|
||
//
|
||
Функция ВозвращаемыеДанныеОбАдресе() Экспорт
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("НаселенныйПунктДетально", Новый Структура);
|
||
Результат.Вставить("УАдресаЕстьУлицы", Ложь);
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция НаименованиеРодительскогоОбъекта(Адрес, Родитель) Экспорт
|
||
|
||
ИменаУровней = ИменаУровнейАдреса("Все", Истина);
|
||
|
||
НаименованиеРодительскогоОбъекта = "";
|
||
Для Каждого ИмяУровня Из ИменаУровней Цикл
|
||
Если СтрСравнить(Адрес[ИмяУровня + "Id"], Родитель) = 0 Тогда
|
||
ЭтоРегион = СтрСравнить(ИмяУровня, "area") = 0;
|
||
НаименованиеРодительскогоОбъекта = УправлениеКонтактнойИнформациейКлиентСервер.СоединитьНаименованиеИТипАдресногоОбъекта(
|
||
Адрес[ИмяУровня], Адрес[ИмяУровня+ "Type"], ЭтоРегион);
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Возврат НаименованиеРодительскогоОбъекта;
|
||
|
||
КонецФункции
|
||
|
||
/////////////////////////////////////
|
||
// Работа с XDTO
|
||
|
||
|
||
// Возвращает признак того, является ли строка данных контактной информации XML данными.
|
||
//
|
||
// Параметры:
|
||
// Текст - Строка - проверяемая строка.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - результат проверки.
|
||
//
|
||
Функция ЭтоКонтактнаяИнформацияВXML(Знач Текст) Экспорт
|
||
|
||
Возврат ТипЗнч(Текст) = Тип("Строка") И СтрНачинаетсяС(СокрЛ(Текст), "<");
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти |