Определить регион по индексу. Определить регион по индексу.
// Определить регион по индексу.
//
// Параметры:
// Индекс - Строка - Почтовый индекс определимого региона.
//
// Возвращаемое значение:
// Структура - Код и наименование региона, Неопределенно - если регион не найден.
// * КодСубъектаРФ - Число - код субъекта РФ.
// * Представление - Строка - представление субъекта РФ.
//
Функция ОпределитьРегионПоИндексу(Индекс) Экспорт
Сведения = СведенияОСубъектахРФ();
Результат = Новый Структура("Представление, КодСубъектаРФ");
ПервыйТриЦифрыИндекса = Число(Лев(Индекс, 3));
Для каждого Регион Из Сведения Цикл
ДиапазонПочтовыхИндексов = Регион.ДиапазонПочтовыхИндексов;
Диапазоны = СтрРазделить(ДиапазонПочтовыхИндексов, ",");
Для каждого Диапазон Из Диапазоны Цикл
Интервалы = СтрРазделить(Диапазон, "-");
Если Интервалы.Количество() = 1 Тогда
Если Число(Интервалы[0]) = ПервыйТриЦифрыИндекса Тогда
Результат.КодСубъектаРФ = Регион.КодСубъектаРФ;
Результат.Представление = ПредставлениеРегиона(Регион.Наименование, Регион.Сокращение);
Возврат Результат;
КонецЕсли;
Иначе
Если Число(Число(Интервалы[1])) >= ПервыйТриЦифрыИндекса
И Число(Интервалы[0]) <= ПервыйТриЦифрыИндекса Тогда
Результат.КодСубъектаРФ = Регион.КодСубъектаРФ;
Результат.Представление = ПредставлениеРегиона(Регион.Наименование, Регион.Сокращение);
Возврат Результат;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат Неопределено;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
РегионАдресаКонтактнойИнформации (БСП)
НаименованиеРегионаПоКоду (БСП)
КодРегионаПоНаименованию (БСП)