Для обмена с API Эвотор в личном кабинете требуется приобрести любое приложение обмена с 1С. В настройках будет указан токен обмена.
Разработана обработка обмена с Эвотор API с 4 кнопками:
- Получить магазины;
- Получить товары;
- Отправить товар (выделенный);
- Получить продажи (за конкретный день).
Весь код выполняется на клиенте. Это шаблон, который адаптировать для любой конфигурации. Проверено на пустой конфигурации на платформе 1С версии 8.3.26.1498.
Код обработки ниже:
&НаКлиенте
Процедура ПолучитьМагазины(Команда)
ОтветСтруктура = GET("/api/v1/inventories/stores/search");
Магазины.Очистить();
Для Каждого Магазин из ОтветСтруктура Цикл
НовыйМагазин = Магазины.Добавить();
ЗаполнитьЗначенияСвойств(НовыйМагазин, Магазин);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьТовары(Команда)
storeUuid = Элементы.Магазины.ТекущиеДанные.uuid;
ОтветСтруктура = GET("/api/v1/inventories/stores/" + storeUuid + "/products");
Товары.Очистить();
Для Каждого Товар из ОтветСтруктура Цикл
НовыйТовар = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НовыйТовар, Товар);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьТовар(Команда)
ТоварыМассив = Новый Массив;
ТоварСтруктура = Новый Структура("uuid, name, group, type, quantity, measureName, tax, price, allowToSell");
ЗаполнитьЗначенияСвойств(ТоварСтруктура, Элементы.Товары.ТекущиеДанные);
ТоварыМассив.Добавить(ТоварСтруктура);
storeUuid = Элементы.Магазины.ТекущиеДанные.uuid;
POST("/api/v1/inventories/stores/" + storeUuid + "/products", ТоварыМассив);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьПродажи(Команда)
storeUuid = Элементы.Магазины.ТекущиеДанные.uuid;
gtCloseDate = ЗаписатьДатуJSON(Дата, ФорматДатыJSON.ISO);
ltCloseDate = ЗаписатьДатуJSON(КонецДня(Дата), ФорматДатыJSON.ISO);
ОтветСтруктура = GET("/api/v1/inventories/stores/" + storeUuid + "/documents?" +
"gtCloseDate=" + gtCloseDate + ".000+0000&" +
"ltCloseDate=" + ltCloseDate + ".000+0000");
Продажи.Очистить();
Для каждого Документ из ОтветСтруктура Цикл
Для каждого Транзакция из Документ.transactions Цикл
Если Транзакция.type = "REGISTER_POSITION" Тогда
НоваяПродажа = Продажи.Добавить();
ЗаполнитьЗначенияСвойств(НоваяПродажа, Транзакция);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция GET(АдресРесурса)
HTTPСоединение = Новый HTTPСоединение("api.evotor.ru",,,,,,
Новый ЗащищенноеСоединениеOpenSSL);
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
HTTPЗапрос.Заголовки.Вставить("x-authorization", token);
HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("GET", HTTPЗапрос);
ОтветСтрокаJson = HTTPОтвет.ПолучитьТелоКакСтроку();
ОтветЧтениеJSON = Новый ЧтениеJSON;
ОтветЧтениеJSON.УстановитьСтроку(ОтветСтрокаJson);
ОтветСтруктура = ПрочитатьJSON(ОтветЧтениеJSON);
Возврат ОтветСтруктура;
КонецФункции
&НаКлиенте
Функция POST(АдресРесурса, ТелоСтруктура)
HTTPСоединение = Новый HTTPСоединение("api.evotor.ru",,,,,,
Новый ЗащищенноеСоединениеOpenSSL);
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
HTTPЗапрос.Заголовки.Вставить("x-authorization", token);
HTTPЗапрос.Заголовки.Вставить("content-type","application/json");
ТелоЗаписьJSON = Новый ЗаписьJSON;
ТелоЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ТелоЗаписьJSON, ТелоСтруктура);
ТелоСтрока = ТелоЗаписьJSON.Закрыть();
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоСтрока);
HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
ОтветСтрока = HTTPОтвет.ПолучитьТелоКакСтроку();
Сообщить(ОтветСтрока);
КонецФункции
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.168.19