Альфа-Авто 5.0 и современные HTTP сервисы

01.03.21

Интеграция - WEB-интеграция

Решение, позволяющее программным продуктам, работающим на устаревших версиях платформы 1С (8.2), интегрироваться с современными HTTP сервисами. Решение, интегрированное с HTTP-сервисом программы по расчету компонентов для изготовления ЛКМ, описанное в настоящей статье, успешно работает в одном из автосервисов, работающем на устаревшей платформе и конфигурации Альфа-Авто 5.0.

Альфа-Авто 5.0 и современные HTTP сервисы

 

Преамбула

Очень многие автосервисы и автосалоны когда-то купили конфигурацию Альфа-Авто 5.0 (разных релизов) работающую на платформе 1С 8.2. И очень немногие из них обновляли её до актуальных релизов, «заточили» для работы под свои бизнес процессы, работает и ладно. Но реалии современной жизни таковы, что необходимо пользоваться современными услугами построенными на основе HTTP-сервисов. Однако платформа 8.2 устарела и полноценно не может поддерживать работу с современными HTTP-сервисами. Один знакомый автосервис столкнулся с подобной проблемой.

Проблемы с материалами для окрасочных работ.

Пару слов об автосервисе, не лучше и не хуже других, осуществляет слесарный и кузовной ремонт. И была у него проблема с учетом компонентов для создания краски (миксов) и сопутствующих расходных материалов.  Главная проблема была в расчетной части компонентов, где, когда и «сколько вешать в граммах» на одну деталь и как это точно рассчитать.

И вот недавно было предложено решение от одной компании, поставщика компонентов, нужное решение.

Что предоставлялось:

  • Расчетная часть, работающая на SQL и Web серверах, с предоставлением доступа соответствующим сотрудникам через web браузер для просмотра, расчета и т.д. и т.п. Называется RMP.
  • Небольшая демо конфигурация для 1С с возможностью создания в RMP заказ-наряда и импорта оттуда рассчитанных данных в Альфа-Авто.
  • Все данные в Альфа-Авто можно получать с помощью HTTP-сервисов, предоставляемых программой.

Плюсы и минусы.

+ «То, что доктор прописал».

- Демо конфигурация написана под релиз платформы 8.3.12

- Поставщик не дорабатывает конфигурации клиентов.

- Альфа-Авто работает на платформе 8.2, переписана и адаптирована под внутренние бизнес-процессы.

- Платформа 8.2 посылает некорректные HTTP-запросы к Web-серверу RMP, в результате чего возвращаются неверные ответы.

- Обновление Альфа-Авто ради небольшого блока, создание новых сервера 1С, обновление клиентских частей, перенос измененного функционала из старой конфигурации в новую и т.д.

Продолжать можно долго и минусов накопилось достаточно много, что задумались «А стоит ли овчинка выделки?». Но внедрить новый функционал по учету компонентов и расходных материалов для создания комплекта краски очень хотелось.

Решение есть!

В связи с тем, что имелся опыт решения подобной проблемы (взаимодействие с «Честным знаком» в области обмена с ним маркированной продукцией, шины), было предложено использовать промежуточную конфигурацию 1С, развернуть WEB-сервер, и опубликовать эту промежуточную конфигурацию, которая может взаимодействовать и с сервисом RMP и со старой конфигурацией Альфа-Авто. Своего рода «буфер обмена», или как мы её назвали - «прокладка».

Принципиальная схема взаимодействия представлена на рис.1

 

рис.1. Принципиальная схема взаимодействия

 

Итак, принципиальная схема взаимодействия есть, осталось реализовать/материализовать это в виде программного кода на соответствующих конфигурациях и сервисах.

Расчетную часть и HTTP-сервисы есть в RMP и она предоставляет всё, что нам надо для учета в работе с конфигурацией Альфа-Авто 5.0. Поэтому её не трогаем и используем всё как есть. RMP развернута на отдельной виртуальной машине на Windows, там же развернут web-сервер Apache «заточенный» под работу именно этой программы и предоставлявшей свои сервисы на определенном порту.

Дабы не мудрствовать, для работы «буфера обмена» было решено использовать эту же виртуальную машину, мощности позволяли. В связи с тем, что поставщики категорически не рекомендовали использовать их web-сервер, пришлось разворачивать свой. Благо их сервер был «урезанный» и 32-битный, поэтому было принято решение разворачивать 64-битный, чтобы процессы не пересекались.

Конфигурация – «буфер обмена»

В нескольких словах, «конфигурация-буфер» представляет собой конфигурацию, работающую на платформе 1С 8.3.17 (минимальные требования для платформы 8.3.8), с разработанными HTTP-сервисами, взаимодействующими по HTTP протоколу с RMP и Альфа-Авто 5.0.

Основной функционал заключается в следующем:

  • Получение и обработка запросов от Альфа-Авто.
  • Обработка функциональной логики для работы с RMP.
  • Запрос данных из RMP согласно запроса Альфа-Авто.
  • Обработка http-ответа от RMP сервера.
  • Трансформация данных полученных от RMP в формат, понятный для платформы 1С 8.2
  • Возврат ответа в соответствии с запросом или данных в Альфа-Авто.

