Обработки в 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-сервис

См. также

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

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

02.07.2024    2359    vkrivov@yandex.ru    8    

17

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

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

17.06.2024    3820    bayselonarrend    2    

60

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

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

20.05.2024    2428    bayselonarrend    18    

70

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

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

25.03.2024    2039    bayselonarrend    3    

41

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

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

17.01.2024    3922    kamisov    19    

62

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

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

21.11.2023    3729    NikitaIvanchenko    16    

48

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

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

31.07.2023    2339    ahyahy    8    

32

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

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    4594    ardn    3    

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