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

Или как еще можно его получить именно виде кода?
1 Garykom
 
гуру
06.08.21
10:07
код дома нет, только улицы
2 Elf_80_lvl
 
06.08.21
10:08
Вообще я пользую внешний сервис, там есть платные функции, но то что тебе нужно бесплатно можно делать.
https://dadata.ru/
3 Elf_80_lvl
 
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) Спасибо, попробую.
5 Elf_80_lvl
 
06.08.21
10:15
(3) В коде переменную не поменял будет ругаться, вот так правильно
HTTPЗапрос.УстановитьТелоИзСтроки("<req><query>" + Адрес + "</query></req>");
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший