Персональный блог Игоря Антонова aka "spider_net"

Пример создания HTTP-сервиса в 1С:Предприятие 8.3. Часть 2. Кейсы


Рубрика: Программирование -> 1С:Предприятие
Метки: | | |
Просмотров: 7123
Пример создания HTTP-сервиса в 1С:Предприятие 8.3. Часть 2. Кейсы

На прошлой неделе опубликовал первую заметку из небольшого цикла “Создание 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 могут перенести все это в веб, а промежуточная конфигурация будет неким агрегатором. Ведь ничего не мешает передать массив данных на фронт, а там все это удобным образом обработать и представить каким-нибудь удобном клиентским фреймворком.

Пока хватит

На этом приторможу с кейсами и вернусь к написанию заметок, ориентированных на практику и реальные примеры использования. Продолжение следует….

Оставьте комментарий!
comments powered by HyperComments