Цитата |
---|
БИНОМ ООО написал: Здравствуйте коллеги, подскажите, кто-нибудь реализовывал интеграцию 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];
Исключение
КонецПопытки;
Иначе
КонецЕсли;
Возврат Результат;
КонецФункции
|