1с альфа авто начальная настройка
Альфа-Авто 5.0 и современные HTTP сервисы
Альфа-Авто 5.0 и современные HTTP сервисы
Преамбула
Очень многие автосервисы и автосалоны когда-то купили конфигурацию Альфа-Авто 5.0 (разных релизов) работающую на платформе 1С 8.2. И очень немногие из них обновляли её до актуальных релизов, «заточили» для работы под свои бизнес процессы, работает и ладно. Но реалии современной жизни таковы, что необходимо пользоваться современными услугами построенными на основе HTTP-сервисов. Однако платформа 8.2 устарела и полноценно не может поддерживать работу с современными HTTP-сервисами. Один знакомый автосервис столкнулся с подобной проблемой.
Проблемы с материалами для окрасочных работ.
Пару слов об автосервисе, не лучше и не хуже других, осуществляет слесарный и кузовной ремонт. И была у него проблема с учетом компонентов для создания краски (миксов) и сопутствующих расходных материалов. Главная проблема была в расчетной части компонентов, где, когда и «сколько вешать в граммах» на одну деталь и как это точно рассчитать.
И вот недавно было предложено решение от одной компании, поставщика компонентов, нужное решение.
Плюсы и минусы.
+ «То, что доктор прописал».
— Демо конфигурация написана под релиз платформы 8.3.12
— Поставщик не дорабатывает конфигурации клиентов.
— Альфа-Авто работает на платформе 8.2, переписана и адаптирована под внутренние бизнес-процессы.
— Платформа 8.2 посылает некорректные HTTP-запросы к 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.
Основной функционал заключается в следующем:
В конфигурации были разработаны HTTP-сервис, работающий по методу GET, и обработка, которая обслуживает всё, связанное с обработкой этих запросов.
В конфигурации выглядит так:
HTTP-сервис
Сам функционал HTTP-сервиса состоит из нескольких строк:
Для простоты отладки и разработки, весь функционал обработки GET-запросов вынесен в обработку.
Обработка RestAPI
Для минимизации разработки кода в Альфа-Авто было решено использовать совсем простые http «GET» запросы вида «ЧтоНадоСделать=Команда» и «НомерЗаказНаряда=NNNNNNN», с передачей этих данных в заголовках:
Команды для обработки, обрабатываемые через АПИ
Команда в Заголовках, одна из:
Номер заказ-наряда в заголовках.
«NumberZN» = «NNNNNNNNNN» – передача номера заказ-наряда.
Обработка содержит основной специфичный функционал для работы с RMP: создание заказ-наряда, получение отчета и формирование таблиц с рассчитанными данными по расходу миксов/компонентов и расходных материалов для изготовления лакокрасочных материалов (далее по тексту ЛКМ). И вспомогательный функционал для получения и отправки данных от конфигурации Альфа-Авто 5.0.
Логика работы обработки RestAPI
*Весь контекст, связанный с работой Альфа-Авто 5.0 описан ниже.
Создание заказ-наряда в RMP:
Получение отчета:
Приводить код функции не буду, так как он большой и имеет несколько связанных под-функций и процедур. Но если «очень надо», готов выложить.
Хочу отметить простоту и изящность решения по передаче таблиц из «буфера» в Альфа-Авто по http с помощью штатных средств 1С. Код функции:
Ответное значение «СтрокаXML» помещаем в тело http-ответа и отсылаем в Альфа-Авто. Что получаем в Альфа-Авто смотрите ниже.
На этом описание функционала конфигурации «буфер», можно считать закончено. Свой функционал промежуточного звена между устаревшей конфигурацией Альфа-Авто 5.0, работающей не платформе 8.2 и HTTP-сервисом RMP выполняет целиком и полностью, расширяем, независим, может обслуживать иные подобные сервисы.
Конфигурация Альфа-Авто 5.0
Конфигурация представляет собой стандартную, немного переработанную, конфигурацию «Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ. Редакция 5», работающую на платформе 8.2
Здесь, в документ «Заказ-наряд» были добавлены две табличные части «RMP_Материалы» и «RMP_НормативыРасхода», соответствующие кнопки и код обслуживающий функционал работы с данными полученными из RMP-сервиса. И обработка «RMP_RestAPI» с кодом, обслуживающим функционал по работе с HTTP и конфигурацией «буфер».
Документ «Заказ-наряд»
Естественно, для работы с RMP-сервисом пришлось не только дописывать код, но и вносить соответствующие интерфейсные правки, вот так теперь выглядит измененная форма документа:
Вкладка «Нормативы расхода» носит исключительно информационный характер и никакой иной функциональной нагрузки не несёт.
Основной функционал расположен во вкладке «Материалы».
Вкладка «Материалы»
Кнопка «Создать ЗН в RMP»
Кнопка «Загрузить из RMP»
По нажатии отправляется http-запрос с командой «CommandWhatToDo = «RMPGetReport»»- получить отчет, в конфигурацию «буфер». В случае если нет расчитанного количества деталей, заказ-наряд в RMP не закрывается, данные в Альфа-Авто не посылаются и возвращается ошибка. После успешного получения «отчета» заполняются таблицы «Материалы» и «Нормативы расхода».
Комплектация в производство.
После успешной загрузки данных в таблицу материалов можно «Создать комплектацию в производство», нажав соответствующую кнопку. Заполнение документа «Комплектация в производство» немного переработано, исходные данные берутся из таблицы «Материалы». Также добавлена возможность автоматического добавления комплекта ЛКМ в товары. Остальной функционал документа оставлен без изменения.
Обработка «RMP_RestAPI»
Здесь заложен весь функционал необходимый для работы с конфигурацией «буфер», посылки GET http запросов, обработки результатов ответов и передачи данных в документ «заказ-наряд».
Логика работы следующая:
В случае получения отчета, формируются соответствующие таблицы с данными с помощью
И в заказ-наряде заполняются соответствующие табличные части и остальные действия производятся в коде документа «Заказ-наряд».
Что в итоге
Данным решением хотел показать, что далеко не всегда для решения какой-то задачи на устаревшей платформе необходимо тотальное обновление, и конфигурации, и платформы.
В итоге имеем успешно работающий функционал способный помочь устаревшим программным решениям оставаться «на плаву» и использовать функционал современных HTTP-сервисов, обмен с сайтом, например. Для этого необходимо всего лишь проявить немного изобретательности.
Автосервису не надо было вкладываться финансово и по времени в обновление конфигурации и платформы, переносе данных в новую конфигурацию, адаптацию и т.д. В двух словах – сплошные плюсы и полное отсутствие минусов.
В планах интеграция с сервисом «Честный знак» по продаже маркированных шин (и не только), будем внедрять решение по аналогичному сценарию. Ведь даже в последней версии Альфа-Авто 5.1 «полной» интеграции нет, есть только в 6.0.
Как говорится, «дорогу осилит идущий», успехов в разработке.
Решение работает.
1С:Предприятие 8.3, версия (8.3.17), уверен, будет работать на версии 8.3.8.