mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-06-20 09:19:27 +02:00
Доработка документации и списка релизов
This commit is contained in:
Vendored
-112
@@ -1,112 +0,0 @@
|
||||
---
|
||||
id: Janx
|
||||
sidebar_class_name: Janx
|
||||
keywords: [1C, 1C, 1C:Enterprise, 1C:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, Janx]
|
||||
---
|
||||
|
||||
<img src={require('../../static/img/APIs/Janx.png').default} width='64px' />
|
||||
|
||||
# Janx
|
||||
|
||||
import LibraryIntro from '@site/src/components/LibraryIntro';
|
||||
|
||||
<LibraryIntro module="OPI_Janx" cli="janx" use="oint/formats/janx" lang="en"/>
|
||||
|
||||
This section is dedicated to the library for working with Janx format in 1C:Enterprise, OneScript and CLI. This page describes the main capabilities and usage examples
|
||||
|
||||
## Format Description
|
||||
|
||||
Janx-1 is a binary data serialization format optimized for efficient storage and transmission of structured data with binary data support.
|
||||
|
||||
### Format Structure
|
||||
|
||||
Janx-1 format has the following structure:
|
||||
- **Version** (u16 BE) — format version
|
||||
- **JSON Length** (u32 BE) — size of the JSON part in bytes
|
||||
- **Number of Markers** (u32 BE) — number of binary data markers
|
||||
- **JSON** — structured data in JSON format
|
||||
- **Appendix** — binary data referenced by markers in JSON
|
||||
|
||||
### Format Features
|
||||
|
||||
- **Binary data support** — binary data is stored separately from JSON and replaced with markers
|
||||
- **Efficient storage** — binary data is not encoded in Base64, which saves space
|
||||
- **Collection support** — works with structures, maps, arrays and nested collections
|
||||
- **Big Endian byte order** — ensures cross-platform compatibility
|
||||
|
||||
## Usage
|
||||
|
||||
### Data Serialization
|
||||
|
||||
To convert a data collection to Janx format, use the `SerializeData` function:
|
||||
|
||||
```bsl
|
||||
Data = New Structure;
|
||||
Data.Insert("Name", "Test document");
|
||||
Data.Insert("Number", 12345);
|
||||
Data.Insert("File", GetBinaryDataFromFile("document.pdf"));
|
||||
|
||||
SerializedData = OPI_Janx.SerializeData(Data);
|
||||
// SerializedData — binary data in Janx-1 format
|
||||
```
|
||||
|
||||
The function accepts any collection (Structure, Map, Array) and returns binary data in Janx-1 format.
|
||||
|
||||
### Data Deserialization
|
||||
|
||||
To restore data from Janx format, use the `DeserializeData` function:
|
||||
|
||||
```bsl
|
||||
RestoredData = OPI_Janx.DeserializeData(SerializedData);
|
||||
// RestoredData — original collection with restored binary data
|
||||
```
|
||||
|
||||
The function accepts binary data in Janx-1 format and returns a deserialized collection.
|
||||
|
||||
### Working with Nested Structures
|
||||
|
||||
Janx format supports serialization of complex nested structures:
|
||||
|
||||
```bsl
|
||||
Document = New Structure;
|
||||
Document.Insert("Title", "Report");
|
||||
Document.Insert("Date", CurrentDate());
|
||||
|
||||
Attachments = New Array;
|
||||
Attachments.Add(GetBinaryDataFromFile("file1.pdf"));
|
||||
Attachments.Add(GetBinaryDataFromFile("file2.jpg"));
|
||||
|
||||
Document.Insert("Attachments", Attachments);
|
||||
|
||||
SerializedData = OPI_Janx.SerializeData(Document);
|
||||
RestoredData = OPI_Janx.DeserializeData(SerializedData);
|
||||
```
|
||||
|
||||
### Supported Data Types
|
||||
|
||||
Janx format supports the following data types:
|
||||
|
||||
- **Primitive types**: String, Number, Boolean, Date, Undefined
|
||||
- **Collections**: Structure, Map, Array
|
||||
- **Binary data**: BinaryData
|
||||
|
||||
During serialization:
|
||||
- Primitive types are saved in the JSON part
|
||||
- Collections are processed recursively
|
||||
- BinaryData is moved to the appendix and replaced with markers
|
||||
|
||||
## Usage Benefits
|
||||
|
||||
1. **Compactness** — binary data is not encoded in Base64, which saves ~33% of space
|
||||
2. **Performance** — fast serialization and deserialization
|
||||
3. **Structured** — JSON part is easy to read and debug
|
||||
4. **Universality** — works with any nested collections
|
||||
5. **Type safety** — preserves data types during serialization/deserialization
|
||||
|
||||
## Application Areas
|
||||
|
||||
- Data exchange between systems
|
||||
- Saving complex structures in databases
|
||||
- Caching data with binary components
|
||||
- Data transmission via HTTP/REST API
|
||||
- Archiving structured data
|
||||
Vendored
-79
@@ -1,79 +0,0 @@
|
||||
---
|
||||
id: Lua
|
||||
sidebar_class_name: Lua
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, Lua]
|
||||
---
|
||||
|
||||
<img src={require('../../static/img/APIs/Lua.png').default} width='64px' />
|
||||
|
||||
# Lua
|
||||
|
||||
import LibraryIntro from '@site/src/components/LibraryIntro';
|
||||
|
||||
<LibraryIntro module="OPI_Lua" cli="lua" use="oint/api/lua" lang="en"/>
|
||||
|
||||
This section is dedicated to the library for working with Lua in 1C:Enterprise and OneScript. This page describes all the actions necessary to get started
|
||||
|
||||
## Getting Started
|
||||
|
||||
The library provides the ability to execute Lua scripts directly from 1C:Enterprise and OneScript using external components.
|
||||
|
||||
### Supported Versions
|
||||
|
||||
The library supports two versions of Lua:
|
||||
|
||||
- **Lua54** — stable version of Lua 5.4
|
||||
- **LuaJIT** — Lua JIT compiler with enhanced performance
|
||||
|
||||
### Creating a Virtual Machine
|
||||
|
||||
To execute Lua code, you need to create a virtual machine (VM):
|
||||
|
||||
```bsl
|
||||
// Creating Lua 5.4 VM
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
// Creating LuaJIT VM
|
||||
VM = OPI_Lua.СоздатьVM("LuaJIT");
|
||||
|
||||
// Creating VM with logging settings
|
||||
НастройкиЛогирования = Новый Структура;
|
||||
НастройкиЛогирования.Вставить("level", "debug");
|
||||
НастройкиЛогирования.Вставить("path", "C:\logs\lua.log");
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54", НастройкиЛогирования);
|
||||
```
|
||||
|
||||
### Executing Code
|
||||
|
||||
The library supports two methods of executing Lua code:
|
||||
|
||||
#### Execution from String
|
||||
|
||||
```bsl
|
||||
КодLua = "return 2 + 2";
|
||||
Результат = OPI_Lua.ВыполнитьКодИзСтроки(VM, КодLua);
|
||||
// Result = 4
|
||||
```
|
||||
|
||||
#### Execution from File
|
||||
|
||||
```bsl
|
||||
ПутьКФайлу = "C:\scripts\script.lua";
|
||||
Результат = OPI_Lua.ВыполнитьКодИзФайла(VM, ПутьКФайлу);
|
||||
```
|
||||
|
||||
:::important
|
||||
If an error occurs during Lua code execution, an exception will be raised. It is recommended to use the `Try...Except` construct to handle possible errors
|
||||
:::
|
||||
|
||||
### Simplified Usage
|
||||
|
||||
Instead of creating a VM object, you can pass the Lua version directly to the execution functions:
|
||||
|
||||
```bsl
|
||||
Результат = OPI_Lua.ВыполнитьКодИзСтроки("Lua54", "return 'Hello from Lua'");
|
||||
Результат = OPI_Lua.ВыполнитьКодИзФайла("LuaJIT", "C:\scripts\script.lua");
|
||||
```
|
||||
|
||||
In this case, the VM will be created automatically.
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
---
|
||||
id: MessagePack
|
||||
sidebar_class_name: MessagePack
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, MessagePack]
|
||||
---
|
||||
|
||||
<img src={require('../../static/img/APIs/MessagePack.png').default} width='64px' />
|
||||
|
||||
# MessagePack
|
||||
|
||||
import LibraryIntro from '@site/src/components/LibraryIntro';
|
||||
|
||||
<LibraryIntro module="OPI_MessagePack" cli="msgpack" use="oint/formats/msgpack" lang="en"/>
|
||||
|
||||
This section is dedicated to the library for working with MessagePack format in 1C:Enterprise, OneScript, and CLI. This page describes all the actions necessary for a complete start of work
|
||||
|
||||
## Getting Started
|
||||
|
||||
MessagePack is an efficient binary data serialization format. It allows data exchange between different programming languages, like JSON, but takes up less space and works faster.
|
||||
|
||||
The library provides two main functions for working with the format:
|
||||
|
||||
### Data Serialization
|
||||
|
||||
To convert data to MessagePack format, use the `СериализоватьДанные` function:
|
||||
|
||||
```bsl
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("имя", "Иван");
|
||||
Данные.Вставить("возраст", 30);
|
||||
|
||||
ДвоичныеДанные = OPI_MessagePack.СериализоватьДанные(Данные);
|
||||
```
|
||||
|
||||
### Data Deserialization
|
||||
|
||||
To restore data from MessagePack format, use the `ДесериализоватьДанные` function:
|
||||
|
||||
```bsl
|
||||
ВосстановленныеДанные = OPI_MessagePack.ДесериализоватьДанные(ДвоичныеДанные);
|
||||
```
|
||||
|
||||
## Supported Data Types
|
||||
|
||||
The library supports serialization and deserialization of the following data types:
|
||||
|
||||
- **Undefined** — converts to MessagePack nil format
|
||||
- **Boolean** — logical values True/False
|
||||
- **String** — text data in UTF-8 encoding
|
||||
- **BinaryData** — binary data
|
||||
- **Array** — ordered collections of elements
|
||||
- **Structure/Map** — key-value pair collections (keys are converted to strings)
|
||||
- **Number** — integer and floating-point numbers (optimal storage format is automatically determined)
|
||||
|
||||
:::note
|
||||
When serializing structure and map keys, they are automatically converted to string format
|
||||
:::
|
||||
Vendored
-112
@@ -1,112 +0,0 @@
|
||||
---
|
||||
id: Janx
|
||||
sidebar_class_name: Janx
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, Janx]
|
||||
---
|
||||
|
||||
<img src={require('../../static/img/APIs/Janx.png').default} width='64px' />
|
||||
|
||||
# Janx
|
||||
|
||||
import LibraryIntro from '@site/src/components/LibraryIntro';
|
||||
|
||||
<LibraryIntro module="OPI_Janx" cli="janx" use="oint/formats/janx" lang="ru"/>
|
||||
|
||||
Этот раздел посвящен библиотеке для работы с форматом Janx в 1С:Предприятие, OneScript и CLI. На данной странице описаны основные возможности и примеры использования
|
||||
|
||||
## Описание формата
|
||||
|
||||
Janx-1 — это бинарный формат сериализации данных, оптимизированный для эффективного хранения и передачи структурированных данных с поддержкой двоичных данных.
|
||||
|
||||
### Структура формата
|
||||
|
||||
Формат Janx-1 имеет следующую структуру:
|
||||
- **Версия** (u16 BE) — версия формата
|
||||
- **Длина JSON** (u32 BE) — размер JSON части в байтах
|
||||
- **Число маркеров** (u32 BE) — количество маркеров двоичных данных
|
||||
- **JSON** — структурированные данные в формате JSON
|
||||
- **Приложение** — двоичные данные, на которые ссылаются маркеры в JSON
|
||||
|
||||
### Особенности формата
|
||||
|
||||
- **Поддержка двоичных данных** — двоичные данные хранятся отдельно от JSON и замещаются маркерами
|
||||
- **Эффективное хранение** — двоичные данные не кодируются в Base64, что экономит место
|
||||
- **Поддержка коллекций** — работает со структурами, соответствиями, массивами и вложенными коллекциями
|
||||
- **Порядок байтов Big Endian** — обеспечивает кроссплатформенность
|
||||
|
||||
## Использование
|
||||
|
||||
### Сериализация данных
|
||||
|
||||
Для преобразования коллекции данных в формат Janx используйте функцию `СериализоватьДанные`:
|
||||
|
||||
```bsl
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("Название", "Тестовый документ");
|
||||
Данные.Вставить("Номер", 12345);
|
||||
Данные.Вставить("Файл", ПолучитьДвоичныеДанныеИзФайла("документ.pdf"));
|
||||
|
||||
СериализованныеДанные = OPI_Janx.СериализоватьДанные(Данные);
|
||||
// СериализованныеДанные — двоичные данные в формате Janx-1
|
||||
```
|
||||
|
||||
Функция принимает любую коллекцию (Структура, Соответствие, Массив) и возвращает двоичные данные в формате Janx-1.
|
||||
|
||||
### Десериализация данных
|
||||
|
||||
Для восстановления данных из формата Janx используйте функцию `ДесериализоватьДанные`:
|
||||
|
||||
```bsl
|
||||
ВосстановленныеДанные = OPI_Janx.ДесериализоватьДанные(СериализованныеДанные);
|
||||
// ВосстановленныеДанные — исходная коллекция с восстановленными двоичными данными
|
||||
```
|
||||
|
||||
Функция принимает двоичные данные в формате Janx-1 и возвращает десериализованную коллекцию.
|
||||
|
||||
### Работа с вложенными структурами
|
||||
|
||||
Формат Janx поддерживает сериализацию сложных вложенных структур:
|
||||
|
||||
```bsl
|
||||
Документ = Новый Структура;
|
||||
Документ.Вставить("Заголовок", "Отчет");
|
||||
Документ.Вставить("Дата", ТекущаяДата());
|
||||
|
||||
Вложения = Новый Массив;
|
||||
Вложения.Добавить(ПолучитьДвоичныеДанныеИзФайла("файл1.pdf"));
|
||||
Вложения.Добавить(ПолучитьДвоичныеДанныеИзФайла("файл2.jpg"));
|
||||
|
||||
Документ.Вставить("Вложения", Вложения);
|
||||
|
||||
СериализованныеДанные = OPI_Janx.СериализоватьДанные(Документ);
|
||||
ВосстановленныеДанные = OPI_Janx.ДесериализоватьДанные(СериализованныеДанные);
|
||||
```
|
||||
|
||||
### Поддерживаемые типы данных
|
||||
|
||||
Формат Janx поддерживает следующие типы данных:
|
||||
|
||||
- **Примитивные типы**: Строка, Число, Булево, Дата, Неопределено
|
||||
- **Коллекции**: Структура, Соответствие, Массив
|
||||
- **Двоичные данные**: ДвоичныеДанные
|
||||
|
||||
При сериализации:
|
||||
- Примитивные типы сохраняются в JSON части
|
||||
- Коллекции обрабатываются рекурсивно
|
||||
- ДвоичныеДанные выносятся в приложение и замещаются маркерами
|
||||
|
||||
## Преимущества использования
|
||||
|
||||
1. **Компактность** — двоичные данные не кодируются в Base64, что экономит ~33% места
|
||||
2. **Производительность** — быстрая сериализация и десериализация
|
||||
3. **Структурированность** — JSON часть легко читается и отлаживается
|
||||
4. **Универсальность** — работает с любыми вложенными коллекциями
|
||||
5. **Типизация** — сохраняет типы данных при сериализации/десериализации
|
||||
|
||||
## Области применения
|
||||
|
||||
- Обмен данными между системами
|
||||
- Сохранение сложных структур в базах данных
|
||||
- Кэширование данных с двоичными компонентами
|
||||
- Передача данных через HTTP/REST API
|
||||
- Архивирование структурированных данных
|
||||
Vendored
-79
@@ -1,79 +0,0 @@
|
||||
---
|
||||
id: Lua
|
||||
sidebar_class_name: Lua
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, Lua]
|
||||
---
|
||||
|
||||
<img src={require('../../static/img/APIs/Lua.png').default} width='64px' />
|
||||
|
||||
# Lua
|
||||
|
||||
import LibraryIntro from '@site/src/components/LibraryIntro';
|
||||
|
||||
<LibraryIntro module="OPI_Lua" cli="lua" use="oint/api/lua" lang="ru"/>
|
||||
|
||||
Этот раздел посвящен библиотеке для работы с Lua в 1С:Предприятие и OneScript. На данной странице описаны все действия, необходимые для полноценного начала работы
|
||||
|
||||
## Начало работы
|
||||
|
||||
Библиотека предоставляет возможность выполнения Lua скриптов непосредственно из 1С:Предприятие и OneScript при помощи внешних компонент.
|
||||
|
||||
### Поддерживаемые версии
|
||||
|
||||
Библиотека поддерживает две версии Lua:
|
||||
|
||||
- **Lua54** — стабильная версия Lua 5.4
|
||||
- **LuaJIT** — JIT-компилятор Lua с повышенной производительностью
|
||||
|
||||
### Создание виртуальной машины
|
||||
|
||||
Для выполнения Lua кода необходимо создать виртуальную машину (VM):
|
||||
|
||||
```bsl
|
||||
// Создание VM Lua 5.4
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
// Создание VM LuaJIT
|
||||
VM = OPI_Lua.СоздатьVM("LuaJIT");
|
||||
|
||||
// Создание VM с настройками логирования
|
||||
НастройкиЛогирования = Новый Структура;
|
||||
НастройкиЛогирования.Вставить("level", "debug");
|
||||
НастройкиЛогирования.Вставить("path", "C:\logs\lua.log");
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54", НастройкиЛогирования);
|
||||
```
|
||||
|
||||
### Выполнение кода
|
||||
|
||||
Библиотека поддерживает два способа выполнения Lua кода:
|
||||
|
||||
#### Выполнение из строки
|
||||
|
||||
```bsl
|
||||
КодLua = "return 2 + 2";
|
||||
Результат = OPI_Lua.ВыполнитьКодИзСтроки(VM, КодLua);
|
||||
// Результат = 4
|
||||
```
|
||||
|
||||
#### Выполнение из файла
|
||||
|
||||
```bsl
|
||||
ПутьКФайлу = "C:\scripts\script.lua";
|
||||
Результат = OPI_Lua.ВыполнитьКодИзФайла(VM, ПутьКФайлу);
|
||||
```
|
||||
|
||||
:::important
|
||||
При возникновении ошибки выполнения Lua кода будет вызвано исключение. Рекомендуется использовать конструкцию `Попытка...Исключение` для обработки возможных ошибок
|
||||
:::
|
||||
|
||||
### Упрощенное использование
|
||||
|
||||
Вместо создания объекта VM можно передавать версию Lua напрямую в функции выполнения:
|
||||
|
||||
```bsl
|
||||
Результат = OPI_Lua.ВыполнитьКодИзСтроки("Lua54", "return 'Hello from Lua'");
|
||||
Результат = OPI_Lua.ВыполнитьКодИзФайла("LuaJIT", "C:\scripts\script.lua");
|
||||
```
|
||||
|
||||
В этом случае VM будет создана автоматически.
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
---
|
||||
id: MessagePack
|
||||
sidebar_class_name: MessagePack
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, MessagePack]
|
||||
---
|
||||
|
||||
<img src={require('../../static/img/APIs/MessagePack.png').default} width='64px' />
|
||||
|
||||
# MessagePack
|
||||
|
||||
import LibraryIntro from '@site/src/components/LibraryIntro';
|
||||
|
||||
<LibraryIntro module="OPI_MessagePack" cli="msgpack" use="oint/formats/msgpack" lang="ru"/>
|
||||
|
||||
Этот раздел посвящен библиотеке для работы с форматом MessagePack в 1С:Предприятие, OneScript и CLI. На данной странице описаны все действия, необходимые для полноценного начала работы
|
||||
|
||||
## Начало работы
|
||||
|
||||
MessagePack — это эффективный формат бинарной сериализации данных. Он позволяет обмениваться данными между различными языками программирования, как JSON, но при этом занимает меньше места и работает быстрее.
|
||||
|
||||
Библиотека предоставляет две основные функции для работы с форматом:
|
||||
|
||||
### Сериализация данных
|
||||
|
||||
Для преобразования данных в формат MessagePack используйте функцию `СериализоватьДанные`:
|
||||
|
||||
```bsl
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("имя", "Иван");
|
||||
Данные.Вставить("возраст", 30);
|
||||
|
||||
ДвоичныеДанные = OPI_MessagePack.СериализоватьДанные(Данные);
|
||||
```
|
||||
|
||||
### Десериализация данных
|
||||
|
||||
Для восстановления данных из формата MessagePack используйте функцию `ДесериализоватьДанные`:
|
||||
|
||||
```bsl
|
||||
ВосстановленныеДанные = OPI_MessagePack.ДесериализоватьДанные(ДвоичныеДанные);
|
||||
```
|
||||
|
||||
## Поддерживаемые типы данных
|
||||
|
||||
Библиотека поддерживает сериализацию и десериализацию следующих типов данных:
|
||||
|
||||
- **Неопределено** — преобразуется в nil формата MessagePack
|
||||
- **Булево** — логические значения Истина/Ложь
|
||||
- **Строка** — текстовые данные в кодировке UTF-8
|
||||
- **ДвоичныеДанные** — бинарные данные
|
||||
- **Массив** — упорядоченные коллекции элементов
|
||||
- **Структура/Соответствие** — коллекции пар ключ-значение (ключи преобразуются в строки)
|
||||
- **Число** — целые и вещественные числа (автоматически определяется оптимальный формат хранения)
|
||||
|
||||
:::note
|
||||
При сериализации ключей структур и соответствий, они автоматически преобразуются в строковый формат
|
||||
:::
|
||||
+3
-3
@@ -8,13 +8,13 @@ sidebar_position: 6
|
||||
|
||||
## Совместимость
|
||||
|
||||
Все внешние компоненты, добавляемые в ОПИ, собираются под x64 и x32 версии Windows и Linux. Они хранятся в специальных zip-архивах, состоящих из четырех файлов библиотек - по одному для каждой из платформ соответственно. Однако на обеих платформах есть ограничения по совместимости с конкретными версиями ОС и системными библиотеками
|
||||
Все внешние компоненты, добавляемые в ОПИ, собираются под x64 и x32 версии Windows и Linux. Они хранятся в специальных zip-архивах, состоящих из четырех файлов библиотек - по одному для каждой из платформ соответственно. Однако на обеих платформах присутствуют свои ограничения по совместимости с конкретными версиями ОС и системными библиотеками
|
||||
|
||||
### Windows
|
||||
|
||||
Релизные сборки компонент на Windows выполняются современным инструментарием MSVC. При этом в результирующие `.dll` могут попадать ссылки на функции системных библиотек Windows (`kernel32`, `bcrypt`, `ws2_32` и др.), доступные только начиная с **Windows 8** и **Windows Server 2012**. На более старых системах — **Windows 7** и **Windows Server 2008 R2** — компоненты из стандартного релиза ОПИ могут не загружаться или завершаться с ошибкой при обращении к таким функциям
|
||||
Релизные сборки компонент на Windows выполняются актуальным инструментарием MSVC. При этом в результирующие `.dll` могут попадать ссылки на функции системных библиотек Windows (`kernel32`, `bcrypt`, `ws2_32` и др.), доступные только начиная с **Windows 8** и **Windows Server 2012**. На более старых системах компоненты из стандартного релиза ОПИ могут не загружаться или завершаться с ошибкой при обращении к таким функциям
|
||||
|
||||
Для самостоятельной сборки под Windows 7 / Server 2008 R2 в репозитории есть каталог [src/addins/legacy-win7](https://github.com/Bayselonarrend/OpenIntegrations/tree/main/src/addins/legacy-win7) со скриптами `setup-win7-build-env.bat` и `build-win7-package.bat`. Подробности — в [README.md](https://github.com/Bayselonarrend/OpenIntegrations/blob/main/src/addins/legacy-win7/README.md) этого каталога. Сборка использует nightly Rust с целевыми платформами `win7-windows-msvc` и может занимать заметно больше времени, чем стандартная. Готовый zip-архив можно использовать как пакет внешней компоненты или заменить им соответствующий архив из релиза в зависимости от используемой поставки
|
||||
Для самостоятельной сборки компонент под Windows 7 / Server 2008 R2 в репозитории есть каталог [src/addins/legacy-win7](https://github.com/Bayselonarrend/OpenIntegrations/tree/main/src/addins/legacy-win7) со скриптами `setup-win7-build-env.bat` и `build-win7-package.bat`. Сборка использует nightly Rust с целевыми платформами `win7-windows-msvc` и может занимать заметно больше времени, чем стандартная. Готовый zip-архив можно использовать как пакет внешней компоненты или заменить им соответствующий архив из релиза в зависимости от используемой поставки. Подробнее в [README.md](https://github.com/Bayselonarrend/OpenIntegrations/blob/main/src/addins/legacy-win7/README.md) этого каталога
|
||||
|
||||
### Linux
|
||||
|
||||
|
||||
+31
-2
@@ -6,6 +6,36 @@
|
||||
"summary_en": "Methods of working with Lua",
|
||||
"image": "media/Covers/Lua.png",
|
||||
"changes": [
|
||||
{
|
||||
"lib": "Lua",
|
||||
"icon": "media/Lua.png",
|
||||
"description_ru": "Основные методы (6 функций)",
|
||||
"description_en": "Core methods (6 functions)"
|
||||
},
|
||||
{
|
||||
"lib": "Lua",
|
||||
"icon": "media/Lua.png",
|
||||
"description_ru": "Работа со скриптами (3 функции)",
|
||||
"description_en": "Script handling (3 functions)"
|
||||
},
|
||||
{
|
||||
"lib": "Lua",
|
||||
"icon": "media/Lua.png",
|
||||
"description_ru": "Работа со байткодом (5 функций)",
|
||||
"description_en": "Bytecode handling (5 functions)"
|
||||
},
|
||||
{
|
||||
"lib": "Lua",
|
||||
"icon": "media/Lua.png",
|
||||
"description_ru": "Работа с глобальными переменными (2 функции)",
|
||||
"description_en": "Global variable handling (2 functions)"
|
||||
},
|
||||
{
|
||||
"lib": "Lua",
|
||||
"icon": "media/Lua.png",
|
||||
"description_ru": "Управление пакетами (3 функции)",
|
||||
"description_en": "Package management (3 functions)"
|
||||
},
|
||||
{
|
||||
"lib": "MessagePack",
|
||||
"icon": "media/MessagePack.png",
|
||||
@@ -16,7 +46,7 @@
|
||||
"lib": "Janx",
|
||||
"icon": "media/Janx.png",
|
||||
"description_ru": "Добавлена сериализация/десериализация для формата Janx",
|
||||
"description_en": "Added serialization/deserialization for Kanx format"
|
||||
"description_en": "Added serialization/deserialization for Janx format"
|
||||
},
|
||||
{
|
||||
"lib": "MySQL",
|
||||
@@ -35,7 +65,6 @@
|
||||
"ru": "**Некоторые из изменений данного релиза нарушают обратную совместимость!** Обязательно ознакомьтесь с разделом [Об обратной совместимости](https://openintegrations.dev/docs/Start/Backward-compatibility/) перед обновлением",
|
||||
"en": "**Some changes in this release break backward compatibility!** Be sure to review the [Backward Compatibility](https://en.openintegrations.dev/docs/Start/Backward-compatibility/) section before updating."
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"version": "2.1.0",
|
||||
|
||||
+69
-64
@@ -183,31 +183,31 @@
|
||||
|
||||
Процедура Lua_Перезапустить()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(VM, "tmp_pkg", "local M = {} function M.ping() return ""pong"" end return M");
|
||||
OPI_Lua.Перезапустить(VM);
|
||||
|
||||
Результат = OPI_Lua.ПолучитьСписокПакетов(VM);
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(Lua, "tmp_pkg", "local M = {} function M.ping() return ""pong"" end return M"); // SKIP
|
||||
OPI_Lua.Перезапустить(Lua);
|
||||
|
||||
// END
|
||||
|
||||
Результат = OPI_Lua.ПолучитьСписокПакетов(Lua);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "Перезапустить");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ЭтоVM()
|
||||
|
||||
VM54 = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
Результат = OPI_Lua.ЭтоVM(VM54);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ЭтоVM", "Lua54"); // SKIP
|
||||
|
||||
Результат = OPI_Lua.ЭтоVM("not a vm");
|
||||
Результат = OPI_Lua.ЭтоVM(Lua);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ЭтоVM", "Lua54");
|
||||
|
||||
Результат = OPI_Lua.ЭтоVM("not a vm");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ЭтоVM", "Ложь");
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -229,25 +229,25 @@
|
||||
|
||||
Результат = OPI_Lua.ВыполнитьКодИзФайла("Lua54", ФайлСкрипта);
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлСкрипта, "Не удалось удалить временный файл после теста!");
|
||||
|
||||
// END
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлСкрипта, "Не удалось удалить временный файл после теста!");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ВыполнитьКодИзФайла");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ВызватьФункцию()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "function add(a, b) return a + b end");
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(Lua, "function add(a, b) return a + b end");
|
||||
|
||||
Параметры = Новый Массив;
|
||||
Параметры.Добавить(1);
|
||||
Параметры.Добавить(2);
|
||||
|
||||
Результат = OPI_Lua.ВызватьФункцию(VM, "add", Параметры);
|
||||
Результат = OPI_Lua.ВызватьФункцию(Lua, "add", Параметры);
|
||||
|
||||
// END
|
||||
|
||||
@@ -261,7 +261,10 @@
|
||||
Параметры.Добавить(6);
|
||||
Параметры.Добавить(7);
|
||||
|
||||
Результат = OPI_Lua.ВызватьФункциюСкрипта("Lua54", "function mul(a, b) return a * b end", "mul", Параметры);
|
||||
Результат = OPI_Lua.ВызватьФункциюСкрипта("Lua54"
|
||||
, "function mul(a, b) return a * b end"
|
||||
, "mul"
|
||||
, Параметры);
|
||||
|
||||
// END
|
||||
|
||||
@@ -330,17 +333,17 @@
|
||||
ФайлЛога = ПолучитьИмяВременногоФайла("txt");
|
||||
НастройкиЛогирования = OPI_Lua.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога);
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54", НастройкиЛогирования);
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54", НастройкиЛогирования);
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "return 1");
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(Lua, "return 1");
|
||||
|
||||
Результат = OPI_Lua.ПолучитьЛог(VM);
|
||||
Результат = OPI_Lua.ПолучитьЛог(Lua);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ПолучитьЛог", , ФайлЛога);
|
||||
|
||||
Результат = OPI_Lua.ПолучитьЛог(VM, Истина);
|
||||
Результат = OPI_Lua.ПолучитьЛог(Lua, Истина);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ПолучитьЛог", "КакСтрока", ФайлЛога);
|
||||
|
||||
@@ -363,10 +366,10 @@
|
||||
|
||||
Результат = OPI_Lua.СкомпилироватьКодИзФайла("Lua54", ФайлСкрипта);
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлСкрипта, "Не удалось удалить временный файл после теста!");
|
||||
|
||||
// END
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлСкрипта, "Не удалось удалить временный файл после теста!");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "СкомпилироватьКодИзФайла");
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -393,11 +396,11 @@
|
||||
|
||||
Результат = OPI_Lua.ВыполнитьБайтКодФайла("Lua54", ФайлБайтКода);
|
||||
|
||||
// END
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлСкрипта , "Не удалось удалить временный файл после теста!");
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлБайтКода, "Не удалось удалить временный файл после теста!");
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ВыполнитьБайтКодФайла");
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -467,50 +470,52 @@
|
||||
|
||||
Процедура Lua_УстановитьГлобальнуюПеременную()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
Исходное = 99;
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(VM, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(VM, "test_var");
|
||||
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(Lua, "test_var", Исходное);
|
||||
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(Lua, "test_var");
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "УстановитьГлобальнуюПеременную", , Исходное);
|
||||
|
||||
Исходное = "lua-text";
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(VM, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(VM, "test_var");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(Lua, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(Lua, "test_var");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "УстановитьГлобальнуюПеременную", "Строка", Исходное);
|
||||
|
||||
Исходное = Истина;
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(VM, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(VM, "test_var");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(Lua, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(Lua, "test_var");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "УстановитьГлобальнуюПеременную", "Булево", Исходное);
|
||||
|
||||
Исходное = ПолучитьДвоичныеДанныеИзСтроки("binary-payload", "UTF-8");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(VM, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(VM, "test_var");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(Lua, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(Lua, "test_var");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "УстановитьГлобальнуюПеременную", "Бинарник", Исходное);
|
||||
|
||||
Исходное = OPI_ПолучениеДанныхТестов.ПолучитьТестовуюКоллекциюJanx("LuaСложныеДанные");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(VM, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(VM, "test_var");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(Lua, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(Lua, "test_var");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "УстановитьГлобальнуюПеременную", "СложныеДанные", Исходное);
|
||||
|
||||
Исходное = OPI_ПолучениеДанныхТестов.ПолучитьТестовуюКоллекциюJanx("LuaМассивСмешанный");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(VM, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(VM, "test_var");
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(Lua, "test_var", Исходное);
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(Lua, "test_var");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "УстановитьГлобальнуюПеременную", "МассивСмешанный", Исходное);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ПолучитьГлобальнуюПеременную()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(VM, "test_var", 99);
|
||||
OPI_Lua.УстановитьГлобальнуюПеременную(Lua, "test_var", 99);
|
||||
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(VM, "test_var");
|
||||
Результат = OPI_Lua.ПолучитьГлобальнуюПеременную(Lua, "test_var");
|
||||
|
||||
// END
|
||||
|
||||
@@ -520,16 +525,16 @@
|
||||
|
||||
Процедура Lua_ДобавитьПакетИзСтроки()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьLua("Lua54");
|
||||
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(VM, "calc", "local M = {} function M.double(x) return x * 2 end return M");
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(Lua, "calc", "local M = {} function M.double(x) return x * 2 end return M");
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "calc = require('calc')");
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(Lua, "calc = require('calc')");
|
||||
|
||||
Параметры = Новый Массив;
|
||||
Параметры.Добавить(5);
|
||||
|
||||
Результат = OPI_Lua.ВызватьФункцию(VM, "calc.double", Параметры);
|
||||
Результат = OPI_Lua.ВызватьФункцию(Lua, "calc.double", Параметры);
|
||||
|
||||
// END
|
||||
|
||||
@@ -542,33 +547,33 @@
|
||||
ФайлПакета = ПолучитьИмяВременногоФайла("lua");
|
||||
ПолучитьДвоичныеДанныеИзСтроки("local M = {} function M.triple(x) return x * 3 end return M").Записать(ФайлПакета);
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.ДобавитьПакетИзФайла(VM, "calc_file", ФайлПакета);
|
||||
OPI_Lua.ДобавитьПакетИзФайла(Lua, "calc_file", ФайлПакета);
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "calc_file = require('calc_file')");
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(Lua, "calc_file = require('calc_file')");
|
||||
|
||||
Параметры = Новый Массив;
|
||||
Параметры.Добавить(4);
|
||||
|
||||
Результат = OPI_Lua.ВызватьФункцию(VM, "calc_file.triple", Параметры);
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлПакета, "Не удалось удалить временный файл после теста!");
|
||||
Результат = OPI_Lua.ВызватьФункцию(Lua, "calc_file.triple", Параметры);
|
||||
|
||||
// END
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ФайлПакета, "Не удалось удалить временный файл после теста!");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ДобавитьПакетИзФайла");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ПолучитьСписокПакетов()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(VM, "alpha", "local M = {} function M.one() return 1 end return M");
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(VM, "beta" , "local M = {} function M.two() return 2 end return M");
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(Lua, "alpha", "local M = {} function M.one() return 1 end return M");
|
||||
OPI_Lua.ДобавитьПакетИзСтроки(Lua, "beta" , "local M = {} function M.two() return 2 end return M");
|
||||
|
||||
Результат = OPI_Lua.ПолучитьСписокПакетов(VM);
|
||||
Результат = OPI_Lua.ПолучитьСписокПакетов(Lua);
|
||||
|
||||
// END
|
||||
|
||||
@@ -605,11 +610,11 @@
|
||||
ФайлЛога = ПолучитьИмяВременногоФайла("txt");
|
||||
НастройкиЛогирования = OPI_Компоненты.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога);
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54", НастройкиЛогирования);
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54", НастройкиЛогирования);
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "return 1");
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(Lua, "return 1");
|
||||
|
||||
Результат = OPI_Компоненты.ДесериализоватьJanx(VM.GetLogs(10));
|
||||
Результат = OPI_Компоненты.ДесериализоватьJanx(Lua.GetLogs(10));
|
||||
|
||||
// END
|
||||
|
||||
@@ -619,16 +624,16 @@
|
||||
|
||||
Процедура Lua_Расширенная_ПередатьСложныеДанные()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "function echo(v) return v end");
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(Lua, "function echo(v) return v end");
|
||||
|
||||
Исходное = OPI_ПолучениеДанныхТестов.ПолучитьТестовуюКоллекциюJanx("LuaСложныеДанные");
|
||||
|
||||
Параметры = Новый Массив;
|
||||
Параметры.Добавить(Исходное);
|
||||
|
||||
Результат = OPI_Lua.ВызватьФункцию(VM, "echo", Параметры);
|
||||
Результат = OPI_Lua.ВызватьФункцию(Lua, "echo", Параметры);
|
||||
|
||||
// END
|
||||
|
||||
@@ -638,16 +643,16 @@
|
||||
|
||||
Процедура Lua_Расширенная_ПередатьМассивСмешанныхТипов()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
Lua = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "function echo(v) return v end");
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(Lua, "function echo(v) return v end");
|
||||
|
||||
Исходное = OPI_ПолучениеДанныхТестов.ПолучитьТестовуюКоллекциюJanx("LuaМассивСмешанный");
|
||||
|
||||
Параметры = Новый Массив;
|
||||
Параметры.Добавить(Исходное);
|
||||
|
||||
Результат = OPI_Lua.ВызватьФункцию(VM, "echo", Параметры);
|
||||
Результат = OPI_Lua.ВызватьФункцию(Lua, "echo", Параметры);
|
||||
|
||||
// END
|
||||
|
||||
|
||||
Reference in New Issue
Block a user