В 1С:Предприятие, начиная с версии 8.3.5, платформа автоматически может генерировать REST интерфейс для всей конфигурации. Он работает по протоколу OData и он позволяет работать со справочниками, документами и регистрами через web-сервер. В целом скорость получения данных на несколько порядков быстрее чем через COM или файлы, что не может не радовать.
Для разных операций используются разные запросы:
- GET – используется для получения данных;
- POST – используется для создания объектов;
- PATCH – модификация существующего объекта;
- DELETE – удаление объекта.
Для доступа к различным объектам используются префиксы:
- Справочник — Catalog;
- Документ — Document;
- Журнал документов — DocumentJournal;
- Константа — Constant;
- План обмена — ExchangePlan;
- План счетов — ChartOfAccounts
- План видов расчета — ChartOfCalculationTypes;
- План видов характеристик — ChartOfCharacteristicTypes;
- Регистр сведений — InformationRegister;
- Регистр накопления — AccumulationRegister;
- Регистр расчета — CalculationRegister;
- Регистр бухгалтерии — AccountingRegister;
- Бизнес-процесс — BusinessProcess;
- Задача — Task.
Используя протокол ODATA можно использовать так же и встроенные методы объектов, выполняя POST запросы.
- Для документа – Post() и Unpost();
- Для задачи – ExecuteTask();
- Для бизнес-процесса – Start();
- Для регистра сведений – SliceLast() и SliceFirst();
- Для регистра накопления и регистра бухгалтерии – Balance(), Turnovers() и BalanceAndTurnovers();
- Для регистра расчета – ScheduleData(), ActualActionPeriod(), <ИмяПерерасчета>() и Base<Имя базового регистра расчета>().
Чтобы начать работать с этим интерфейсом нужно его опубликовать. Делается это через меню конфигуратора “Администрирование” – “Публикация на веб-сервере”, ставим галку “Публиковать стандартный интерфейс OData” и нажимаем “Опубликовать”.
После публикации работу протокола можно проверить по адресу http://<ИмяСервера>/<ИмяБазы>/odata/standard.odata. В ответе мы должны получить весь состав опубликованных таблиц. Он должен быть похож на рисунок ниже.
Если после публикации REST интерфейса состав опубликованных данных пустой, то нужно воспользоваться методом УстановитьСоставСтандартногоИнтерфейсаOData. На входе у него 1 параметр типа “массив”. В массив нужно добавить метаданные, которые нужно опубликовать.
Состав = новый Массив;
Состав.Добавить(Метаданные.Справочники.Контрагенты);
УстановитьСоставСтандартногоИнтерфейсаOData(Состав);
Теперь, когда сама база опубликована и интерфейс работает корректно, можно запрашивать данные конкретного объекта метаданных, для примера возьмем справочник.
http://<ИмяСервера>/<ИмяБазы>/odata/standard.odata/Catalog_<ИмяСправочника>
При запросе можно использовать следующие параметры:
select – в этом параметре указываем нужные нам поля;
format – задаём формат, в котором мы хотим получить ответ (XML или JSON), по умолчанию XML
odata – если нам в ответе не нужно описание метаданных, то пишем “odata=nometadata”
filter – тут указываем отборы.
Как я и писал выше, мы можем получить ответ в двух форматах XML или JSON, по умолчанию используется XML. Для того чтобы получить данные в формате JSON нужно к URL адресу добавить “?$format=application/json”.
http://<ИмяСервера>/<ИмяБазы>/odata/standard.odata/Catalog_<ИмяСправочника>?$format=application/json
В основном нам нужно получать конкретный элемент справочника, а не все его записи. Для этого используем волшебное слово “filter”.
http://<ИмяСервера>/<ИмяБазы>/odata/standard.odata/Catalog_<ИмяСправочника>?$format=application/json&$filter=Ref_Key eq guid’УИД’
Если вы обратили внимание, в URL-адресе указано два параметра $format и $filter, располагаться они могут в любом порядке, главное чтобы перед первым параметром был знак “?“, а перед вторым “&“. Логика тут такая, мы указываем адрес справочника в первой части, а параметры во второй. Эти части разделяются знаком “?“, а вот сами параметры между собой разделяются знаком “&“. Если изобразить схематически, то выглядит это так
АдресТаблицы?$Параметр1=ЗначениеПараметра1&$Параметр2=ЗначениеПараметра2
Вы должны авторизоваться чтобы опубликовать комментарий.