Публикация web-сервиса в 1С — критически важный этап при интеграции системы с внешними приложениями, сайтами или другими информационными базами. Однако даже после успешной настройки публикации через консоль администрирования или конфигуратор не всегда понятно, работает ли сервис корректно. Ошибки могут скрываться на уровне IIS, прав доступа, конфигурации 1С:Предприятия или даже сетевых настроек.

Эта статья поможет разобраться, как проверить публикацию web-сервиса в 1С на всех этапах: от базовой диагностики через браузер до глубокого тестирования с помощью Postman и SoapUI. Мы рассмотрим типичные ошибки (например, 404 Not Found или 500 Internal Server Error), способы их устранения, а также нюансы работы с разными версиями платформы — от 1С:Предприятие 8.3.10 до актуальных релизов.

Если вы администрируете сервер или занимаетесь интеграцией, этот гайд сэкономит часы на поиск причин, почему внешняя система "не видит" ваш web-сервис.

1. Подготовка: что нужно знать перед проверкой

Прежде чем приступать к тестированию, убедитесь, что выполнены базовые условия:

  • 🔹 Web-сервис опубликован в конфигураторе через меню Администрирование → Публикация на веб-сервере.
  • 🔹 Используется поддерживаемая версия платформы (например, 1С:Предприятие 8.3.20+ для работы с OData).
  • 🔹 На сервере установлены и настроены IIS (для Windows) или Apache/Nginx (для Linux), а также компонента 1С:Предприятие для веб-сервера.
  • 🔹 Порты (обычно 80 для HTTP или 443 для HTTPS) открыты в брандмауэре.

Если публикация выполнялась через веб-сервер Apache, проверьте наличие модуля mod_proxy и корректность конфигурационного файла (например, /etc/apache2/sites-available/1c.conf). Для IIS важно, чтобы был установлен URL Rewrite Module и сконфигурирован пул приложений для .

Обратите внимание: если вы используете 1С:Fresh или облачные решения, часть настроек может быть скрыта за интерфейсом провайдера. В этом случае проверка сводится к тестированию конечной точки (endpoint) без доступа к серверной части.

📊 Какой веб-сервер вы используете для публикации 1С?
IIS (Windows)
Apache (Linux)
Nginx
Другой
Не знаю

2. Базовая проверка через браузер

Самый простой способ убедиться, что web-сервис опубликован — открыть его адрес в браузере. Формат URL зависит от типа публикации:

  • 🔗 Для SOAP-сервисов: http://[адрес_сервера]/[имя_базы]/ws/[имя_сервиса].1cws
  • 🔗 Для HTTP-сервисов (REST/OData): http://[адрес_сервера]/[имя_базы]/odata/standard.odata/

Если публикация прошла успешно, вы увидите:

  • 📄 Для SOAP: XML-описание WSDL (начинается с тега <definitions>).
  • 📄 Для OData: JSON-ответ с метаданными сервиса (начинается с {"@odata.context":...}).

Типичные ошибки на этом этапе:

Ошибка Причина Решение
404 Not Found Неверный URL или сервис не опубликован Проверьте имя базы и сервиса в конфигураторе, переопубликуйте
500 Internal Server Error Ошибка на стороне сервера (права, конфигурация IIS/Apache) Просмотрите логи сервера (Event Viewer для IIS или /var/log/apache2/error.log)
403 Forbidden Недостаточно прав доступа Настройте права для пользователя IIS (IIS_IUSRS) или проверьте web.config

Важно! Если вы используете аутентификацию Windows, браузер может не показать ошибку явным образом, а вместо этого предложить ввести логин/пароль. В этом случае попробуйте открыть URL в режиме инкогнито или через другой браузер.

Invoke-WebRequest -Uri "http://ваш_сервер/база/ws/сервис.1cws" -UseBasicParsing

или для Linux:

curl -v http://ваш_сервер/база/ws/сервис.1cws

Это поможет увидеть полные заголовки ответа, включая код состояния.-->

3. Проверка через Postman: глубокое тестирование

Postman — один из самых удобных инструментов для тестирования web-сервисов . Он позволяет:

  • 📌 Отправлять запросы с заголовками аутентификации.
  • 📌 Просматривать полный ответ сервера (включая заголовки и тело).
  • 📌 Сохранять коллекции запросов для повторного использования.

