Вход | Регистрация
 

УТ 11.4 Получить город из адреса

УТ 11.4 Получить город из адреса
Я
   hawk1
 
08.09.21 - 21:50
Как получить город из адреса организации и контрагента?
   mikecool
 
1 - 08.09.21 - 21:53
город - хранится в отдельном поле КИ
   d4rkmesa
 
2 - 08.09.21 - 22:46
(0) Что-то вроде:

// Функция - Город адреса контактной информации

//
// Параметры:

//  Адрес     -      Адрес в формате JSON 
// 

// Возвращаемое значение:
//   - наименование города в удобочитаемом формате, к примеру, г. Ростов-на-Дону

//
Функция ГородАдресаКонтактнойИнформации(Знач Адрес)
    
    Если ТипЗнч(Адрес) = Тип("Строка") Тогда                  
        Если ПустаяСтрока(Адрес) Тогда
            Возврат "";
        КонецЕсли;
    
        Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоКонтактнаяИнформацияВXML(Адрес) Тогда
            Адрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(Адрес, Перечисления.ТипыКонтактнойИнформации.Адрес);
        КонецЕсли;
        
        Адрес = УправлениеКонтактнойИнформациейСлужебный.JSONВКонтактнуюИнформациюПоПолям(Адрес, Перечисления.ТипыКонтактнойИнформации.Адрес);
        
    ИначеЕсли ТипЗнч(Адрес) <> Тип("Структура") Тогда
        
        ВызватьИсключение НСтр("ru = 'Невозможно определить город, ожидается адрес.'");
        
    КонецЕсли;
    
    Регион = СокрЛП(Адрес.Area + " " + Адрес.AreaType);
    
    Если РаботаСАдресами.ЭтоГородФедеральногоЗначения(Регион) Тогда
        Возврат СокрЛП(Адрес.AreaType + ". " + Адрес.Area);
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Адрес.City) Тогда
        Город = СокрЛП(Адрес.CityType + ". " + Адрес.City);
    ИначеЕсли ЗначениеЗаполнено(Адрес.Locality) Тогда    //если не указан город, выводим населенный пункт в формате: Ростовская область, Азовский р-н, пос. Овощной

        Город = Регион;    
        Если ЗначениеЗаполнено(Адрес.District) Тогда
            Город = Город + ", " + Адрес.District + ?(ЗначениеЗаполнено(Адрес.DistrictType), " " + Адрес.DistrictType, "");
        КонецЕсли;
        Город = Город + ", " + ?(ЗначениеЗаполнено(Адрес.LocalityType), Адрес.LocalityType + ". ", "") + Адрес.Locality;
    КонецЕсли;
    
    Возврат Город;
    
КонецФункции

   hawk1
 
3 - 10.09.21 - 15:48
(2) А если строка адреса не в JSOM&
   Быдло замкадное
 
4 - 10.09.21 - 15:54
(1) тогда это гадание на кофейной гуще.
   Быдло замкадное
 
5 - 10.09.21 - 15:54
(4) это к (3)
   PLUT
 
6 - 10.09.21 - 15:58
(0) Помогите пожалуйста !!!( с меня подарок)) Пять способов получения Хлорида Цинка???

1) принять в дар
2) найти
3) купить
4) украсть
5) взять фамилию Цинк и завести сына Хлорида

Где мой подарок ?

можно адрес скормить дадате и она город вернет с большой вероятностью :)
   Kassern
 
7 - 10.09.21 - 16:25
(3) если у вас тупо строка с адресом при чем без какой то явной последовательности, то тут лишь скармливать адрес внешним сервисам, к примеру яндексу и молиться, чтобы он понял по адресу, что это такое и выдал вам город.
   ssh2006
 
8 - 10.09.21 - 17:50
(3) делал такое через запросы к сервису dadata
   Vovik
 
9 - 10.09.21 - 22:08
Как вариант. для извращенцев. Разбить адрес на слова по пробелу и искать в списке городов.
   d4rkmesa
 
10 - 11.09.21 - 10:57
(3) Там работает для адресов XML и JSON. Конечно, если это устаревший формат с запятыми и пробелами, то это наверное не подойдет (хотя в БСП, возможно, найдется функция преобразования).

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.