Skip to main content
В расширение встроена внешняя компонента OData4Native, написанная на Rust (Native API). Она выполняет самые нагруженные части работы сервиса быстрее, чем код на встроенном языке. При этом её результат побайтно совпадает с результатом встроенного языка: у каждой части есть общая с языком 1С эталонная выборка примеров. Компонента уже упакована в общий макет расширения. Устанавливать Rust или что-то ещё для работы не нужно.

Что делает компонента

У переключателей три режима:
  • BSL — работает только встроенный язык.
  • Компонента — работает компонента. При любом сбое (исключение, паника, неизвестный тип) ответ строится на языке 1С, а в журнал регистрации пишется событие OData4.Компонента с уровнем «Ошибка». Клиент сбоя не замечает.
  • Сверка — работают оба движка, клиент получает ответ языка 1С. Каждое расхождение пишется в журнал регистрации: длины, SHA-256 и место первого различия. Режим нужен, чтобы проверить компоненту на своей базе перед включением. Он вдвое нагружает сервер, поэтому в работе его не держат.
Свойства-хранилища, описания типов и точки маршрута бизнес-процессов компонента не выдаёт. Ответ, в котором они есть, целиком строится на языке 1С.

Выигрыш

Замеры на базе со 100 тыс. документов (1 млн строк табличной части) и около 1 млн записей в регистрах, файловая база, Apache на той же машине: Разбор тел ускоряет только большие пакеты multipart/mixed: пакет из 1000 операций разбирается за 36 мс вместо 120 мс. Вывод $metadata компонентой занимает около 0,46 с вместо 0,75 с на первом запросе. Словарь типов, перечислений и смещений пояса базы компонента строит один раз на процесс веб-сервера, около 1,4 с.

Требования

  • Расширение без безопасного режима. В безопасном режиме платформа запрещает подключать внешние компоненты. Тогда поля режимов на вкладке «Движки» недоступны и всё выполняет встроенный язык: сервис работает, только медленнее. Снять флажок «Безопасный режим» можно в списке расширений конфигурации (подробнее — в разделе Установка).
  • Платформы: Windows x86 и x64, Linux x86 и x64 (glibc 2.17 и новее).
  • Состояние компоненты (подключена или нет, причина) показано на вкладке «Движки».
Вкладка «Движки»: режимы выдачи и разбора и состояние компоненты

Вкладка «Движки»: режимы выдачи и разбора и состояние компоненты

Сборка из исходников

Исходники лежат в каталоге native репозитория:
  • odata4_core — разбор параметров, выдача, тела и CSDL, без зависимостей от 1С;
  • odata4_addin — обёртка Native API.
Готовый макет в репозитории уже собран. Пересобирать его нужно, только если вы меняете компоненту. Что нужно для сборки:
  • Rust 1.87 и новее;
  • для Windows x86 — mingw-w64;
  • для Linux — Zig и cargo-zigbuild.
Скрипт кладёт ZIP с библиотеками и manifest.xml в src/cfe/CommonTemplates/OData4_Компонента/Ext/Template.bin. Цели, для которых нет инструментов, он печатает как SKIP и не включает в манифест. После сборки загрузите расширение из src/cfe заново.