HTTP-сервис 1С: когда он нужен и как получить данные без него
HTTP-сервис в 1С есть давно и хорошо делает свою работу. Но чтобы он заработал, нужен программист, публикация базы на веб-сервере и вход в нее снаружи. И даже работающий сервис отвечает только на те вопросы, которые в него заранее заложили. Ниже разбираем, что такое HTTP-сервис, во что обходится его запуск, где он подходит лучше всего и в каких задачах проще взять данные запросом из самой базы через Жёлтый мост (onecdatalink.ru): без белого IP, без публикации и без расширения.
Что такое HTTP-сервис 1С
HTTP-сервис - это объект конфигурации (в дереве он лежит в разделе «Общие»). Программист описывает в нем адреса: шаблоны URL с параметрами, например «заказ по номеру» или «остатки по складу». Для каждого адреса задаются методы (GET, POST и другие), и на каждый метод пишется обработчик на встроенном языке. Обработчик сам решает, что прочитать в базе, что проверить и что вернуть: код ответа, заголовки и тело, обычно JSON.
Если пришел адрес, которого в сервисе нет, платформа отвечает ошибкой 404. К этому вернемся ниже: сервис знает только то, что в него написали.
Снаружи HTTP-сервис выглядит как обычный REST: внешняя система отправляет запрос на адрес вида https://сервер/база/hs/имя-сервиса/... и получает ответ. Вход выполняется под пользователем 1С, а его права ограничивают, что сервис увидит.
Что нужно, чтобы он заработал
Сама технология входит в платформу. Затраты уходят на все, что вокруг нее:
- программист 1С. Сервис нужно спроектировать, написать, проверить и поддерживать. Готового сервиса под ваши вопросы в типовой конфигурации нет;
- место для кода. Либо правка конфигурации (тогда ее сложнее обновлять), либо расширение. Расширение аккуратнее, но и у него есть условия: на базовых версиях программ расширения недоступны, а на старых конфигурациях и платформах возможности ограничены;
- публикация на веб-сервере. Нужен Apache или IIS, публикация базы и настройка файла default.vrd. У публикации сервисов из расширений, по опыту форумов, свои тонкости;
- вход снаружи. Чтобы внешняя система достучалась до базы, нужен белый IP, проброс порта или VPN, а еще сертификат для HTTPS;
- защита. Опубликованная база становится точкой входа из интернета. Пароли, обновления веб-сервера, журнал обращений и отбор адресов, с которых можно заходить, теперь ваша забота.
Поэтому у одних компаний сервис давно поднят и работает, у других его нет совсем: база стоит в офисе за роутером, своего программиста нет, а в 1С:Фреш публикацией базы управляет оператор, и свой веб-сервер там не поднять. Именно поэтому технология «есть», но пользоваться ею могут не все.
Сильные стороны HTTP-сервиса
- Скорость. Запрос приходит в базу сразу, через ваш веб-сервер, без очереди и внешнего шлюза. Для частых коротких обращений это быстрее всего.
- Жесткий контракт. Адреса и формат ответа заданы заранее, поэтому внешняя система всегда получает одно и то же. Для обмена между двумя программами это плюс, а не минус.
- Полный контроль. В обработчике можно проверить любые условия, вызвать бизнес-логику конфигурации, записать документ так, как это принято в вашей базе.
- Нагрузка. Хорошо написанный сервис на нормальном сервере выдерживает частые обращения, например от сайта или мобильного приложения. Предел задают сервер и сам код.
Слабые стороны: структура задана заранее
Ограничение следует из того же, что дает скорость и контроль. Сервис отвечает только на те вопросы, которые программист в него заложил. Если в нем есть адрес «остатки по складу», а нужно «остатки по складу в разрезе серий с ценой последнего поступления», это уже новый адрес. Значит, постановка задачи, доработка, проверка и выкладка. На это уходят дни, а иногда недели.
- каждый новый вопрос - доработка. Для обмена, который долго не меняется, это не страшно. Для аналитики, где вопросы меняются каждую неделю, это постоянная очередь задач к программисту;
- обновление конфигурации может сломать сервис. Переименовали реквизит или поменяли регистр, и обработчик надо править;
- ИИ-ассистенту такой сервис мало полезен. Ассистент полезен прежде всего там, где вопрос заранее неизвестен. Если ему доступны десять адресов, он ответит только на десять видов вопросов;
- вход в базу открыт снаружи. Это риск всего класса решений «расширение или модуль с HTTP-API», особенно если такой модуль умеет выполнять произвольный код: при слабой авторизации через него можно попасть в базу.
Как это решает Жёлтый мост
Жёлтый мост устроен наоборот: не внешняя система стучится в базу, а база сама забирает задания. В 1С запускается внешняя обработка, она по исходящему HTTPS обращается к шлюзу onecdatalink.ru, берет запрос, выполняет его внутри базы и отправляет ответ. Входящих соединений нет, поэтому не нужны ни белый IP, ни публикация, ни веб-сервер, ни расширение. Конфигурация не меняется.
Путь данных выглядит так:
- HTTP-сервис: внешняя система → интернет → веб-сервер в вашей сети → база 1С;
- Жёлтый мост: база 1С → исходящий HTTPS → шлюз onecdatalink.ru → ИИ-ассистент или внешняя система.
Вторая разница важнее первой. Вместо набора заранее написанных адресов внешняя система или ИИ-ассистент отправляет запрос на языке запросов 1С: с виртуальными таблицами остатков и оборотов, группировками, итогами, временными таблицами и пакетами. Ответ приходит в JSON одним вызовом. Новый вопрос - это новый текст запроса, а не новая версия конфигурации.
Чтобы запрос был написан по вашим именам объектов, а не наугад, к ключу можно приложить справку по структуре конфигурации, если исходники вашей конфигурации есть у сервиса. ИИ-ассистент сначала ищет в ней нужный регистр и реквизиты, а потом пишет запрос. Так можно найти в базе то, о чем при настройке никто не думал.
Что еще стоит знать:
- права равны правам пользователя 1С, под которым запущена обработка. Для внешних систем разумно завести отдельного пользователя с узкими правами;
- чтение по умолчанию. Изменяющие конструкции в запросах отклоняются. Запись включается отдельно, на ключе «чтение и запись» и по разрешению, а прогон по умолчанию пробный, с откатом;
- персональные данные по умолчанию закрываются: ФИО, ИНН, телефоны внешняя система получает замаскированными;
- подходит для старых баз: есть сборки для обычных форм и для платформы 8.3.5, а для 1С:Фреш мост работает через стандартный OData (там действуют границы самого OData, только чтение и без языка запросов).
Подробнее об устройстве без входящих соединений - в статье «Как подключить ИИ к 1С без сервера, расширений и открытых портов».
Сравнение
| HTTP-сервис 1С | Жёлтый мост | |
|---|---|---|
| Что меняется в базе | конфигурация или расширение | ничего, внешняя обработка |
| Публикация, белый IP | нужны: веб-сервер, default.vrd, проброс порта или VPN | не нужны, только исходящий HTTPS |
| Какие вопросы | только заложенные адреса | любой запрос на языке запросов 1С |
| Новый вопрос | доработка, проверка, выкладка | новый текст запроса |
| Скорость ответа | сразу | секунды, при очереди до 1-2 минут |
| Нагрузка | частые обращения, предел задает сервер | запросы к одной базе по очереди |
| Запись | любая логика, которую написали | только с разрешения, сначала пробный прогон |
| ИИ-ассистент | видит только заложенные адреса | пишет запрос сам, по справке о структуре, если она приложена |
| Кто запускает | программист 1С и администратор сети | пользователь 1С за несколько минут |
| База выключена | сервис не отвечает | мост тоже не отвечает |
Когда лучше HTTP-сервис
Есть задачи, где HTTP-сервис подходит лучше, и мост его не заменит.
- интернет-магазин, который на каждый показ товара спрашивает остаток и цену, тысячи раз в минуту;
- мобильное приложение торговых представителей с постоянным обменом заказами;
- обмен с другой программой, где формат согласован заранее и меняться не должен;
- запись со сложной логикой, которая должна идти строго через проверки конфигурации.
Общее у них одно: вопросы заранее известны, обращений много и ответ нужен мгновенно. Если сервис у вас уже поднят и работает, переделывать его незачем.
Когда удобнее Жёлтый мост
- разовые и меняющиеся вопросы: руководителю нужен свод, которого нет в отчетах, аналитику нужно проверить гипотезу, бухгалтеру найти расхождение;
- ИИ-ассистент в чате или в редакторе кода, который должен видеть всю базу, а не десять адресов;
- своя CRM, сайт или дашборд, где данные нужны раз в несколько минут и важнее гибкость, чем доли секунды. Пример такого выбора разобран в практике про приложение для Битрикс24: там сравнивается в том числе путь «публикация и свой HTTP-сервис»;
- базы, которые нельзя открывать наружу: файловая база в офисе, сервер без белого IP, строгие правила службы безопасности. Об этом подробно в практике «Как пустить ИИ в базу 1С, не открывая ее наружу»;
- конфигурацию менять нельзя или некому: базовые версии, старые релизы, нет своего программиста.
Ограничения моста тоже стоит назвать прямо. База должна быть запущена, а обработка работать. Обмен идет короткими окнами, поэтому ответ бывает не сразу, при очереди до 1-2 минут. Запросы к одной базе выполняются по очереди, и это не канал для тысяч обращений в секунду. Данные проходят через шлюз сервиса в России, с маскировкой персональных данных.
Можно вместе
HTTP-сервис и мост не исключают друг друга. Частая схема: сайт берет остатки и цены через свой HTTP-сервис, потому что ему нужна скорость, а все остальное идет через мост. Руководитель спрашивает ИИ-ассистента про выручку и долги, аналитик собирает выборки для отчета, программист проверяет запрос на живых данных, прежде чем зашить его в сервис. Справочник адресов сервиса остается маленьким и стабильным, а меняющиеся вопросы больше не превращаются в задачи на доработку.
Если вы выбираете способ доступа к 1С в целом, посмотрите также, почему у стандартного OData свои границы: тайм-ауты на больших выборках и подключение 1С:Фреш через OData. Сколько стоит каждый путь, разобрано в статье «Сколько стоит подключить 1С к ИИ».
Частые вопросы
Можно ли сделать HTTP-сервис без изменения конфигурации?
Только через расширение, а оно доступно не везде: на базовых версиях программ расширения недоступны, и в любом случае нужна публикация базы на веб-сервере. Если менять ничего нельзя, остается способ, при котором база сама обращается наружу, как в Жёлтом мосте.
Нужен ли белый IP для Жёлтого моста?
Нет. Обработка в базе сама подключается к onecdatalink.ru по исходящему HTTPS, так же, как браузер открывает сайт. Порты открывать не нужно, веб-сервер не нужен.
Мост умеет только то, что заранее настроено?
Нет, в этом и разница. Внешняя система или ИИ-ассистент отправляет запрос на языке запросов 1С, поэтому можно получить любые данные, которые видны пользователю обработки: остатки, обороты, своды, выборки из любых справочников и документов. Это относится к базам с обработкой, во Фреше через OData возможности уже.
Заменит ли мост наш HTTP-сервис для сайта?
Скорее нет, если сайт спрашивает базу тысячи раз в минуту и ждет ответа за доли секунды. Для такой нагрузки свой HTTP-сервис лучше. Мост удобнее для задач, где вопросы меняются, а обращений меньше.
Сколько это стоит?
Ключ стоит 81 рубль в сутки, списание идет посуточно, пока ключ включен. Первые 3 дня бесплатно. Цены и скидки при пополнении на странице тарифов.
Три дня бесплатно, без публикации базы и без доработки конфигурации.
Комментарии
Вопросы по делу, свой опыт и спокойная критика - публикуем. Реклама и ссылки на сторонние сайты не проходят. Комментарии открываются после проверки.