Инструкция по проверке SOAP-сервиса:

  1. Создайте новый запрос, выберите метод POST.
  2. Введите URL сервиса (например, http://server/base/ws/Service.1cws).
  3. В заголовках (Headers) добавьте:
    Content-Type: text/xml; charset=utf-8
    

    SOAPAction: "http://tempuri.org/ИмяМетода"

  4. В теле запроса (Body) вставьте XML-шаблон вызова метода (можно скопировать из WSDL).

Для OData:

  • Используйте метод GET для чтения данных (например, http://server/base/odata/standard.odata/Catalog_Номенклатура).
  • Для аутентификации укажите логин/пароль в разделе Authorization (выберите тип Basic Auth или Digest Auth).

Критическая деталь: если сервис требует аутентификацию через 1С:Предприятие, в заголовках должен передаваться токен сессии или логин/пароль в формате Base64 (для Basic Auth). Без этого сервер вернёт 401 Unauthorized.

Скопировать URL сервиса из конфигуратора|Проверить метод (GET/POST)|Добавить заголовки Content-Type и SOAPAction (для SOAP)|Указать данные аутентификации|Отправить запрос и проверить код ответа-->

4. Диагностика через логи сервера

Если web-сервис не отвечает или возвращает ошибки, логи сервера и помогут выявить причину. Где искать:

  • 📁 Логи IIS:
    • Путь: C:\inetpub\logs\LogFiles
    • Ищите файлы с именем сайта (например, W3SVC1\u_ex[год][месяц][день].log).
  • 📁 Логи Apache/Nginx:
    • Apache: /var/log/apache2/error.log
    • Nginx: /var/log/nginx/error.log
  • 📁 Логи 1С:
    • Путь: C:\Program Files\1cv8\conf\log\ (для Windows) или /opt/1C/v8.3/x86_64/log/ (для Linux).
    • Ищите файлы с расширением .log и именем, содержащим web или ws.

Типичные ошибки в логах и их значение:

Сообщение в логе Причина Действие
Failed to load 1C:Enterprise runtime Не установлена компонента 1С:Предприятие для веб-сервера Установите компоненту с дистрибутива и перезапустите веб-сервер
Access denied for user 'IIS_IUSRS' Недостаточно прав у пула приложений IIS Настройте права на папку с базой для пользователя IIS_IUSRS
OData query parser error Некорректный запрос к OData-сервису Проверьте синтаксис запроса (например, фильтры $filter)

Если в логах вы видите ошибку Не найден обработчик для URL, это означает, что сервис не опубликован или имя в URL не совпадает с именем в конфигураторе. Переопубликуйте сервис и проверьте регистр символов (например, MyService и myservice — разные адреса!).

Как включить расширенное логирование в 1С?

Для детальной диагностики добавьте в файл webinst.xml (расположен в папке конфигурации веб-сервера) параметр:

<add key="LogLevel" value="Debug" />

После этого перезапустите веб-сервер. Логи станут более подробными, но их объём увеличится.

5. Типичные ошибки и их решения

Даже после успешной публикации web-сервис может работать некорректно. Рассмотрим самые распространённые проблемы и способы их устранения.

Ошибка: 401 Unauthorized (отсутствует доступ)

Причины:

  • 🔐 Не переданы учётные данные (для сервисов с аутентификацией).
  • 🔐 Неверный логин/пароль или пользователь заблокирован в .
  • 🔐 В настройках IIS отключена анонимная аутентификация, но не настроена Basic/Digest.

Решение:

  1. Проверьте, что пользователь имеет права на вызов web-сервиса (в конфигураторе: Администрирование → Пользователи).
  2. В Postman укажите логин/пароль в разделе Authorization (тип Basic Auth).
  3. В IIS включите Anonymous Authentication (если сервис публичный) или настройте Basic Authentication.

Ошибка: 502 Bad Gateway (проблема с прокси)

Причины:

  • 🌐 Не работает служба 1С:Предприятие или веб-расширение.
  • 🌐 Некорректные настройки прокси в web.config (для IIS) или proxy_pass (для Nginx).
  • 🌐 Порт, используемый для связи с , заблокирован (по умолчанию 1540-1541, 1560-1591).

Решение:

  • Перезапустите службу 1C:Enterprise 8.3 Server Agent.
  • Проверьте, что в web.config корректно указан адрес сервера :
    <add key="1C:Enterprise Server URL" value="tcp://localhost:1541" />
  • Откройте порты в брандмауэре (например, для Windows Firewall используйте команду:
    netsh advfirewall firewall add rule name="1C Web Service" dir=in action=allow protocol=TCP localport=1540-1591
💡

Ошибка 502 Bad Gateway часто возникает из-за несоответствия версий платформы на сервере и в веб-расширении. Убедитесь, что версии совпадают (например, обе 8.3.22.1830).

Ошибка: 400 Bad Request (некорректный запрос)

Причины:

  • 📝 Неверный формат XML/JSON в теле запроса (например, лишние символы или не закрытые теги).
  • 📝 Для OData — некорректный синтаксис фильтра ($filter) или сортировки ($orderby).
  • 📝 Отсутствует обязательный заголовок Content-Type.

Решение:

  • Валидируйте XML/JSON через онлайн-сервисы (например, JSONLint или XMLValidation).
  • Для OData используйте конструктор запросов в 1С:Предприятии (меню Все функции → Обработки → Конструктор запросов OData).
📊 Какую ошибку вы чаще всего встречаете при работе с web-сервисами 1С?
404 Not Found
500 Internal Server Error
401 Unauthorized
502 Bad Gateway
Другую

6. Проверка через SoapUI (для SOAP-сервисов)

SoapUI — специализированный инструмент для тестирования SOAP-сервисов. Он позволяет:

  • 🧪 Автоматически генерировать запросы на основе WSDL.
  • 🧪 Тестировать производительность и нагрузочную способность.
  • 🧪 Сохранять проекты с настройками для повторного использования.

Пошаговая инструкция:

  1. Создайте новый проект в SoapUI (File → New SOAP Project).
  2. В поле Initial WSDL/WADL введите URL вашего сервиса (например, http://server/base/ws/Service.1cws?wsdl).
  3. После загрузки WSDL выберите метод для тестирования в левой панели.
  4. Откройте вкладку Request 1, при необходимости отредактируйте XML-шаблон.
  5. Нажмите Submit (зелёная стрелка) для отправки запроса.

В правом окне отобразится ответ сервера. Обратите внимание на:

  • 🔍 Код состояния (должен быть 200 OK).
  • 🔍 Время ответа (задержки более 2-3 секунд могут указывать на проблемы с производительностью).
  • 🔍 Содержимое ответа (проверьте, что данные соответствуют ожидаемым).

Если сервис требует аутентификацию, добавьте её в настройках запроса:

  1. ПКМ по запросу → Add Authentication.
  2. Выберите тип Basic или Digest.
  3. Введите логин/пароль пользователя .

Совет: если ответ содержит ошибку Ошибка при вызове метода, проверьте:

  • 🔧 Правильность передаваемых параметров (типы данных должны совпадать с описанными в конфигураторе).
  • 🔧 Наличие у пользователя прав на выполнение метода (в настройте роль с соответствующими правами).

7. Проверка доступности из внешней сети

Если web-сервис работает локально, но недоступен извне, проблема может крыться в:

  • 🌍 Настройках брандмауэра (порты 80/443 закрыты для внешних подключений).
  • 🌍 Маршрутизаторе (нет проброса портов на сервер с ).
  • 🌍 DNS (доменное имя не привязано к IP-адресу сервера).

Как проверить:

  1. С внешнего компьютера выполните команду:
    telnet [ваш_домен_или_IP] 80

    Если соединение не устанавливается, порт закрыт.

  2. Используйте онлайн-сервисы для проверки портов (например, YouGetSignal).
  3. Если используется HTTPS, убедитесь, что сертификат SSL действителен (проверьте через SSL Checker).

Для проброса портов на роутере:

  • Зайдите в админ-панель роутера (обычно 192.168.1.1 или 192.168.0.1).
  • Найдите раздел Port Forwarding или Виртуальные серверы.
  • Добавьте правило для проброса внешнего порта 80 на внутренний IP сервера с и порт 80.

Внимание! Открытие портов во внешнюю сеть повышает риск атак. Обязательно:

  • 🔒 Настройте HTTPS с действительным SSL-сертификатом.
  • 🔒 Ограничьте доступ по IP (в настройках IIS или .htaccess для Apache).
  • 🔒 Используйте сложные пароли для пользователей web-сервисов.
Test-NetConnection -ComputerName ваш_домен -Port 80

Если TcpTestSucceeded: False, порт недоступен.-->

8. Автоматизация проверки: скрипты и мониторинг

Чтобы минимизировать простои, настройте автоматизированную проверку работоспособности web-сервисов. Варианты:

1. Скрипт на PowerShell (для Windows)

Создайте файл Check-1CWebService.ps1 со следующим содержимым:

$url = "http://ваш_сервер/база/ws/сервис.1cws"

try {

$response = Invoke-WebRequest -Uri $url -UseBasicParsing -ErrorAction Stop

if ($response.StatusCode -eq 200) {

Write-Host "Сервис доступен. Код ответа: $($response.StatusCode)" -ForegroundColor Green

}

} catch {

Write-Host "Ошибка: $($_.Exception.Message)" -ForegroundColor Red

}

Запускайте скрипт по расписанию через Планировщик заданий (Task Scheduler).

2. Мониторинг через Zabbix или Nagios

Настройте проверку доступности URL с помощью:

  • 📊 Zabbix: используйте элемент данных типа Web scenario.
  • 📊 Nagios: плагин check_http с параметрами:
    check_http -H ваш_сервер -u "/база/ws/сервис.1cws" -p 80

3. Логирование ошибок в 1С

Добавьте в модуль web-сервиса обработку исключений с записью в регистр сведений:

Процедура ПриОшибке(ОписаниеОшибки)

ЗаписьЛога = РегистрыСведений.ЛогОшибокWebСервиса.СоздатьЗапись();

ЗаписьЛога.Дата = ТекущаяДата();

ЗаписьЛога.Сообщение = ОписаниеОшибки.Описание;

ЗаписьЛога.Записать();

КонецПроцедуры

Это поможет отслеживать сбои без доступа к логам сервера.

💡

Автоматизированный мониторинг позволяет обнаруживать проблемы до того, как они повлияют на бизнес-процессы. Настройте уведомления на email или в Telegram при падении сервиса.

FAQ: Частые вопросы по проверке web-сервисов 1С

🔍 Почему при открытии URL сервиса в браузере скачивается файл вместо отображения WSDL?

Это происходит, если веб-сервер неверно определяет тип содержимого. Для IIS проверьте, что в web.config есть строка:

<remove fileExtension=".1cws" />

<mimeMap fileExtension=".1cws" mimeType="text/xml" />

Для Apache добавьте в конфигурацию:

AddType text/xml .1cws
🔍 Как проверить web-сервис, если он требует сертификат клиента?

Для тестирования сервисов с взаимной аутентификацией (mTLS):

  1. В Postman перейдите на вкладку Settings → Certificates.
  2. Добавьте клиентский сертификат (файл .pfx или .p12) и укажите пароль.
  3. При отправке запроса сертификат будет автоматически подставлен.

Для SoapUI импортируйте сертификат в Preferences → SSL Settings.

🔍 Можно ли протестировать web-сервис без Postman/SoapUI?

Да, альтернативные способы:

  • 🖥️ cURL (для Linux/macOS/Windows):
    curl -X POST -H "Content-Type: text/xml" -d "@request.xml" http://server/base/ws/Service.1cws
  • 🖥️ Встроенный тестер в 1С: в конфигураторе откройте Web-сервисы → Тестирование.
  • 🖥️ Excel + Power Query: для OData-сервисов можно подключиться через Данные → Получить данные → Из других источников → Из OData.
🔍 Почему после обновления платформы 1С перестали работать web-сервисы?

Причины:

  • 🔄 Несовместимость версий веб-расширения и платформы. Обновите компоненту 1С:Предприятие для веб-сервера.
  • 🔄 Изменения в конфигурации web.config или default.vrd (для Apache).
  • 🔄 Сброс прав доступа. Проверьте права для пользователя IIS_IUSRS или apache.

Решение:

  1. Переопубликуйте web-сервисы через конфигуратор.
  2. Перезапустите веб-сервер (iisreset для IIS или systemctl restart apache2 для Apache).
  3. Проверьте совместимость версий в файле version.txt (расположен в папке с платформой ).
🔍 Как ограничить доступ к web-сервису по IP?

Для IIS:

  1. Откройте IP Address and Domain Restrictions для вашего сайта.
  2. Нажмите Add Allow Entry и укажите разрешённые IP.
  3. Установите Deny Action в Forbidden для остальных.

Для Apache, добавьте в .htaccess:

Order Deny,Allow

Deny from all

Allow from 192.168.1.100

Allow from 10.0.0.5

Для Nginx:

location / {

allow 192.168.1.100;

allow 10.0.0.5;

deny all;

}