На прошлой неделе опубликовал первую заметку из небольшого цикла “Создание HTTP-сервисов в 1C:Предприятие 8.3”. В ней я рассмотрел создание примитивного сервиса, который отзывался на запросы клиента и возвращал набор данных. Сегодня настало время второй части статьи, и здесь не будет программирования. В ней я хочу заострить внимание на практических кейсах применения данной возможности. Попробую ответить на вопрос — “Зачем вообще заморачиваться с созданием HTTP-сервисов в 1С?”.
Корпоративный стандарт
Предвидя скептические отзывы противников платформы “1С:Предприятие 8”, сразу создам одно обязательное вводное условие — представьте, что в вашей компании активно применяется платформа “1С:Предприятие”. Используются как типовые конфигурации, так и самописные. Вы являетесь сотрудником/руководителем отдела разработки программного обеспечения, и у вас есть команда отличных разработчиков, которые лучше всего умеют готовить продукты под платформу “1С:Предприятие”. Ок?
Я специально вывел это условие, т.к. хочу отсечь наезды в стиле: “Да я на php/.NET/Java/JS напишу все лучше и быстрей”. Не спорю, напишите. Перечисленный стек языков программирования идеально подходит для решения подобных задач. Тут даже спорить не буду. Но в нашей вымышленной ситуации отсутствуют джедаи перечисленных школ боевых искусств, а учить имеющийся персонал не выгодно из-за одноразовости проектов и без того сильной загруженности людей.
Кейс №1. Бекенд для небольших web-приложений
Если в команде имеются люди, умеющие верстать, или перед вами встала задача создать для внутренней сети ряд небольших web-сервисов, то в таком случае можете смело опереться на возможности платформы “1С:Предприятие”. Создаем HTTP-сервисы, описываем структуру БД в привычной среде и переключаемся на разработку фронта.
Например, потребовалось создать форму фидбека по какому-нибудь вопросу. Задача пустяковая, но если потом придется заняться анализом ответов, формированием отчетности, то процесс разработки этой одноразовой штуки может затянуться. Да и наверняка вам потребуется развернуть какой-нибудь PHP/MySQL для обработки/хранения результатов. Ладно еще развернуть, впоследствии все это хозяйство придется сопровождать.
Вот тут возможности “1С:Предприятие” придутся особенно кстати. Обработка данных, формирование функциональных отчетов — основные киллер-фичи 1С. И да, не забываем, что у вас есть соответствующие специалисты и уже куча продуктов на базе этой платформы, соответственно, инструменты/технологии поддержки уже наверняка есть.
Форма фидбека была рассмотрена лишь для примера. На самом деле вполне реально создать полноценное веб-приложение (естественно, вам потребуется HTML/CSS/JS) с регистрацией пользователей, сложными формами расчета и т.д.
Кейс №2. Обмены
За свою карьеру работы разработчиком я написал десятки различных “переносок” данных для разных информационных систем. Технологий и форматов для обмена данными существует множество, но в мире 1С долго господствовали обмены через файлы выгрузки/OLE. Появление Web-сервисов/HTTP-сервисов существенно расширяет сценарии создания обменов с внешними информационными системами.
Опять небольшой пример. Вам требуется оперативно обмениваться данными (например, остатками) с интернет-магазином. По умолчанию обмены с интернет-магазином выполняются в стандартном режиме — через формирование файлов с информацией для обмена и последующей их выгрузкой на сервер. Применяемый в качестве стандарта формат выгрузки CommerceML сильно раздутый, частые обмены будут создавать лишнюю нагрузку на БД. С помощью HTTP-сервисов вполне можно оптимизировать процессы и предоставить возможность web-приложению самостоятельно запрашивать необходимую информацию из базы 1С.
Например, после оформления продажи интернет-магазин может делать запрос к 1С и получать порцию необходимой информации в лаконичном JSON-формате. Удобно и быстро. Я уже молчу, что на парсинг JSON требуется значительно меньше системных ресурсов, нежели на разбор XML.
Кейс №3. Расширение возможностей веб-клиента
Этот кейс напрямую связан с первым. Суть примерно одинаковая — “1С:Предприятие” выступает бекендом, а на HTML/CSS/JavaScript пишется легковесный фронт. В результате можем получить современное веб-приложение с минимумом затрат. Мы вот как раз столкнулись с ситуацией, когда стандартный фронт, генерируемый веб-клиентом 1С, сильно тяжел (в плане трафика) для пользователей с медленным интернетом. Организация дополнительного доступа к приложению с помощью HTTP-сервисов в состоянии элегантно решить эту проблему.
Кейс №4. Вывод определенных частей корпоративных систем в веб
Представим, у вас есть несколько конфигураций, работающих в режиме обычного приложения. Такой тип конфигураций нельзя так просто опубликовать в вебе, но руководство требует, чтобы удаленные пользователи могли беспрепятственно вносить/изменять определенную информацию. Способов предоставления такой услуги есть несколько, но HTTP-сервисы будут выгодно отличаться своей производительностью и экономией передаваемого объема трафика.
Нужны примеры? Ок, представим, что вам потребовалось предоставить возможность формировать расчетные листки из ЗУП 2.5 в режиме онлайн. Создание простейшего HTTP-сервиса с легкостью решит эту задачу.
Еще один пример. В нашей компании требуется предоставлять сводные данные из разных ИБ сотрудникам филиалов. Давать доступ к каждой ИБ муторно, да и лишний напряг для пользователей. HTTP-сервисы и легковесный формат JSON могут перенести все это в веб, а промежуточная конфигурация будет неким агрегатором. Ведь ничего не мешает передать массив данных на фронт, а там все это удобным образом обработать и представить каким-нибудь удобным клиентским фреймворком.
Пока хватит
На этом приторможу с кейсами и вернусь к написанию заметок, ориентированных на практику и реальные примеры использования. Продолжение следует…