В конфигурации были разработаны HTTP-сервис, работающий по методу GET, и обработка, которая обслуживает всё, связанное с обработкой этих запросов.

В конфигурации выглядит так:

 

рис.2 Сервисы в 1С буфере

 

HTTP-сервис

Сам функционал HTTP-сервиса состоит из нескольких строк:

Функция Alfa50APIGET(Запрос)   ///кейсы получения чего либо посредством GET

                ГлОбработка=Обработки.RestAPI.Создать();

                Возврат ГлОбработка.ВернутьОтветНаЗапросGET(Запрос);

КонецФункции

Для простоты отладки и разработки, весь функционал обработки GET-запросов вынесен в обработку.

Обработка RestAPI

Для минимизации разработки кода в Альфа-Авто было решено использовать совсем простые http «GET» запросы вида «ЧтоНадоСделать=Команда» и «НомерЗаказНаряда=NNNNNNN», с передачей этих данных в заголовках:

Команды для обработки, обрабатываемые через АПИ

Команда в Заголовках, одна из:

                "CommandWhatToDo" = "RMPCreated"    - Создан ли заказ-наряд?

                "CommandWhatToDo" = "RMPCreateZN"   - Создать новый заказ-наряд

                "CommandWhatToDo" = "RMPClosed" - Заказ-наряд Закрыт?

                "CommandWhatToDo" = "RMPReportReceived" - Отчет (данные) получены?

                "CommandWhatToDo" = "RMPGetReport"         - получить отчет и закрыть заказ-наряд в RMP.

               "Response"  - возвращаемый ответ в тексте, сообщение об ошибке и т.д.

Номер заказ-наряда в заголовках.

"NumberZN" = "NNNNNNNNNN" – передача номера заказ-наряда.

Обработка содержит основной специфичный функционал для работы с RMP: создание заказ-наряда, получение отчета и формирование таблиц с рассчитанными данными по расходу миксов/компонентов и расходных материалов для изготовления лакокрасочных материалов (далее по тексту ЛКМ). И вспомогательный функционал для получения и отправки данных от конфигурации Альфа-Авто 5.0.

Логика работы обработки RestAPI

*Весь контекст, связанный с работой Альфа-Авто 5.0 описан ниже.

Создание заказ-наряда в RMP:

  1. Из формы заказ-наряда Альфа-Авто, по соответствующей кнопке, с минимальным набором необходимых данных, отправляется GET HTTP-запрос вида "CommandWhatToDo" = "RMPCreateZN".
  2. Обработка обращается к RMP-сервису на предмет существования заказ-наряда с присланным номером, и, если такового нет, создает новый в соответствии с присланными исходными данными.
  3. Обрабатывает ответ от RMP и отправляет http-ответ в Альфа-Авто.

Получение отчета:

  1. Из формы заказ-наряда Альфа-Авто, по соответствующей кнопке, отправляется GET HTTP-запрос вида "CommandWhatToDo" = " RMPGetReport".
  2. Обработка обращается к RMP-сервису и запрашивает количество рассчитанных деталей в заказ-наряде, если количество деталей равно нулю, возвращается ответ с ошибкой.
  3. Если количество рассчитанных деталей больше нуля, возвращаются данные содержащие расчет затраченных компонентов и расходных материалов для изготовления ЛКМ.
  4. Обрабатывает ответ от RMP, если содержатся данные расчета ЛКМ формируются соответствующие таблицы с данными.
  5. Отправляет http-ответ в Альфа-Авто.

Приводить код функции не буду, так как он большой и имеет несколько связанных под-функций и процедур. Но если «очень надо», готов выложить.

Хочу отметить простоту и изящность решения по передаче таблиц из «буфера» в Альфа-Авто по http с помощью штатных средств 1С. Код функции:

Функция Alfa50API_СериализоватьОбъект(Значение)

                ЗаписьXML = Новый ЗаписьXML();
                ЗаписьXML.УстановитьСтроку();
                СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение);
                СтрокаXML = ЗаписьXML.Закрыть();    
                Возврат СтрокаXML;

КонецФункции  

 

Ответное значение «СтрокаXML» помещаем в тело http-ответа и отсылаем в Альфа-Авто. Что получаем в Альфа-Авто смотрите ниже.

На этом описание функционала конфигурации «буфер», можно считать закончено. Свой функционал промежуточного звена между устаревшей конфигурацией Альфа-Авто 5.0, работающей не платформе 8.2 и HTTP-сервисом RMP выполняет целиком и полностью, расширяем, независим, может обслуживать иные подобные сервисы.

Конфигурация Альфа-Авто 5.0

Конфигурация представляет собой стандартную, немного переработанную, конфигурацию «Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ. Редакция 5», работающую на платформе 8.2

 

рис.3 Конигурация Альфа-Авто 50

 

