Обработки в http-сервисах OneScript

03.06.18

Разработка - OneScript

В статье описана библиотека, реализующая механизм обработок в http-сервисах OneScript.

Введение

Механизм обработок в платформе 1С:Предприятие предоставляет возможность создания в прикладных решениях объектов пользовательских типов.  Фактически, обработку можно представить как тип (класс), экземпляры которого можно создавать и использовать. Поскольку , я решил попробовать реализовать данный механизм для http-сервисов OneScript.

Результаты реализации представлены на ваш суд - ниже.

Описание

Библиотека входит в набор библиотек, расширяющих стандартные возможности http-сервисов OneScript и фактически является внешней компонентой. Аналогично платформе 1С:Предприятие, библиотека реализует глобальную коллекцию Обработки. Элементы коллекции представляют собой экземпляры модулей менеджера соответствующих обработок, которые могут содержать пользовательские статические методы.

Отличия от 1С:Предприятие

В целом, поведение объектов не отличается от поведения объектов в платформе 1С:Предприятие, однако имеется несколько отличий:

Реквизиты обработки реализуются переменными с модификатором Экспорт.

Стандартная функция платформы ПолучитьФорму, менеджера обработки не реализована.

Стандартная функция платформы ПолучитьМакет, менеджера обработки поддерживает макеты только нижеследующих типов: Текстовый документ, HTML документ и Двоичные данные.

Возможна загрузка внешних библиотек, созданных по технологии внешних компонент OneScript в качестве обработок.

Обработки на встроенном языке

Как и в платформе 1С:Предприятие, обработка на встроенном языке обязательно состоит из двух текстовых файлов с расширением .os. Первый файл – представляет собой модуль менеджера обработки, второй – модуль объекта обработки. Имена файлов должны иметь нижеследующую схему именования:

ИмяОбработки.МодульМенеджера.os, ИмяОбработки.МодульОбъекта.os, где ИмяОбработки – имя обработки, которое будет доступно из среды выполнения, МодульОбъекта, МодульМенеджера – модификаторы, идентифицирующие тип модуля.

Все обработки должны быть расположены в одной папке, которая должна быть расположена в папке Вашего web-приложения.

Внешние компоненты как обработки

Настоящая библиотека позволяет использовать внешние библиотеки, созданные по технологии внешних компонент OneScript в качестве обработок при соблюдении нижеследующих условий:

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

Подключение

Подключение библиотеки

Для подключения библиотеки необходимо загрузить соответствующие библиотеки и заменить файлы стандартной поставки OneScript, которые расположены в папки Bin, вашего web-приложения.

Для подключения библиотеки, необходимо внести нижеследующие записи в раздел appSettings файла web.config

 

   

<add key="DataProcessors" value="attachAssembly" />
<add key="dataProcessorsPath" value="~/DataProcessors/" />
<add key="propertiesInjector;DataProcessors;OneScript.HTTPService.DataProcessors" value="" />

 

Первый ключ подключает библиотеку к среде выполнения. Второй – определяет папку, где будут находиться модули обработок на встроенном языке. Третий – подключает сборку как загрузчик свойств (описание методики расширенной загрузки можно посмотреть здесь).

Подключение обработки на встроенном языке

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

Подключение внешней компоненты как обработки

Файл сборки (dll) внешней компоненты должен располагаться в папке Bin, Вашего web-приложения.

Сборка должна быть подключена к среде выполнения ключом:

<add key="ИмяСборки" value="attachAssembly" />

Подключение обработки выполняется добавлением нижеследующего ключа:

<add key="attachAsDataProcessor;ИмяСборки;ИмяКлассаМенеджераОбработки" value="ПереопределенноеИмяОбработки" />

Где: attachDataProcessor – признак того, что мы подключаем обработку, ИмяСборки – имя сборки обработки, ИмяКлассаМенеджераОбработки – имя класса, реализующего модуль менеджера обработки, ПереопределенноеИмяОбработки – используется, если мы хотим присвоить обработке имя, отличное от имени класса менеджера обработки.

Использование

Пример кода представлен ниже:

Модуль менеджера:

 
// Файл: СложитьДваЧисла.МодульМенеджера.os

Функция СтатическаяФункция(Число1, Число2) Экспорт

   Возврат Число1 + Число2;

КонецФункции

 

 

Модуль объекта:

 
// Файл: СложитьДваЧисла.МодульОбъекта.os

// Реквизиты и переменные
Перем Число1 Экспорт;
Перем Число2 Экспорт;

Функция Сложить(Число3) Экспорт

    Возврат Число1 + Число2 + Число3;

КонецФункции

Число1 = 0;
Число2 = 0;

 

Пример кода:

 
// Вызов статических методов

СуммаЧисел = Обработки.СложитьДваЧисла.СтатическаяФункция(3,5);

// СуммаЧисел = 8

// Использование объекта

МояОбработка = Обработки.СложитьДваЧисла.Создать();

МояОбработка.Число1 = 10;

МояОбработка.Число2 = 20;

СуммаЧисел = МояОбработка.Сложить(30);

// СуммаЧисел = 60



 

Заключение

Надеюсь, что данный механизм окажется полезным в Ваших разработках на OneScript и создании переносимого кода, между OneScript и 1С:Предприятие.

OneScript web http-сервис

См. также

OneScript Программист Бесплатно (free)

Отгремел Infostart Tech Event 2024, топовое событие в мире 1С-разработки, традиционно проходящее в Санкт-Петербурге. Ваш покорный слуга в этот раз отмечал там 10-летний юбилей проекта OneScript. Отмечание проводилось в форме игры-соревнования по забегу роботов в лабиринте. Участники пытались написать алгоритм движения робота на языке 1С и сделать это быстрее других. О том, как это было – под катом.

28.10.2024    1411    Evil Beaver    11    

24

OneScript Программист Бесплатно (free)

OneScript – это скриптовый движок для автоматизации всего и вся. О том, как OneScript помогает в разработке скриптов на языке 1С, пойдет речь в статье.

10.10.2024    2389    ardn    1    

7

Инструментарий разработчика OneScript Программист Руководитель проекта Бесплатно (free)

Все мы хотя бы раз работали с конструктором запросов. Результатом его работы является синтаксически верный запрос, оформленный по некоторому стандарту. Нравится - не нравится, а привыкаешь быстро, и на запрос, написанный руками, уже не хочется смотреть... А почему бы не попробовать сделать то же самое с исходным кодом 1С? Ну я и попробовал...

23.09.2024    617    0    stopa85    4    

5

Групповая разработка (Git, хранилище) OneScript Программист Платформа 1С v8.3 Бесплатно (free)

Скрипт для работы с SonarQube и локальным репозиторием Git.<br> Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.<br> https://github.com/vkrivov/go/

02.07.2024    3561    vkrivov@yandex.ru    8    

19

DevOps и автоматизация разработки OneScript Системный администратор Программист Стажер Бесплатно (free)

Рассмотрим создание самоформирующейся документации через комментарии и соглашения: как это сделать и зачем, с описанием полного цикла от исходников конфигурации до странички в интернете

17.06.2024    5267    bayselonarrend    5    

61

OneScript Программист Стажер Бесплатно (free)

Поговорим про меню, спиннеры, прогресс-бары и прочие свистелки для CLI приложений на OneScript

20.05.2024    2914    bayselonarrend    18    

70

Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    2668    bayselonarrend    3    

42

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    5496    kamisov    23    

65
Оставьте свое сообщение