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

11.08.24

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Публикации по данному вопросу есть //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) Россия Платные (руб)

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

24000 руб.

19.12.2023    10327    59    14    

54

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

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

36000 руб.

03.08.2020    21673    30    24    

24

Сайты и интернет-магазины Программист Пользователь 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Платные (руб)

Данный модуль предоставляет возможность выгружать заказы из 1С: Управление торговлей 11 версии в "MEASOFT" (ранее "Курьерская служба 2008").

9600 руб.

27.04.2022    12461    22    3    

13

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

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

26400 руб.

02.11.2024    2751    13    2    

11

Файловый обмен (TXT, XML, DBF), FTP Сайты и интернет-магазины 1С v8.3 1С:Управление торговлей 11 Россия Платные (руб)

Загрузка файла YML (формат Yandex Market Language(YML) — собственный стандарт Яндекса, основанный на XML) в УТ11.5 Создание дерева номенклатуры, создание карточек номенклатуры и доп реквизитов, загрузка картинок в карточку. Оптимизировано для выгрузки в Битрикс. Возможна загрузка нескольких Фид - предусмотрено разделение по площадкам

7000 руб.

01.11.2024    1201    1    1    

2

Прайсы Оптовая торговля Ценообразование, анализ цен Сайты и интернет-магазины Пользователь 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Легкая обработка для мониторинга цен практически любого сайта (парсинга), не требует специальных знаний при настройке.

6960 руб.

17.04.2017    33429    30    28    

43
Для отправки сообщения требуется регистрация/авторизация