Интеграция 1С с внешними сайтами и веб-приложениями — это одна из наиболее востребованных задач для современного разработчика. Когда встает вопрос о выгрузке данных или обмене в реальном времени, веб-сервисы становятся незаменимым инструментом. В этой статье мы подробно разберем, как быстро освоить эту технологию, какие инструменты использовать и на что обратить внимание в первую очередь.
Перед тем как приступить к написанию кода, нам необходимо определиться, какой именно тип сервиса использовать. В платформе 1С реализовано два основных механизма:
Разберем основные источники информации, которые помогут сформировать фундамент знаний. В первую очередь следует обратиться к официальной документации 1С:
Одной из главных сложностей для новичка является отладка. Мы не можем просто нажать кнопку в 1С и увидеть результат работы сервиса. Нам нужны инструменты, имитирующие запросы со стороны сайта:
Postman — это обязательный инструмент для любого разработчика, работающего с HTTP-сервисами. В нем мы можем сформировать запрос, указать заголовки (Headers), тело запроса (Body) в формате JSON и мгновенно получить ответ от 1С. Это позволяет отладить логику сервиса еще до того, как веб-разработчики со стороны сайта начнут писать свой код.
SoapUI — аналогичный инструмент, но специализирующийся на SOAP-запросах. Он умеет читать WSDL-описание вашего сервиса и автоматически генерировать шаблоны запросов, что значительно экономит время.
Выясним, как 1С преобразует свои данные в формат, понятный веб-сервису. Для работы с JSON в современных версиях платформы (8.3.6 и выше) используются встроенные функции:
// Пример записи данных в формат JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
СтруктураДанных = Новый Структура("Артикул, Цена", "001", 1500);
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
РезультатСтрокой = ЗаписьJSON.Закрыть();
Проанализируем этот код: мы создаем структуру, которая затем автоматически преобразуется в JSON-строку. Аналогично работает функция ПрочитатьJSON(), которая превращает входящий текст от сайта в объекты 1С (Структуры и Соответствия).
Для SOAP-сервисов ситуация сложнее: нам потребуется изучить фабрику XDTO. Она выступает переводчиком между объектами 1С и XML-схемой. Нужно создать пакет XDTO в конфигурации, описать типы данных и использовать их в свойствах веб-сервиса.
Веб-сервисы 1С не работают напрямую из конфигуратора. Чтобы сервис стал доступен по ссылке, его нужно опубликовать на веб-сервере. Разберем шаги публикации:
Типичная ошибка начинающих — попытка установить точку остановки и ожидание, что отладчик сработает при обращении к сервису. По умолчанию этого не произойдет. Чтобы «поймать» выполнение кода внутри сервиса, выполним следующие действия:
-debug в параметрах запуска службы).Если отладка не срабатывает, используем проверенный метод — логирование. Запишем входящие данные в текстовый файл или в специально созданный справочник «ЛогЗапросов». Это позволит увидеть, что именно пришло от сайта в момент ошибки.
Нельзя оставлять сервис открытым для всех. Рассмотрим, как ограничить доступ:
Во-первых, это базовая авторизация. При каждом запросе сайт должен передавать логин и пароль пользователя 1С в закодированном виде (Base64) в заголовке Authorization. В самой 1С для этого пользователя нужно создать отдельную роль, в которой дано право «Использование» именно на этот конкретный веб-сервис.
Во-вторых, использование SSL/HTTPS. Передача данных по открытому каналу HTTP небезопасна, так как пароли могут быть перехвачены. Настройка сертификата безопасности производится на стороне веб-сервера (Apache или IIS).
Рассмотрим простейший алгоритм для тех, кто делает это впервые: Создайте пустой HTTP-сервис в конфигураторе с одним шаблоном и методом GET. В модуле метода напишите возврат простой строки «Hello, World!». Опубликуйте базу на Apache. Попробуйте открыть полученную ссылку в обычном браузере. Если браузер запросил логин/пароль и после ввода показал вашу строку — поздравляем, вы успешно настроили инфраструктуру! Теперь можно переходить к сложной логике обмена данными.
Помните, что в работе с веб-сервисами практика важнее теории. Начните с малого, используйте Postman для проверки каждого шага, и со временем интеграция любой сложности не будет вызывать у вас затруднений.