Naviaddress API
1C
How to use Naviaddress API with 1C ERP
Naviaddress API can be easily integrated into 1C platform for storing the extended information on the counterparty or asset location. Let's look at API work sequence using the 1C language.

To begin with, create the following components on the counterparty card:

• a bookmark with naviaddress

• string field where you can enter and store naviaddress on this bookmark

• text field for naviaddress card data

• "Get Naviaddress Data" button which we will apply button-press handling script to.

The arrangement of elements may be approximately the same as on the screenshot below.

https://swagger.naviaddress.com/swagger/#operations-Addresses-ApiV{versionAddressesByContainerByNaviaddressGetNow add a button-press handling program.

To begin with, create a body of the procedure that will run on the server, and define the necessary constants. In this example, we'll use the simple GET Addresses method.

For the country container we'll set the value to "7", because we will use naviaddresses for Russian corporate counterparties only in this example.
&НаСервере
Процедура ПолучитьДанныеНавиадресаНаСервере()
	
	Сервер 			= "staging-api.naviaddress.com";
	Версия 			= "1.5";
	Контейнер 		= "7";
	Навиадрес 		= Объект.Навиадрес;
	АдресРесурса 	= СтрШаблон("/api/v%1/Addresses/%2/%3", Версия, Контейнер, Навиадрес);

	// Here we will write the program code

КонецПроцедуры
Generating a GET request, sending and receiving a JSON structure in response, will take a significant part of our program.

In the first part of this code, we prepare an HTTP request header, indicating the sending data type "application / json".

Then we make a request to the Naviaddress platform server, which returns a string containing the JSON object ЧтениеJSON, which we then convert to Ответ variable using the ПрочитатьJSON() function.
	ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Accept", 		"application/json");
	Заголовки.Вставить("Content-Type", 	"application/json");
	HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,, ЗащищенноеСоединение);
	HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
	HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
	ТекстОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();	
	
	Если Не HTTPОтвет.КодСостояния = 200 Тогда
		Объект.ДанныеНавиадреса = "Данные не найдены";	
		Возврат;
	КонецЕсли;

	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
	Ответ = ПрочитатьJSON(ЧтениеJSON);
	Если Не ТипЗнч(Ответ) = Тип("Структура") Или Не Ответ.Свойство("result") Тогда
		Объект.ДанныеНавиадреса = "Данные не найдены";	
		Возврат;
	КонецЕсли;
Upon receiving and decrypting the data is stored in Ответ variable, where they can be already used for handling from. For example, so you can get information on the description, postal address and geographical coordinates of an object.
ДанныеНавиадреса = "Name: " +Ответ.result.name;
	Если Ответ.result.Свойство("description") Тогда
		ДанныеНавиадреса = ДанныеНавиадреса + Символы.ПС + "Description: " + Ответ.result.description;
	КонецЕсли;
	Если Ответ.result.Свойство("postal_address") Тогда
		ДанныеНавиадреса = ДанныеНавиадреса + Символы.ПС + "Postal address: " + Ответ.result.postal_address;
	КонецЕсли;
	Если Ответ.result.Свойство("point") Тогда
		ДанныеНавиадреса = ДанныеНавиадреса + Символы.ПС + "Point: " + Ответ.result.point.lat +"; "+Ответ.result.point.lng;
	КонецЕсли;
If a property with the path description (so-called "last mile") is set in the naviaddress, it can be get from the last_mile property. At the same time, you need to check how this last mile is set:

• as a text description - then you can just take the last_mile.text property

• as a sequence of steps - then to describe the steps you will have to make a loop on the last_mile.steps property

	Если Ответ.result.Свойство("last_mile") Тогда
		ДанныеНавиадреса = ДанныеНавиадреса + Символы.ПС + "Last mile: ";
		Если Ответ.result.last_mile.type = "text" Тогда
			ДанныеНавиадреса = ДанныеНавиадреса + Ответ.result.last_mile.text;
		Иначе
			НомерШага = 0;
			Для каждого Шаг Из Ответ.result.last_mile.steps Цикл
				НомерШага = НомерШага + 1;
				ДанныеНавиадреса = ДанныеНавиадреса + Символы.ПС + "             " + НомерШага + ") " + Шаг.Text
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
	
	Объект.ДанныеНавиадреса = ДанныеНавиадреса;
The full source code of the program in 1C can be downloaded here.

Many thanks to my colleagues from the 1C Development Center of I-Teco company: Andrey Silin and Andrey Borisov for their help with the integration example.

written by: A.Gershun (09/11/2018)

Made on
Tilda