Итеграция с DNM LADA

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Итеграция с DNM LADA
 
Здравствуйте коллеги, подскажите, кто-нибудь реализовывал интеграцию DNM LADA в Альфа Авто 5.1? Хотелось бы посмотреть как это в принципе должно выглядеть и работать.
 
У меня реализовано. Причем не только лада.
Но не думаю что можно тиражировать. Конфигурация очень сильно отличается от типовой.
Если интересно могу конечно подсказать https://t.me/NioGoth.
 
Цитата
БИНОМ ООО написал:
Здравствуйте коллеги, подскажите, кто-нибудь реализовывал интеграцию DNM LADA в Альфа Авто 5.1? Хотелось бы посмотреть как это в принципе должно выглядеть и работать.
Добрый день.

Я начал реализацию этой интеграции для редакции 6, для редакции 5 тоже подойдет (за тем исключением, что надо будет добавить справочник брендов). Для работы интеграции необходимо дополнение УВК. На данный момент реализована передача клиентов и рабочих листов, осталось сделать передачу потребностей и событий рабочего листа.

Чтобы это работало, документ "Рабочий лист" был доработан:
1. Рабочий лист проводится в любом состоянии подобно "Заказ-наряду"
2. Статус Рабочего листа соответствует последнему типу соыбытия из цепочки "визит"->"тест-драйв"->"комм. предложение"->"бронирование"->"контракт"->"выдача"
3. Рабочий лист в статусе "Выдача" или "Отказ" не редактируется подобно "Заказ-наряду" в состоянии "Закрыт"
4. Реквизиты Рабочего листа, необходимые для передачи в систему DNM, сделаны обязательными
5. Смена статуса Рабочего листа происходит автоматически при проведении на его основании соответствующего события (документы "Событие", "Тест-драйв", "Заказ клиента на автомобиль", "Реализация автомобилей")
6. При переходе Рабочего листа на новый статус фиксируется дата и время нового статуса в отдельных новых реквизитах подобно датам начала, окончания и закрытия в "Заказ-наряде"

Интеграция разделена на две части:
1. регистрация объектов к отправке (документы "Рабочий лист", "Событие", "Заказ клиента на автомобиль" и "Реализация автомобилей") через новый план обмена
2. отправка зарегистрированных объектов в систему DNM через новое регламентное задание.

Для работы с API системы DNM написан следующий программный код:

Код
Функция GET_Запрос(Запрос, НастройкаПодключения)
   Host         = НастройкаПодключения["Host"];
   Authorization   = НастройкаПодключения["Authorization"];

   HTTPСоединение   = Новый HTTPСоединение(Host,,,,,, Новый ЗащищенноеСоединениеOpenSSL, Ложь);
   
   Заголовки       = Новый Соответствие;
   Заголовки.Вставить("Host",         Host);
   Заголовки.Вставить("Authorization",   Authorization);
   Заголовки.Вставить("Accept",      "application/json");
   Заголовки.Вставить("Connection",   "keep-alive");
   Заголовки.Вставить("Content-Type",   "application/json; charset=utf-8");

   HTTPЗапрос      = Новый HTTPЗапрос(Запрос, Заголовки);   
   Попытка
      Результат   = HTTPСоединение.Получить(HTTPЗапрос);
   Исключение
      Результат   = Неопределено;
   КонецПопытки;

   Возврат Результат;   
КонецФункции

Функция POST_Запрос(Запрос, ТелоЗапроса, НастройкаПодключения)
   Host         = НастройкаПодключения["Host"];
   Authorization   = НастройкаПодключения["Authorization"];
   
   HTTPСоединение   = Новый HTTPСоединение(Host,,,,,, Новый ЗащищенноеСоединениеOpenSSL, Ложь);

   Заголовки      = Новый Соответствие;
   Заголовки.Вставить("Host",         Host);
   Заголовки.Вставить("Authorization",   Authorization);
   Заголовки.Вставить("Accept",      "application/json");
   Заголовки.Вставить("Connection",   "keep-alive");
   Заголовки.Вставить("Content-Type",   "application/json; charset=utf-8");
   
   HTTPЗапрос      = Новый HTTPЗапрос(Запрос, Заголовки);
   HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);   
   Попытка      
      Результат   = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
   Исключение
      Результат   = Неопределено;
   КонецПопытки;

   Возврат Результат;
