Настройка Open Data Protocol (OData) и нюансы работы

28.07.23

Интеграция - WEB-интеграция

Настройка Open Data Protocol (OData): изменение и удаление данных.

Скачать исходный код

Наименование Файл Версия Размер
НастройкаИнтерфейса_oData
.epf 9,94Kb
15
.epf 1.0.0.3 9,94Kb 15 Скачать

Описание

Расскажу о некоторых нюансах работы с протоколом Open Data Protocol (OData). --> Самое интересное в конце статьи.

Чтобы начать работать с OData в 1С, нужно:

1) Установить на сервер 1С веб-сервер, любой (Apache, IIS, Ngnix).

2) При установке программы 1С на сервере 1С нужно также установить модули расширения веб-сервера.

3) Опубликовать базу на веб сервере, в Конфигураторе - Администрирование - Публикация на веб сервере

4) Запустить обработку, прикрепил ниже (скачать), и включить объекты Метаданных базы, с какими можно работать через OData, в состав объектов Стандартного Интерфейса OData.

5) в Конфигураторе - создать Роль для настройки Прав Пользователей, если такой нет в базе.

6) Назначить Права Пользователей, в Конфигураторе - Администрирование - Пользователи

5) Далее, выполнять запросы к объектам базы 1С. Это можно делать в строке браузера, а можно из кода 1С (и любых других языков программирования, поддерживающих OData )

 

Если для работы с HTTP-сервисом программисту 1С нужно придумывать архитектуру REST API, т.е. какие запросы возможны, то при работе с OData эта REST API уже реализована на уровне Платформы 1С. 

 

Нюансы работы с OData

 

Как выполнять запросы на получение данных рассказано здесь.

Расскажу по обновление и удаление данных в 1С, с помощью OData.

Если сравнивать HTTP-сервис и OData, то код 1С написания HTTP запроса очень похож.

При изменении и удалении для OData нужно указывать заголовки:

ЗаголовокHTTP = Новый Соответствие(); 	
ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
ЗаголовокHTTP.Вставить("If-Match", ВерсияДанных);
ЗаголовокHTTP.Вставить("1C_OData-DataLoadMode", Истина);

где для заголовка "If-Match" указывается версия данных DataVersion объекта изменения или удаления.

А далее

HTTPЗапрос = Новый HTTPЗапрос(Адрес, ЗаголовокHTTP); 
ОтветHTTP = Соединение.Удалить(HTTPЗапрос);  // удаление данных, DELETE
// или
ОтветHTTP = Соединение.Изменить(HTTPЗапрос);    // обновление данных PATCH

Зачем нужно указывать залоговок "If-Match"?

Ответ: При чтении данных вы запрашиваете с сервера 1С нужные вам данные и версию данных, DataVersion.

А при записи данных, нужно проверить, что никто другой не изменил данные, пока вы смотрели на результат.

Для этого и используют Версию данных, DataVersion. Если кто-то другой изменит данные, DataVersion изменится.

Поэтому, когда мы напишем запрос на изменение или удаление данных, при его выполнении, происходит сверка DataVersion которое вы передаёте в заголовке, с тем значением, которое в базе 1С.

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

И можно записать изменения или удаление в базу.

Зачем нужно указывать залоговок "1C_OData-DataLoadMode"?

Ответ: Если необходимо эмулировать запись, выполняемую во время работы механизма обмена данными

(свойство ОбменДанными.Загрузка = Истина)

 

Когда вы работаете в программе 1С Предприятие в режиме: Тонкого, Толстого или Веб-клиента, программа накладывает Объектные блокировки:

Пессимистическая - когда вы начинаете изменять, например Документ или Справочник, вверху формы вы можете заметить появление звёздочки (Модифицированность = Истина)

Оптимистическая - при записи данных в базу, платформой происходит сверка DataVersion данных,  которые вы помещаете в базу с версией данных, которые уже есть в базе.

 

Обратите внимание

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

Т.е. следить за версией данных, DataVersion, которые вы изменяете или удаляете.

 

При удалении данных с помощью OData не поддерживается ссылочная целостность.

Например, есть Справочник Номенклатура и для каждой номенклатуры указывается Единица измерения.

При удалении используемой Единицы измерения, в Справочнике Номенклатура появятся битые ссылки (что очень плохо).

 

 

 

 

 

 

 

 

 

 

 

Если вы назначили Пользователю права в Роли, где возможно удаление данных. При помощи OData данные удаляются физически из базы, т.е. не ставится Пометка Удаления = Истина у записи. Поэтому не создавайте Ролей с возможностью удаления данных из базы, а давайте возможность изменять данные. Например, чтобы Пользователь с помощью OData выставлял DeletionMark = true, что эквивалентно: ПометкаУдаления = Истина.

DeletionMark = true        // это английский синтаксис

ПометкаУдаления = Истина  //   это русский синтаксис

 

Тестировал обработку на платформах 1С:Предприятие 8.3 (8.3.12.1685), (8.3.20.1674).

odata удалить delete. update apache iis web изменить настройка включить обновить оpen data protocol пример example редактировать ссылка битая

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15921    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17872    6    15    

13

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88910    163    216    

318

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25866    9    0    

7

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16473    42    49    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ImHunter 315 28.02.22 07:23 Сейчас в теме
Как-то ожидалось больше нюансов...
Обработка настройки состава объектов, доступных через oData, давно уже в составе БСП.
+
2. Vovan58 65 21.10.22 14:34 Сейчас в теме
Вот один нюанс есть - nginx - катит только как кеширующий, опубликовать 1С на нем не представляется возможным.
А вот и второй : если не указать 1C_OData-DataLoadMode то и вполне огребете код состояния 500
puts; +1
Оставьте свое сообщение