Загрузка транзакций о заправках с сайта ППР (Передовые платежные решения) за период в 1С

11.08.24

Интеграция - Сайты и интернет-магазины

Внешняя обработка для загрузки транзакций с сайта ППР за период, создания документов поступления товаров и услуг по каждой топливной карте и документа счет-фактура к документам поступления.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Загрузка транзакций о заправках с сайта ППР(Передовые платежные решения) за период в 1С
.epf 31,77Kb
6
6 Скачать (1 SM) Купить за 1 850 руб.

Публикации по данному вопросу есть //infostart.ru/public/1154740/ , //infostart.ru/public/1664832/, переписывать вводную часть не буду. Однако техническая сторона вопроса, на мой взгляд не раскрыта, и требует более детального освещения. Для решения задачи будем использовать внешнюю обработку.

1. Согласно документации ППР, для получения списка всех транзакций за интересующий нас период, мы должны сформировать строку запроса вида: GET "https://online.petrolplus.ru/api/public-api/v2/transactions?dateFrom=2023-02-25&dateTo=2023-02-28&format=json" -H  "Authorization: paqSBUCsBTObAhXRlsQbOMAlVwjOyoHd" Параметры dateFrom и dateTo будем брать из соответствующих реквизитов формы в момент запроса, а для адреса сервера, строки запроса и ключа API создадим соответствующие реквизиты обработки. Параметры подключения будем сохранять в хранилище общих настроек индивидуально для каждого пользователя.

&НаКлиенте
Процедура СохранитьНастройкиПоключения(Команда)
	ПараметрыПодключения = Новый Структура;
    ПараметрыПодключения.Вставить("АдресСервера",Объект.АдресСервера);
	ПараметрыПодключения.Вставить("СтрокаЗапроса",Объект.СтрокаЗапроса);
    ПараметрыПодключения.Вставить("Ключ",Объект.Ключ);
	СохранитьПараметрыНаСервере(ПараметрыПодключения);
	Закрыть(); 
КонецПроцедуры //СохранитьНастройкиПоключения

&НаСервере
Процедура СохранитьПараметрыНаСервере(Параметры)
	КлючОбъекта  = "ПараметрыПодключенияППР"; 
    КлючНастроек = "НастройкиПодключения";
    ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Параметры,,ИмяПользователя());
КонецПроцедуры // СохранитьПараметрыНаСервере

При запуске обработки ранее сохраненные настройки будут разгружены в реквизиты объекта, то есть в реквизиты обработки.

&НаСервере
Процедура ЗагрузитьПараметрыНаСервере()
	СтруктураОбщихПараметров = Неопределено;
	КлючОбъекта  = "ПараметрыПодключенияППР"; 
	КлючНастроек = "НастройкиПодключения";
	СтруктураОбщихПараметров = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек,,,ИмяПользователя());
	Если ТипЗнч(СтруктураОбщихПараметров) = Тип("Структура") Тогда
		СтруктураОбщихПараметров.Свойство("АдресСервера",Объект.АдресСервера);
		СтруктураОбщихПараметров.Свойство("СтрокаЗапроса",Объект.СтрокаЗапроса);
		СтруктураОбщихПараметров.Свойство("Ключ",Объект.Ключ);
	КонецЕсли;
КонецПроцедуры //ЗагрузитьПараметрыНаСервере

2. Для получения списка транзакций создадим новый объект СоединениеHTTP, используя ранее сохраненные параметры. В качестве заголовков Content-Type и параметра format установим значения согласно документации ППР. Сформируем строку запроса, создадим ЗапросHTTP. Установим соединение используя метод GET, ответ сервера запишем в ОтветHTTP. Выполним десериализацию тела ответа с помощью функции ПрочитатьJSON для получения данных ответа в виде структурированной сущности.

 &НаСервере
 Функция ПолучитьДанныеСайта(ПараметрыПодключения)
	 СоединениеHTTP = Новый HTTPСоединение(ПараметрыПодключения.АдресСервера,
	 		,,,,,Новый ЗащищенноеСоединениеOpenSSL());
	 Заголовки = Новый Соответствие();
	 Заголовки.Вставить("Content-Type", "application/json");
	 Заголовки.Вставить("Authorization", ПараметрыПодключения.Ключ);
	 СтрокаЗапросаСПараметрами = СтрШаблон("%1?dateFrom=%2&dateTo=%3&format=json",
	 		ПараметрыПодключения.СтрокаЗапроса, 
			ПараметрыПодключения.НачПериода, 
			ПараметрыПодключения.КонПериода);
	 ЗапросHTTP = Новый HTTPЗапрос(СтрокаЗапросаСПараметрами, Заголовки);
	 ОтветHTTP = СоединениеHTTP.ВызватьHTTPМетод("GET", ЗапросHTTP);
	 СтруктураОтвета = Новый Структура;
	 СтруктураОтвета.Вставить("КодСостояния", ОтветHTTP.КодСостояния);
	 Попытка
		 ЧтениеJSON = Новый ЧтениеJSON;
		 ЧтениеJSON.УстановитьСтроку(ОтветHTTP.ПолучитьТелоКакСтроку("UTF-8"));
		 ОтветСервера = ПрочитатьJSON(ЧтениеJSON);
		 СтруктураОтвета.Вставить("ОтветСервера", ОтветСервера);
	 Исключение
		 Сообщить(ОписаниеОшибки());
		 Возврат Неопределено;
	 КонецПопытки;
	 Возврат СтруктураОтвета;	 
 КонецФункции // ПолучитьДанныеСайта