КонецФункции

Функция PUT_Запрос(Запрос, ТелоЗапроса, НастройкаПодключения)
   Host         = НастройкаПодключения["Host"];
   Authorization   = НастройкаПодключения["Authorization"];

   HTTPСоединение   = Новый HTTPСоединение(Host,,,,,, Новый ЗащищенноеСоединениеOpenSSL, Ложь);

   Заголовки      = Новый Соответствие;
   Заголовки.Вставить("Host",         Host);
   Заголовки.Вставить("Authorization",   Authorization);
   Заголовки.Вставить("Accept",      "application/json");
   Заголовки.Вставить("Connection",   "keep-alive");
   Заголовки.Вставить("Content-Type",   "application/json; charset=utf-8");
   
   HTTPЗапрос     = Новый HTTPЗапрос(Запрос, Заголовки);
   HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
   Попытка
      Результат   = HTTPСоединение.Записать(HTTPЗапрос);
   Исключение
      Результат   = Неопределено;
   КонецПопытки;

   Возврат Результат;
КонецФункции

Функция DELETE_Запрос(Запрос, НастройкаПодключения)
   Host         = НастройкаПодключения["Host"];
   Authorization   = НастройкаПодключения["Authorization"];

   HTTPСоединение   = Новый HTTPСоединение(Host,,,,,, Новый ЗащищенноеСоединениеOpenSSL, Ложь);

   Заголовки      = Новый Соответствие;
   Заголовки.Вставить("Host",         Host);
   Заголовки.Вставить("Authorization",   Authorization);
   Заголовки.Вставить("Accept",      "application/json");
   Заголовки.Вставить("Connection",   "keep-alive");
   Заголовки.Вставить("Content-Type",   "application/json; charset=utf-8");
   
   HTTPЗапрос      = Новый HTTPЗапрос(Запрос, Заголовки);   
   Попытка
      Результат   = HTTPСоединение.Удалить(HTTPЗапрос);
   Исключение
      Результат   = Неопределено;
   КонецПопытки;

   Возврат Результат;
КонецФункции

Функция ПроверитьУспешностьВыполненияЗапроса(HTTP_Ответ)
   Если HTTP_Ответ = Неопределено Тогда 
      Возврат Ложь;
   КонецЕсли;
   
   КодыУспешныхЗапросов   = Новый Массив;
   КодыУспешныхЗапросов.Добавить(200);
   КодыУспешныхЗапросов.Добавить(201);
   
   Возврат КодыУспешныхЗапросов.Найти(HTTP_Ответ.КодСостояния) <> Неопределено;
   
КонецФункции


Вот пример использования вышеуказанного кода:
Код
Функция ПолучитьРабочийЛистИзDNM(НомерРЛ, НастройкаПодключения)
   Запрос   = "/api/worksheet?code=" + НомерРЛ;
   Ответ   = GET_Запрос(Запрос, НастройкаПодключения);

   Результат   = Неопределено;
   Если ПроверитьУспешностьВыполненияЗапроса(Ответ) Тогда
      Попытка
         ТелоОтвета   = ОбщегоНазначения.JSONВЗначение(Ответ.ПолучитьТелоКакСтроку());
         Результат   = ТелоОтвета[0];
      Исключение
      КонецПопытки;
   Иначе

   КонецЕсли;

   Возврат Результат;
КонецФункции
Изменено: Данил Василига - 25.04.2024 08:01:18
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С