Разработка и Конфигурация · 13 мин
Как создать веб-сервис в 1С: от конфигурации до публикации
Как создать веб-сервис в 1С: настройка публикации на веб-сервере, создание объекта конфигурации, операции, WSDL-описание и тестирование обмена данными.
Веб-сервис в 1С — это механизм, который позволяет другим системам обращаться к информационной базе по протоколу SOAP: получать данные, создавать документы, запускать регламентные операции. Типовой сценарий — интеграция с сайтом, CRM, складской программой или мобильным приложением, когда внешняя система должна читать остатки, цены или передавать заказы напрямую в учётную систему.
Создание веб-сервиса в 1С состоит из трёх обязательных этапов: описание объекта «Web-сервис» в конфигураторе с операциями и кодом обработчиков, публикация базы на веб-сервере (IIS или Apache) и проверка доступности WSDL-описания извне. Пропуск любого этапа — самая частая причина того, что сервис «есть в конфигурации, но не отвечает».
Ниже разобран полный цикл: когда веб-сервис оправдан, как написать его в конфигураторе, как опубликовать и как проверить работу. Материал ориентирован на платформу 1С:Предприятие 8.3 с файловой или клиент-серверной базой.
Когда нужен веб-сервис, а когда достаточно других механизмов
Перед разработкой стоит убедиться, что SOAP веб-сервис — правильный выбор. Он подходит, когда внешняя система должна инициировать обмен: например, сайт запрашивает остатки в реальном времени или CRM создаёт контрагента в 1С в момент регистрации клиента. SOAP хорошо документирован через WSDL, поддерживается большинством языков программирования и строго типизирует параметры.
Если же требуется простая передача JSON-данных или интеграция с современными мобильными приложениями, часто удобнее HTTP-сервисы — они легче, проще в отладке и не требуют генерации клиентских прокси-классов. Для обмена между двумя базами 1С также существуют планы обмена и EnterpriseData, которые закрывают типовые сценарии синхронизации без написания кода.
Сравнение вариантов интеграции
Подходит, когда внешняя система активно вызывает методы 1С и нужна строгая типизация через WSDL. Ограничение — тяжеловесный формат и сложнее отладка.
Оптимален для JSON-обмена, мобильных приложений и веб-интеграций. Проще отладка через браузер и Postman, но контракт описывается вручную.
Для регулярной синхронизации между базами 1С без написания сервисов. Не подходит для запросов в реальном времени из внешних систем.
Подготовка: что должно быть настроено заранее
Для публикации веб-сервиса потребуется веб-сервер: IIS на Windows Server или Apache (поддерживаются версии 2.2 и 2.4 для соответствующих релизов платформы). На машине с веб-сервером должны быть установлены компоненты 1С — при установке платформы нужно отметить «Модули расширения веб-сервера». Без этих модулей публикация невозможна: кнопка в конфигураторе будет работать, но сервис не ответит.
Также проверьте, что у учётной записи, под которой работает пул приложений IIS (или служба Apache), есть права на чтение каталога базы и каталога публикации. Для клиент-серверной базы веб-сервер должен иметь сетевой доступ к серверу 1С и кластер должен разрешать подключение. Учётная запись 1С, под которой будут выполняться вызовы, должна существовать в базе и обладать правами на объекты, к которым обращается код сервиса.
Создание объекта «Web-сервис» в конфигураторе
Откройте конфигурацию в режиме «Конфигуратор», в дереве объектов найдите ветку «Общие» → «Web-сервисы» и добавьте новый объект. В свойствах задайте имя (например, ExchangeService), пространство имён URI — уникальный идентификатор сервиса, обычно в формате http://company.ru/ws/exchange. Пространство имён не обязано быть реальным адресом, но должно быть уникальным, чтобы клиенты корректно различали сервисы.
В свойствах сервиса также укажите пакеты XDTO, которые будут использоваться для типизации параметров, если простых типов (строка, число, булево, дата) недостаточно. Имя файла публикации по умолчанию формируется как ИмяСервиса.1cws — его можно изменить, но в большинстве случаев достаточно стандартного.
Операции и параметры
Внутри сервиса создаются операции — это методы, которые сможет вызывать внешняя система. Для каждой операции укажите имя, тип возвращаемого значения (например, string из пространства имён XML Schema) и имя процедуры-обработчика в модуле сервиса. Параметры операции описываются отдельно: имя, тип, признак возможного пустого значения.
Пример: операция GetStock с параметром SKU (строка), возвращающая строку с остатком. В модуле сервиса платформа автоматически создаст заготовку функции Функция GetStock(SKU), в которую вы добавите прикладной код — запрос к регистру остатков и формирование ответа.
Код обработчика операции
Обработчик операции — обычная функция на встроенном языке 1С в модуле веб-сервиса. Внутри доступны все прикладные объекты: справочники, документы, регистры, запросы. Код выполняется на сервере под пользователем, указанным при подключении, поэтому все проверки прав работают штатно.
Пример простого обработчика, возвращающего остаток по артикулу:
Функция GetStock(SKU)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ЕСТЬNULL(СУММА(Остатки.КоличествоОстаток), 0) КАК Остаток
|ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура.Артикул = &Артикул) КАК Остатки";
Запрос.УстановитьПараметр("Артикул", SKU);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Формат(Выборка.Остаток, "ЧГ=");
Иначе
Возврат "0";
КонецЕсли;
КонецФункцииВозвращайте из операций только те данные, которые реально нужны вызывающей стороне. Передача целых таблиц значений или ссылок на объекты через SOAP невозможна — ссылку придётся сериализовать в строку УИДа, а таблицу — представить через пакет XDTO или строку JSON/XML. Для сложных структур заведите фабрику XDTO с описанием типа ответа: это даст строгую схему в WSDL и упростит жизнь разработчикам внешней системы.
Обязательно оборачивайте прикладной код в попытку-исключение и возвращайте осмысленное сообщение об ошибке вместо падения сервиса. Необработанное исключение превращается в SOAP Fault с техническим текстом, который сложно диагностировать на стороне клиента.
Публикация веб-сервиса на веб-сервере
Публикация выполняется из конфигуратора: меню «Администрирование» → «Публикация на веб-сервере». Укажите имя публикации (латиницей, без пробелов — оно станет частью URL), каталог публикации и отметьте флажок «Публиковать Web-сервисы». В списке сервисов убедитесь, что ваш сервис отмечен. После нажатия «Опубликовать» платформа запишет в каталог файлы default.vrd и ИмяСервиса.1cws.
Для IIS проверьте, что создано виртуальное приложение, включён нужный режим (32/64 бита — должен совпадать с разрядностью модулей расширения) и что обработчик wsisapi.dll разрешён в ограничениях ISAPI. Для Apache платформа добавляет директивы в httpd.conf — после публикации перезапустите службу веб-сервера.
Аутентификация настраивается на стороне веб-сервера. Базовая аутентификация передаёт логин и пароль пользователя 1С в заголовках, поэтому при работе через интернет обязательно включайте HTTPS, иначе учётные данные передаются открытым текстом. Альтернатива — настроить в файле default.vrd пользователя по умолчанию, но это снижает контроль доступа и подходит только для закрытых контуров.
- 1Установите на веб-сервер компоненту «Модули расширения веб-сервера» дистрибутива 1С.
- 2В конфигураторе откройте «Администрирование» → «Публикация на веб-сервере», задайте имя и каталог.
- 3Отметьте «Публиковать Web-сервисы» и нужный сервис в списке, нажмите «Опубликовать».
- 4Перезапустите веб-сервер (IISRESET или restart Apache).
- 5Откройте в браузере http://сервер/имя_публикации/ws/ИмяСервиса?wsdl и убедитесь, что возвращается XML-описание.
Проверка работы и отладка
Первый признак успешной публикации — WSDL открывается в браузере и содержит описание ваших операций. Если вместо XML вы видите ошибку 404, сервис не опубликован или неверно указан путь; ошибка 500 обычно означает проблему с модулями расширения или правами на каталог; запрос авторизации, который не принимает корректный пароль, — несовпадение настроек аутентификации IIS и 1С.
Для функционального теста удобно использовать SoapUI или аналогичный клиент: импортируйте WSDL, сформируйте запрос к операции и проверьте ответ. При отладке кода обработчика включите в конфигураторе отладку по протоколу HTTP и разрешите отладку веб-сервисов — тогда точки останова в модуле сервиса будут срабатывать при внешних вызовах.
Как проверить результат
Возвращается XML с описанием операций сервиса
Ошибка 404, 500 или бесконечный запрос пароля
SOAP-ответ с ожидаемыми данными за разумное время
SOAP Fault, таймаут или пустой ответ
Сервис видит только нужные объекты, запись ограничена сценарием
Под учёткой сервиса доступен весь интерфейс и все документы
Возвращается контролируемое сообщение об ошибке
Необработанное исключение с техническим стеком вызовов
Обращение к веб-сервису из другой базы 1С
Если потребитель сервиса — другая база 1С, подключение делается через WS-ссылки (объект «WS-ссылки» в конфигураторе) или динамически через WSОпределения. В первом случае конфигуратор по WSDL генерирует прокси-объект, и вызов операции выглядит как обычный вызов метода. Во втором — определение создаётся в коде по URL WSDL, что удобно, когда адрес сервиса меняется между контурами.
Учитывайте, что каждый вызов — это сетевой запрос и сеанс на сервере. Не помещайте вызовы веб-сервиса в циклы по строкам документа: агрегируйте данные и передавайте пакетом. Для массовых операций предусмотрите в сервисе отдельную операцию, принимающую массив или XDTO-контейнер.
Как выбрать действие
Ограничения и безопасность
Веб-сервисы 1С работают синхронно: клиент ждёт завершения обработчика. Длительные операции (проведение больших пакетов документов, формирование отчётов) лучше выносить в фоновые задания, а сервису возвращать идентификатор задачи, по которому клиент позже запросит результат. Это снижает риск обрывов по таймауту и блокировок.
С точки зрения безопасности придерживайтесь минимально необходимых прав: создайте отдельного пользователя для интеграции, выдайте ему только требуемые роли, по возможности ограничьте доступ к сервису по IP на уровне веб-сервера. Ведите журнал вызовов — хотя бы запись входящих параметров и результатов в регистр сведений: при расхождениях данных между системами это единственный способ восстановить картину.
Частые вопросы
Чем веб-сервис отличается от HTTP-сервиса в 1С?
Веб-сервис работает по SOAP с формальным WSDL-описанием и строгой типизацией, HTTP-сервис обрабатывает произвольные HTTP-запросы (GET, POST) и обычно обменивается JSON. Для новых интеграций с веб-приложениями чаще выбирают HTTP-сервисы, SOAP остаётся востребован в корпоративных системах с готовой поддержкой WSDL.
Можно ли опубликовать веб-сервис файловой базы?
Да, файловая база публикуется через веб-сервер так же, как клиент-серверная: платформа обращается к файлу базы через модуль расширения. Ограничение — производительность и однопользовательская природа файлового режима при интенсивных обращениях.
Почему браузер запрашивает логин и пароль при открытии WSDL?
Это работает аутентификация веб-сервера. Введите имя и пароль пользователя информационной базы. Если корректные данные не принимаются, проверьте настройки аутентификации в IIS (должна быть включена Basic) и убедитесь, что пользователь существует в базе и не заблокирован.
Как передать через веб-сервис сложную структуру данных?
Опишите тип в пакете XDTO и укажите его как тип параметра или возвращаемого значения операции — структура попадёт в WSDL. Альтернатива без изменения схемы: сериализовать данные в JSON-строку и передать как обычный строковый параметр, но тогда контракт придётся документировать вручную.
Нужно ли перезапускать сервер 1С после изменения кода сервиса?
Нет, достаточно обновить конфигурацию базы данных. Перезапуск веб-сервера требуется только после повторной публикации (изменения состава сервисов, каталога или настроек default.vrd) либо при смене модулей расширения.
Безопасно ли открывать веб-сервис 1С в интернет?
Только при соблюдении мер: HTTPS, отдельный пользователь с минимальными правами, ограничение по IP или размещение за API-шлюзом, проверка всех входных данных в коде. Публикация без этих мер фактически открывает доступ к учётной системе и недопустима.
Что важно запомнить
Веб-сервис в 1С создаётся в три шага: объект «Web-сервис» с операциями в конфигураторе, код обработчиков с проверкой входных данных и публикация на веб-сервере с включённой опцией веб-сервисов. Контрольная точка — доступность WSDL в браузере и успешный вызов операции из тестового клиента. Для безопасности используйте отдельного пользователя с минимальными правами, HTTPS и тестирование на копии базы.