Доработка документации и списка релизов

This commit is contained in:
Anton Titovets
2026-06-11 09:31:09 +03:00
parent 1ef9bee401
commit 8bf074bcf2
9 changed files with 104 additions and 566 deletions
-112
View File
@@ -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
-79
View File
@@ -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
View File
@@ -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
:::
-112
View File
@@ -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
- Архивирование структурированных данных
-79
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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