Интеграция учетной системы 1С с внешними веб-сайтами — одна из самых частых задач в современной разработке. Будь то интернет-магазин, личный кабинет клиента или мобильное приложение, возникает вопрос: как правильно и максимально эффективно передать данные из 1С на сайт и обратно? В этой статье мы подробно разберем, какие инструменты предоставляет платформа 1С для этих целей, сравним традиционные веб-сервисы (SOAP) и современные HTTP-сервисы, а также изучим технические нюансы, влияющие на производительность и безопасность.
Рассмотрим основной вопрос, который встает перед разработчиком: что лучше использовать — веб-сервис или HTTP-сервис? На текущий момент индустриальным стандартом для веб-разработки являются HTTP-сервисы (REST-архитектура). Разберем причины, почему в большинстве случаев стоит выбирать именно их:
Однако веб-сервисы (SOAP) могут быть полезны в корпоративных интеграциях типа "система-система", где критически важна жесткая типизация данных, "прибитая гвоздями" на уровне контракта, который описывается в WSDL.
Разберем процесс создания простого HTTP-сервиса. Предположим, нам нужно передать на сайт информацию об остатках товара. В дереве конфигурации в ветке "Общие" находим "HTTP-сервисы" и создаем новый объект.
Проанализируем структуру: нам необходимо определить Шаблон URL. Например, /get_balance/{Artikul}. Внутри шаблона мы создаем Метод, например, GET. Для этого метода система создаст обработчик в модуле HTTP-сервиса.
Посмотрим на пример кода, который возвращает остаток товара в формате JSON:
Функция ОстаткиТовараGet(Запрос)
Артикул = Запрос.ПараметрыURL.Получить("Artikul");
Остаток = ПолучитьОстатокПоАртикулу(Артикул); // Ваша функция поиска
Ответ = Новый HTTPСервисОтвет(200);
ДанныеОтвета = Новый Структура;
ДанныеОтвета.Вставить("artikul", Артикул);
ДанныеОтвета.Вставить("balance", Остаток);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеОтвета);
Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());
Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Возврат Ответ;
КонецФункции
Выясним причину, по которой запросы напрямую с сайта к 1С часто блокируются. Это происходит из-за политики CORS (Cross-Origin Resource Sharing). Если скрипт на сайте mysite.com пытается вызвать сервис 1С на домене 1c.mysite.com, браузер заблокирует такой запрос из соображений безопасности, если 1С явно не разрешит это в заголовках.
Для решения этой проблемы мы должны реализовать обработку метода OPTIONS в нашем HTTP-сервисе. Рассмотрим, какие заголовки необходимо добавить в ответ:
Access-Control-Allow-Origin: значение * или конкретный адрес вашего сайта.Access-Control-Allow-Methods: разрешенные методы (GET, POST, OPTIONS).Access-Control-Allow-Headers: разрешенные заголовки, включая Authorization и Content-Type.Рассмотрим критически важный аспект настройки — пул соединений. По умолчанию при каждом обращении к веб-сервису 1С тратит время на запуск сеанса, авторизацию и инициализацию параметров. Это может занимать от 0.5 до нескольких секунд, что неприемлемо для работы сайта.
Чтобы избежать задержек, необходимо настроить файл публикации default.vrd на веб-сервере (Apache или IIS). Мы должны добавить параметры управления пулом сеансов poolSize и sessionMaxAge. Это позволит системе переиспользовать уже открытые сеансы. Проанализируем пример фрагмента файла default.vrd:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/BaseName"
ib="Srvr=Server1C;Ref=BaseName;">
<httpServices publishByDefault="true" />
<standardOdata enable="true" />
<pool size="10" maxAge="60" />
</point>
Использование пула позволяет сократить время отклика до нескольких миллисекунд, так как сеанс уже готов к обработке данных.
Разберем ситуацию, когда нам нужно быстро дать доступ к данным без написания программного кода. В 1С существует механизм "Автоматический REST интерфейс". Чтобы им воспользоваться, достаточно в свойствах нужных объектов метаданных (например, Справочники или Документы) включить их использование в составе состава автоматического REST интерфейса.
Преимущества OData:
Однако помните, что автоматический интерфейс сложнее контролировать с точки зрения сложной бизнес-логики и безопасности, поэтому для серьезных проектов интеграции чаще выбирают самописные HTTPСервисы.
Интеграция всегда требует защиты. Рассмотрим основные методы:
HTTPS.Проанализируем инструменты, которые помогут нам при разработке. Для отладки HTTP-сервисов не обязательно сразу писать код на сайте. Рекомендуем использовать инструменты типа Postman или Insomnia. С их помощью можно имитировать запросы к 1С, проверять заголовки, тело запроса и корректность возвращаемых данных.
В самой 1С отладка HTTP-сервиса происходит так же, как и обычного кода: установите точку останова в модуле сервиса, запустите 1С в режиме отладки и отправьте запрос из внешней программы (например, из того же Postman). Вы увидите, как выполнение остановится на вашей точке останова, и вы сможете просмотреть значения переменных в объекте Запрос.
Подводя итог, можно с уверенностью сказать: для связки "Сайт + 1С" сегодня оптимальным выбором являются HTTP-сервисы. Они обеспечивают гибкость, высокую скорость работы и простоту интеграции для веб-разработчиков, позволяя превратить 1С в мощный бэкенд для ваших веб-проектов.