Как настроить стандартный интерфейс OData в 1С?

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

Часто начинающие разработчики сталкиваются с ситуацией: база опубликована на веб-сервере (например, Apache), галочка публикации OData установлена, но при отправке запросов сервер возвращает пустой результат или ошибку. Давайте разберем по шагам, как правильно настроить стандартный интерфейс OData в 1С, проанализируем возможные причины ошибок и выясним, какие настройки необходимо выполнить внутри самой конфигурации — для этого есть инструмент логирования и анализа HTTP-запросов.

Проверка файла публикации веб-сервера

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

Перейдите в каталог публикации вашей базы и откройте текстовым редактором файл default.vrd. Проанализируем его содержимое. В нем обязательно должна присутствовать следующая секция:

<standardOData enable="true" reuseSessions="autouse" />

Если атрибут enable установлен в значение false, то интерфейс OData работать не будет. Параметр reuseSessions настоятельно рекомендуем устанавливать в значение autouse. Это позволит веб-серверу переиспользовать сеансы, что значительно повысит производительность, так как серверу не придется создавать новый сеанс под каждый небольшой запрос.

Настройка прав доступа (Ролей)

Даже если веб-сервер настроен идеально, мы не получим данные без правильной настройки прав. Выясним причину, по которой запросы часто возвращают пустоту или ошибки 401/403. Дело в том, что OData требует отдельного разрешения для пользователей — для этого подойдёт универсальная обработка для администрирования ролей и прав.

  1. Откройте конфигуратор и найдите роль пользователя, под которым вы планируете обращаться к базе через OData (поможет автоматизация настройки прав и профилей пользователей).
  2. В самом низу списка общих прав найдите и отметьте флажком право Удаленный доступ (OData).
  3. Убедитесь, что у этого пользователя есть базовые права на чтение и просмотр тех объектов метаданных (справочников, документов), к которым он будет обращаться. Если прав на чтение нет, OData просто скроет эти данные. Для этой задачи есть архитектурный аудит состава ролей и объектов.

Программное включение объектов в состав OData

OData должна быть настроена внутри самой конфигурации. По умолчанию платформа не открывает доступ ко всем объектам ради безопасности. Разберем, как программно указать, какие справочники или документы мы хотим отдавать наружу.

Для этого в 1С используется специальный метод УстановитьСоставСтандартногоИнтерфейсаOData. Посмотрим на пример кода, который активирует доступ к контрагентам и номенклатуре:


// Создаём массив метаданных
Массив = Новый Массив;
Массив.Добавить(Метаданные.Справочники.Контрагенты);
Массив.Добавить(Метаданные.Справочники.Номенклатура);

// Активируем состав интерфейса
УстановитьСоставСтандартногоИнтерфейсаOData(Массив);

Важное правило: этот код должен выполняться на стороне сервера в привилегированном режиме или под пользователем с полными правами. Обратите внимание, что данный метод полностью перезаписывает разрешенный состав. Если вы передадите в массив только один справочник, все остальные объекты станут недоступны через OData.

Использование встроенных и внешних обработок

Если вы не хотите писать код в модуле приложения, воспользуйтесь интерактивным способом. Запустите базу в режиме «Предприятие» под пользователем с административными правами. Через меню «Все функции» (или «Функции для технического специалиста») найдите обработку Настройка стандартного интерфейса OData.

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

Проверка работоспособности и получение метаданных

Теперь давайте проверим, работает ли наша настройка в принципе. Используем системный запрос для получения схемы метаданных — для этого есть обработка для анализа метаданных и прав доступа. Откройте браузер и введите следующий URL:

http://адрес_сервера/имя_базы/odata/standard.odata/$metadata

Если все настроено верно, мы получим объемный XML-документ с описанием всех доступных сущностей. Если сервер возвращает ошибку, значит, проблема кроется в публикации default.vrd или в правах доступа. Если XML открывается, но внутри нет наших справочников — значит, мы не настроили состав интерфейса (не отработал код или обработка).

Ограничения платформы и форматы данных

Проанализируем еще несколько технических нюансов, которые важно знать при работе с OData.

  1. Формат JSON: По умолчанию 1С отдает данные в формате Atom/XML. В современных реалиях удобнее работать с JSON. Чтобы сервер 1С вернул данные в этом формате, обязательно добавляйте к строке запроса параметр ?$format=json, либо передавайте в HTTP-запросе заголовок Accept: application/json.
  2. Регистр имен: Стандартный интерфейс OData в 1С крайне чувствителен к регистру символов. Обращаясь к объектам, мы обязаны использовать правильные латинские префиксы. Например, для справочников это Catalog_, для документов — Document_, для регистров сведений — InformationRegister_. Таким образом, правильное обращение выглядит как Catalog_Контрагенты (само имя объекта пишется в точности так, как в дереве метаданных).
  3. Права веб-сервера: Если мы работаем с файловой базой данных, убедитесь, что пользователь операционной системы, под которым запущен сервис Apache (часто это Local System), имеет полные права на папку с файловой базой 1С. Иначе веб-сервер просто не сможет прочитать файл базы, и запросы завершатся с ошибкой.

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

← На главную