Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Можно ли получить код ФИАС в 1С

Можно ли получить код ФИАС в 1С
Я
   Документовед
 
06.08.21 - 10:05
Допустим в 1С, например бухгалтерии забит адрес по всем правилам, можно ли оттуда получить код ФИАС?

Или как еще можно его получить именно виде кода?
   Garykom
 
1 - 06.08.21 - 10:07
код дома нет, только улицы
   Elf_80_lvl
 
2 - 06.08.21 - 10:08
Вообще я пользую внешний сервис, там есть платные функции, но то что тебе нужно бесплатно можно делать.
https://dadata.ru/
   Elf_80_lvl
 
3 - 06.08.21 - 10:11
Функция ПолучитьДанныеФИАС(Адрес)   Экспорт
    
    Результат = Новый Структура;
    Результат.Вставить("ФИАС", "");
    Результат.Вставить("ПолныйАдрес", "");
    Результат.Вставить("Уровень", "");
        
    //Если ПустаяСтрока(Токен) Тогда 

    //    Сообщить("Заполните токен!");

    //    Возврат Результат;

    //КонецЕсли;

    
    HTTPЗапрос = Новый HTTPЗапрос();
    HTTPЗапрос.АдресРесурса = "/api/v2/suggest/address";
    
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/xml");
    HTTPЗапрос.Заголовки.Вставить("Accept", "application/xml");
    HTTPЗапрос.Заголовки.Вставить("Authorization", "Token "+"ТВОЙ ТОКЕН КОТОРЫЙ ДАЮТ ПОСЛЕ РЕГИСТРАЦИИ НА САЙТЕ"); 
    HTTPЗапрос.УстановитьТелоИзСтроки("<req><query>" + Текст + "</query></req>"); 
    
    Соединение = Новый HTTPСоединение("dadata.ru",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
    Попытка
        ОтветHTTP = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
    Исключение
        Предупреждение("Соединение с Web-сервисом не установлено, свяжитесь с администратором"+ Символы.ПС
                          + ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;
    Тело = ОтветHTTP.ПолучитьТелоКакСтроку();
    
    Если ОтветHTTP.КодСостояния = 200 Тогда
        ЧтениеXML = Новый ЧтениеXML;
        ЧтениеXML.УстановитьСтроку(Тело);

        ПолныйАдрес = Ложь;
        ФИАС = Ложь;
        Уровень = Ложь;
        
        Пока ЧтениеXML.Прочитать() Цикл
            
            Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                Если ЧтениеXML.Имя = "unrestricted_value" Тогда
                    ПолныйАдрес = Истина;
                Иначе
                    ПолныйАдрес = Ложь;
                КонецЕсли;
                Если ЧтениеXML.Имя = "fias_id" Тогда
                    ФИАС = Истина;
                Иначе
                    ФИАС = Ложь;
                КонецЕсли;
                Если ЧтениеXML.Имя = "fias_level" Тогда
                    Уровень = Истина;
                Иначе
                    Уровень = Ложь;
                КонецЕсли;
            КонецЕсли;
            
            Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
                Если ПолныйАдрес Тогда
                    Результат.ПолныйАдрес = ЧтениеXML.Значение;
                КонецЕсли;
                Если ФИАС Тогда
                    Результат.ФИАС = ЧтениеXML.Значение;
                КонецЕсли;
                Если Уровень Тогда
                    Результат.Уровень = ЧтениеXML.Значение;
                КонецЕсли;
            КонецЕсли;
            
        КонецЦикла;
        
        ЧтениеXML.Закрыть();
        стрЗначение = "";
         
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции
   Документовед
 
4 - 06.08.21 - 10:12
(3) Спасибо, попробую.
   Elf_80_lvl
 
5 - 06.08.21 - 10:15
(3) В коде переменную не поменял будет ругаться, вот так правильно
 HTTPЗапрос.УстановитьТелоИзСтроки("<req><query>" + Адрес + "</query></req>");

Список тем форума
 
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.