Здесь, в документ «Заказ-наряд» были добавлены две табличные части «RMP_Материалы» и «RMP_НормативыРасхода», соответствующие кнопки и код обслуживающий функционал работы с данными полученными из RMP-сервиса. И обработка «RMP_RestAPI» с кодом, обслуживающим функционал по работе с HTTP и конфигурацией «буфер».

Документ «Заказ-наряд»

Естественно, для работы с RMP-сервисом пришлось не только дописывать код, но и вносить соответствующие интерфейсные правки, вот так теперь выглядит измененная форма документа:

Вкладка «Нормативы расхода» носит исключительно информационный характер и никакой иной функциональной нагрузки не несёт.

 

рис.5. Форма заказ-наряда 2

 

Основной функционал расположен во вкладке «Материалы».

 

рис.4. Форма заказ-наряда 1

 

Вкладка «Материалы»

Кнопка «Создать ЗН в RMP»

Как можно понять из названия, по нажатии отправляется http-запрос с командой «CommandWhatToDo = "RMPCreateZN"» - Создать новый ЗН в конфигурацию «буфер». После успешного создания заказ-наряда в RMP устанавливается «флаг Создан в СМ», и «колорист» или иной сотрудник, может рассчитать и заполнить данные в сервисе RMP.

Кнопка «Загрузить из RMP»

По нажатии отправляется http-запрос с командой «CommandWhatToDo = "RMPGetReport"»- получить отчет, в конфигурацию «буфер». В случае если нет расчитанного количества деталей, заказ-наряд в RMP не закрывается, данные в Альфа-Авто не посылаются и возвращается ошибка. После успешного получения «отчета» заполняются таблицы «Материалы» и «Нормативы расхода».

Комплектация в производство.

После успешной загрузки данных в таблицу материалов можно «Создать комплектацию в производство», нажав соответствующую кнопку. Заполнение документа «Комплектация в производство» немного переработано, исходные данные берутся из таблицы «Материалы». Также добавлена возможность автоматического добавления комплекта ЛКМ в товары. Остальной функционал документа оставлен без изменения.

Обработка «RMP_RestAPI»

Здесь заложен весь функционал необходимый для работы с конфигурацией «буфер», посылки GET http запросов, обработки результатов ответов и передачи данных в документ «заказ-наряд».

Логика работы следующая:

  1. Из заказ-наряда формируется структура данных содержащая минимум два параметра
    1. В случае простого запроса: Номер заказ-наряда и команды, например, RMPGetReport.
    2. В случае создания заказ-наряда: номер заказ-наряда, команды и данные для создания заказ-наряда в сервисе RMP (данные по автомобилю, владельцу и т.д.).
  2. Обработка формирует: «HTTP-Соединение», в заголовки помещает переданные данные из структуры, «HTTP-Запрос» и отсылает запрос в «буфер».
  3. Обрабатывает полученные из «Соединение.Получить(Запрос)», формирует структуру ответа и отсылает в документ заказ-наряд.

В случае получения отчета, формируются соответствующие таблицы с данными с помощью

Функция ДеСериализоватьОбъект(СтрокаXML)           

                ЧтениеXML = Новый ЧтениеXML();
                ЧтениеXML.УстановитьСтроку(СтрокаXML);
                Значение = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
                Возврат Значение;

КонецФункции

И в заказ-наряде заполняются соответствующие табличные части и остальные действия производятся в коде документа «Заказ-наряд».

 

Что в итоге

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

В итоге имеем успешно работающий функционал способный помочь устаревшим программным решениям оставаться «на плаву» и использовать функционал современных HTTP-сервисов, обмен с сайтом, например. Для этого необходимо всего лишь проявить немного изобретательности.

Автосервису не надо было вкладываться финансово и по времени в обновление конфигурации и платформы, переносе данных в новую конфигурацию, адаптацию и т.д. В двух словах – сплошные плюсы и полное отсутствие минусов.

В планах интеграция с сервисом «Честный знак» по продаже маркированных шин (и не только), будем внедрять решение по аналогичному сценарию. Ведь даже в последней версии Альфа-Авто 5.1 «полной» интеграции нет, есть только в 6.0.

Как говорится, «дорогу осилит идущий», успехов в разработке.

 

Решение работает.

1С:Предприятие 8.3, версия (8.3.17), уверен, будет работать на версии 8.3.8.

Альфа-Авто 5.0 HTTP сервис RestAPI

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    16397    15    18    

15

Интеграция 1С и Битрикс 24 — модуль синхронизации для обмена задачами

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

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

5040 руб.

04.05.2021    18640    10    15    

16

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13176    35    8    

14

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    86159    26    51    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. triviumfan 94 08.03.21 12:38 Сейчас в теме
8.2 - архаизм. Не знаю никого, кто использует 8.2 в связке с альфой 4-5 редакции.
2. chrnv 28.01.22 18:24 Сейчас в теме
3. mbsto 13.02.23 12:59 Сейчас в теме
Добрый день.
Вопрос связан с Альфа Авто 5.1
Использование картинки со ссылкой на ней на номер каталожный и перебросом его в поле табличной части номенклатуры в Заказ наряде.
Как это будет работать ?
Оставьте свое сообщение