3. Проанализируем код ответа сервера, и в случае кода 200, что означает успешное выполнение запроса, и наличия транзакций, преобразуем данные ответа в таблицу значений ТЗ. Для этого сформируем список колонок ТЗ в соответствии с данными ответа сервера. Так как табличная часть СписокТранзакций изначально содержит только колонку НомерСтроки добавляем колонки аналогично таблице значений. Далее заполняем ТЗ, и выводим в табличную часть СписокТранзакций на форме обработки.

 &НаСервере
 Процедура ЗаполнитьТабличнуюЧасть(ПараметрыПодключения)
	 СтруктураОтвета = ПолучитьДанныеСайта(ПараметрыПодключения);
	 Если СтруктураОтвета = Неопределено Тогда
		 Возврат; 
	 КонецЕсли;
	 Если СтруктураОтвета.КодСостояния = 200 Тогда
		 Если СтруктураОтвета.ОтветСервера["transactions"].Количество() > 0 Тогда
			 ТЗ = Новый ТаблицаЗначений;
			 Объект.СписокТранзакций.Очистить();
			 ПерваяСтруктура = СтруктураОтвета.ОтветСервера["transactions"][0];
			 Для Каждого Свойство Из ПерваяСтруктура Цикл
				 ТЗ.Колонки.Добавить(Свойство.Ключ);
				 Если Элементы.Найти(Свойство.Ключ) = Неопределено Тогда
					 ДобавитьКолонкуВТабличнуюЧасть(Свойство.Ключ);
				 КонецЕсли;
			 КонецЦикла;
			 Для каждого Транзакция из СтруктураОтвета.ОтветСервера["transactions"] Цикл
				 НоваяСтрока = ТЗ.Добавить();
				 ЗаполнитьЗначенияСвойств(НоваяСтрока, Транзакция);
			 КонецЦикла;
			 Объект.СписокТранзакций.Загрузить(ТЗ);
		 Иначе
			Сообщить("Нет транзакций за выбранный период."); 
		 КонецЕсли;
	 Иначе	
		 Сообщить("Не удалось получить данные с сайта. Код ответа " + Строка(СтруктураОтвета.КодСостояния)); 
	 КонецЕсли;
 КонецПроцедуры // ЗаполнитьТабличнуюЧасть

4. Полагаю, что дальнейшая обработка полученных данных сугубо индивидуальна для каждой организации, и в подробном рассмотрении не нуждается. В данной обработке документ поступления будет создаваться по каждой топливной карте, согласно параметрам создания документов. Счет-фактура создается общая к созданным документам поступления согласно настройкам входящих документов. См. скриншоты. Обработка тестировалась на конфигурации Бухгалтерия предприятия КОРП 3.0.130.22, платформа 8.3.18.1959.

5. Скриншоты форм в порядке добавления

  • Основная форма
  • Настройки подключения
  • Параметры создания документов поступления
  • Входящие документы

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.130.22

Обработка API Загрузка ППР Передовые Платежные Заправка Топливо

См. также

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер).

22440 руб.

19.12.2023    5325    39    11    

35

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17888    19    22    

17

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20017    13    17    

17

СБП. Оплата по QR-коду Сайты и интернет-магазины Программист Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Россия Бухгалтерский учет Управленческий учет Платные (руб)

В настоящее время система СБП очень часто стала использоваться в повседневной жизни. Одна из систем интеграции СБП через СБЕР. Данная конфигурация является инструментом интеграции СБП в Альфа Авто. Данная система не просто формирует статический QR, а динамический, а значит, в системе будет привязка и на покупателя, и на документ.

7200 руб.

25.10.2022    6375    32    4    

11
Оставьте свое сообщение