Как подключиться к веб-сервису 1С на виртуальной машине: пошаговое руководство по настройке и отладке

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Развертывание веб-сервисов 1С на виртуальных машинах в облачных инфраструктурах (таких как VK Cloud, ранее mcs.mail.ru) — стандартная задача для интеграции систем. Однако при первой настройке разработчики часто сталкиваются с тем, что сервис «не виден» извне. В этой статье мы подробно разберем, как пройти путь от установки Apache до успешного вызова метода веб-сервиса, проанализируем типичные ошибки с брандмауэром, SSL-сертификатами и пространствами имен.

Анализ исходной ситуации

Представим сценарий: на виртуальной машине установлен веб-сервер Apache, база 1С опубликована, но при попытке подключения через код 1С или браузер возникает ошибка. Рассмотрим стандартный фрагмент кода, с которого обычно начинается работа:


ссл = Новый ЗащищенноеСоединениеOpenSSL;
всОпред = Новый WSОпределения("http://" + IP + "/WebServices/ws/nsi.1cws?wsdl", "user", "password", , , ссл);

Если этот код не отрабатывает, причину нужно искать последовательно на нескольких уровнях: сетевом, системном и прикладном (внутри самой 1С).

Шаг 1. Проверка доступности веб-клиента

Прежде чем отлаживать программный доступ к WSОпределения, необходимо убедиться, что сам веб-сервер и расширение 1С работают корректно. Проанализируем ситуацию: открывается ли база через браузер? Рассмотрим порядок действий:

  1. Попробуем зайти по адресу http://[Ваш_IP]/[Имя_Публикации].
  2. Если браузер выдает ошибку "404 Not Found" или "Не удается получить доступ к сайту", проблема в настройках Apache или сетевом доступе.
  3. Если открывается окно авторизации 1С или интерфейс веб-клиента, значит, база опубликована правильно, и проблему нужно искать в конкретных настройках веб-сервиса.

Шаг 2. Настройка сетевого окружения и брандмауэра

Работа в облаке (VK Cloud и другие) накладывает дополнительные ограничения. Выясним причину, почему пакеты могут не доходить до виртуальной машины. Даже если внутри операционной системы (Windows/Linux) брандмауэр отключен, существует внешний периметр безопасности.

Группы безопасности (Security Groups): В консоли управления облаком необходимо проверить правила входящего трафика. Для работы веб-сервисов должны быть открыты порты:

Внутренний брандмауэр ОС: Если на виртуальной машине установлена Windows, проверьте правила Advanced Firewall. Нужно создать разрешающее правило для входящих подключений по порту 80/443 или для процесса httpd.exe (Apache).

Шаг 3. Нюансы использования SSL и защищенного соединения

Разберем ситуацию, когда используется ЗащищенноеСоединениеOpenSSL. В 1С этот объект по умолчанию проверяет валидность сертификата сервера. Если вы используете самоподписанный сертификат или еще не настроили SSL на Apache, попытка подключения по HTTPS завершится неудачей.

Если вы только начинаете настройку, попробуйте временно исключить SSL из уравнения:

  1. Используйте протокол http:// вместо https://.
  2. Уберите параметр ссл из конструктора Новый WSОпределения.

Если же работа через HTTPS обязательна, рассмотрим использование бесплатных сертификатов Let's Encrypt. Это позволит избежать ошибок доверия в 1С без добавления сертификатов в локальные хранилища на каждом клиентском компьютере.

Шаг 4. Публикация веб-сервиса и файл default.vrd

Проанализируем процесс публикации. В Конфигураторе 1С через меню "Администрирование" -> "Публикация на веб-сервере" должны быть установлены соответствующие флажки на вкладке "Веб-сервисы". После публикации 1С создает файл default.vrd. Проверим его содержимое, оно должно выглядеть примерно так:


<ws>
    <service name="ExchangeShop"
             alias="nsi.1cws"
             enable="true"
             publishExtensionsByDefault="true" />
</ws>

Важно помнить: после любого изменения в составе веб-сервисов или их методов в Конфигураторе, необходимо **перезапустить Apache**, так как он кэширует структуру публикации при старте модуля 1С.

Шаг 5. Исправление ошибки "Сервис не найден" и пространства имен

Выясним причину одной из самых коварных ошибок: когда WSОпределения создаются успешно, но при попытке создать WSПрокси система сообщает, что сервис не найден. Рассмотрим, в чем здесь кроется секрет.

В 1С при создании прокси-класса требуется указать Пространство имен (Namespace) сервиса. Часто разработчики ошибочно указывают там URL-адрес публикации или IP-адрес сервера. Посмотрим на правильный пример:


// 1. Получаем определения (здесь указываем URL к WSDL)
URL_WSDL = "http://" + IP + "/WebServices/ws/nsi.1cws?wsdl";
Определения = Новый WSОпределения(URL_WSDL, Логин, Пароль);

// 2. Создаем прокси
// ОШИБКА: Прокси = Новый WSПрокси(Определения, "http://" + IP + "/WebServices/", "ExchangeShop", "ExchangeShopSoap");
// ПРАВИЛЬНО: Используем URI пространства имен из свойств веб-сервиса в Конфигураторе
ПространствоИмен = "http://www.my-company.ru/exchange"; 
Прокси = Новый WSПрокси(Определения, ПространствоИмен, "ExchangeShop", "ExchangeShopSoap");

Важный момент: Пространство имен — это уникальный идентификатор вашего сервиса в формате URI (обычно задается в свойствах веб-сервиса в дереве метаданных). Оно не обязано быть рабочим URL-адресом, но должно строго совпадать в Конфигураторе и в коде вызова.

Итоговый чек-лист для успешного подключения

  1. Сетевой доступ: Порты 80/443 открыты в панели управления облаком и в брандмауэре самой ОС.
  2. Apache: Служба запущена, модуль расширения веб-сервера 1С (wsap24.so/dll) корректно подключен в httpd.conf.
  3. Публикация: В файле default.vrd присутствует описание вашего веб-сервиса, и его имя совпадает с именем в метаданных.
  4. Авторизация: Пользователь 1С, под которым идет подключение, имеет права "Удаленный доступ" и права на использование конкретного веб-сервиса.
  5. Код: Для получения WSОпределения используется URL с суффиксом ?wsdl, а для WSПрокси используется корректное Пространство имен из свойств объекта в 1С.

Следуя этой структуре, мы сможем последовательно исключить все возможные точки отказа и обеспечить стабильную работу интеграции между базами 1С и внешними потребителями данных.

← На главную