1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-25 22:12:29 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-03-27 20:05:59 +03:00
parent 08667fa1dd
commit 5cb369ea01
90 changed files with 11655 additions and 7014 deletions

View File

@@ -420,6 +420,48 @@ jobs:
path: ./docs/ru/results/PostgreSQL
Testing-MySQL:
runs-on: ubuntu-latest
needs: [Decode, Build]
steps:
- uses: actions/checkout@v2
- uses: otymko/setup-onescript@v1.4
with:
version: 1.9.1
- name: Получить тестовые данные из кэша
uses: actions/cache/restore@v3
with:
key: test-data
path: ./data.json
- name: Установить asserts и 1testrunner
run: |
opm install asserts
opm install 1testrunner
- name: Установить OInt
run: |
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'https://api.athenaeum.digital/tc/job/Release/lastSuccessfulBuild/artifact/1.21.0/oint_1.21.0_all_ru.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
- name: Основные методы
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os "CLI_MYS_ОсновныеМетоды"
- name: Записать логи
if: ${{ cancelled() }} == false
uses: actions/cache/save@v3
with:
key: logs-MySQL
path: ./docs/ru/results/MySQL
Testing-SQLite:
runs-on: ubuntu-latest
needs: [Decode, Build]
@@ -1557,7 +1599,7 @@ jobs:
Encode:
runs-on: ubuntu-latest
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-PostgreSQL,Testing-SQLite,Testing-RCON,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams,Testing-Ozon,Testing-Neocities,Testing-CDEK,Testing-YandexMetrika,Testing-S3,Testing-TCP,Testing-GreenAPI]
needs: [Testing-Telegram,Testing-VK,Testing-Viber,Testing-Twitter,Testing-PostgreSQL,Testing-MySQL,Testing-SQLite,Testing-RCON,Testing-YandexDisk,Testing-GoogleWorkspace,Testing-GoogleCalendar,Testing-GoogleDrive,Testing-GoogleSheets,Testing-Notion,Testing-Slack,Testing-Airtable,Testing-Dropbox,Testing-Bitrix24,Testing-VkTeams,Testing-Ozon,Testing-Neocities,Testing-CDEK,Testing-YandexMetrika,Testing-S3,Testing-TCP,Testing-GreenAPI]
if: ${{ always() }}
permissions:
contents: write
@@ -1665,6 +1707,22 @@ jobs:
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-PostgreSQL"
- name: Получить логи MySQL
uses: actions/cache/restore@v3
with:
key: logs-MySQL
path: ./docs/ru/results/MySQL
- name: Очистка логов MySQL
run: |
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-MySQL"
- name: Получить логи SQLite
uses: actions/cache/restore@v3
with:
@@ -1997,7 +2055,7 @@ jobs:
Clear-Cache:
runs-on: ubuntu-latest
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-PostgreSQL, Testing-SQLite, Testing-RCON, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Testing-Ozon, Testing-Neocities, Testing-CDEK, Testing-YandexMetrika, Testing-S3, Testing-TCP, Testing-GreenAPI, Encode]
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-PostgreSQL, Testing-MySQL, Testing-SQLite, Testing-RCON, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Testing-Dropbox, Testing-Bitrix24, Testing-VkTeams, Testing-Ozon, Testing-Neocities, Testing-CDEK, Testing-YandexMetrika, Testing-S3, Testing-TCP, Testing-GreenAPI, Encode]
if: ${{ always() }}
steps:
- name: Очистка основного кэша

11
ci/cli_ostestru vendored
View File

@@ -254,6 +254,17 @@ pipeline {
}
}
stage('Testing-MySQL') {
steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_ТестыCLI.os" "CLI_MYS_ОсновныеМетоды"'
}
}
}
stage('Testing-SQLite') {
steps {

64
ci/clitesten vendored
View File

@@ -61,6 +61,11 @@ pipeline {
test_greenapi()
}
}
stage('mysql'){
steps{
test_mysql()
}
}
stage('neocities'){
steps{
test_neocities()
@@ -1613,6 +1618,64 @@ def test_greenapi(){
}
def test_mysql(){
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ExecuteSQLQuery --sql "test" --params "test" --force "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql GenerateConnectionString --addr "test" --db "test" --login "test" --pass "test" --port "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql GetTlsSettings --trust "test" --cert "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql CreateDatabase --base "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql DeleteDatabase --base "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql CreateTable --table "test" --cols "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ClearTable --table "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql DeleteTable --table "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql AddRecords --table "test" --rows "test" --trn "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql GetRecords --table "test" --fields "test" --filter "test" --order "test" --limit "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql UpdateRecords --table "test" --values "test" --filter "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql DeleteRecords --table "test" --filter "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql GetRecordsFilterStrucutre --empty "test" --debug --test '
}
}
def test_neocities(){
@@ -3144,6 +3207,7 @@ test_gdrive()
test_gsheets()
test_google()
test_greenapi()
test_mysql()
test_neocities()
test_notion()
test_ozon()

64
ci/clitestru vendored
View File

@@ -61,6 +61,11 @@ pipeline {
test_greenapi()
}
}
stage('mysql'){
steps{
test_mysql()
}
}
stage('neocities'){
steps{
test_neocities()
@@ -1613,6 +1618,64 @@ def test_greenapi(){
}
def test_mysql(){
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ВыполнитьЗапросSQL --sql "test" --params "test" --force "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql СформироватьСтрокуПодключения --addr "test" --db "test" --login "test" --pass "test" --port "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ПолучитьНастройкиTls --trust "test" --cert "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql СоздатьБазуДанных --base "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql УдалитьБазуДанных --base "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql СоздатьТаблицу --table "test" --cols "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ОчиститьТаблицу --table "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql УдалитьТаблицу --table "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ДобавитьЗаписи --table "test" --rows "test" --trn "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ПолучитьЗаписи --table "test" --fields "test" --filter "test" --order "test" --limit "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ОбновитьЗаписи --table "test" --values "test" --filter "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql УдалитьЗаписи --table "test" --filter "test" --dbc "test" --tls "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe mysql ПолучитьСтруктуруФильтраЗаписей --empty "test" --debug --test '
}
}
def test_neocities(){
@@ -3144,6 +3207,7 @@ test_gdrive()
test_gsheets()
test_google()
test_greenapi()
test_mysql()
test_neocities()
test_notion()
test_ozon()

11
ci/ostestru vendored
View File

@@ -254,6 +254,17 @@ pipeline {
}
}
stage('Testing-MySQL') {
steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'1testrunner -run "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os" "MYS_ОсновныеМетоды"'
}
}
}
stage('Testing-SQLite') {
steps {

View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -0,0 +1,5 @@
{
"Image": "https://api.athenaeum.digital/test_data/picture.jpg",
"Address": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

4
docs/en/data/MySQL/IsConnector.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"Address": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -0,0 +1,8 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.CloseConnection(Connection);

View File

@@ -0,0 +1,9 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Result = OPI_MySQL.CreateConnection(ConnectionString);
OPI_MySQL.CloseConnection(Result);

View File

@@ -0,0 +1,53 @@
 Image = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
// CREATE
QueryText = "
|CREATE TABLE test_table (
|id INT AUTO_INCREMENT PRIMARY KEY,
|name VARCHAR(255),
|age INT,
|salary DOUBLE,
|amount FLOAT,
|type TINYINT UNSIGNED,
|date DATE,
|time TIME,
|data BLOB
|);";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
// INSERT with parameters
QueryText = "
|INSERT INTO test_table (name, age, salary, amount, type, date, time, data)
|VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
ParameterArray = New Array;
ParameterArray.Add(New Structure("TEXT" , "Vitaly"));
ParameterArray.Add(New Structure("INT" , 25));
ParameterArray.Add(New Structure("DOUBLE", 1000.12));
ParameterArray.Add(New Structure("FLOAT" , 1000.12));
ParameterArray.Add(New Structure("UINT" , 1));
ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("TIME" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("BYTES" , Image));
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, ParameterArray, , Connection);
// SELECT (The result of this query is shown in the Result block)
QueryText = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
Closing = OPI_MySQL.CloseConnection(Connection);

View File

@@ -0,0 +1,6 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
Result = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);

11
docs/en/examples/MySQL/IsConnector.txt vendored Normal file
View File

@@ -0,0 +1,11 @@
 Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.IsConnector(Connection);
OPI_MySQL.CloseConnection(Result);

View File

@@ -0,0 +1,46 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Close connection
Explicitly closes the passed connection
`Function CloseConnection(Val Connection) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Connection | - | Arbitrary | ✔ | AddIn object with open connection |
Returns: Structure Of KeyAndValue - Result of connection termination
<br/>
:::caution
**NOCLI:** this method is not available in CLI version
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.CloseConnection(Connection);
```

View File

@@ -0,0 +1,48 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Create Connection
Creates a connection to the specified base
`Function CreateConnection(Val ConnectionString = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| ConnectionString | - | String | &#x2716; | Connection string. See GenerateConnectionString |
| Tls | - | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Arbitrary - Connector object or structure with error information
<br/>
:::caution
**NOCLI:** this method is not available in CLI version
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Result = OPI_MySQL.CreateConnection(ConnectionString);
OPI_MySQL.CloseConnection(Result);
```

View File

@@ -0,0 +1,96 @@
---
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Execute SQL query
Executes an arbitrary SQL query
`Function ExecuteSQLQuery(Val QueryText, Val Parameters = "", Val ForceResult = False, Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| QueryText | --sql | String | &#x2714; | Database query text |
| Parameters | --params | Array Of Arbitrary | &#x2716; | Array of positional parameters of the request |
| ForceResult | --force | Boolean | &#x2716; | Includes an attempt to retrieve the result, even for nonSELECT queries |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
:::tip
Query parameters are specified as an array of structures of the following type: `{'Type': 'Value'}`. The list of available types is described on the initial page of the MySQL library documentation
Without specifying the `ForcifyResult` flag, result data is returned only for queries beginning with `SELECT` keyword For other queries, `result:true` or `false` with error text is returned
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Image = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
// CREATE
QueryText = "
|CREATE TABLE test_table (
|id INT AUTO_INCREMENT PRIMARY KEY,
|name VARCHAR(255),
|age INT,
|salary DOUBLE,
|amount FLOAT,
|type TINYINT UNSIGNED,
|date DATE,
|time TIME,
|data BLOB
|);";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
// INSERT with parameters
QueryText = "
|INSERT INTO test_table (name, age, salary, amount, type, date, time, data)
|VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
ParameterArray = New Array;
ParameterArray.Add(New Structure("TEXT" , "Vitaly"));
ParameterArray.Add(New Structure("INT" , 25));
ParameterArray.Add(New Structure("DOUBLE", 1000.12));
ParameterArray.Add(New Structure("FLOAT" , 1000.12));
ParameterArray.Add(New Structure("UINT" , 1));
ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("TIME" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("BYTES" , Image));
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, ParameterArray, , Connection);
// SELECT (The result of this query is shown in the Result block)
QueryText = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
Closing = OPI_MySQL.CloseConnection(Connection);
```

View File

@@ -0,0 +1,43 @@
---
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Generate connection string
Forms a connection string from the passed data
`Function GenerateConnectionString(Val Address, Val Base, Val Login, Val Password = "", Val Port = "3306") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Address | --addr | String | &#x2714; | IP address or domain name of the server |
| Base | --db | String | &#x2714; | Name of the database to connect |
| Login | --login | String | &#x2714; | MySQL user |
| Password | --pass | String | &#x2716; | MySQL password |
| Port | --port | String | &#x2716; | Connection port |
Returns: String - MySQL database connection string
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
Result = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
```

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get TLS Settings
Forms settings for using TLS
`Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| DisableCertVerification | --trust | Boolean | &#x2714; | Allows to work with invalid certificates, including self signed |
| CertFilepath | --cert | String | &#x2716; | Path to the root PEM file of the certificate if it is not in the system repository |
Returns: Structure Of KeyAndValue - Structure of TLS connection settings
<br/>
:::tip
Tls settings can only be set when a connection is created: explicitly, by using the `OpenConnection` function or implicit, when passing the connection string to ORM methods.
Passing Tls settings together with passing an already created connection to the `Connection` parameter will be ignored
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,49 @@
---
sidebar_position: 3
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Is connector
Checks that the value is an object of an MySQL AddIn
`Function IsConnector(Val Value) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Value | - | Arbitrary | &#x2714; | Value to check |
Returns: Boolean - Is connector
<br/>
:::caution
**NOCLI:** this method is not available in CLI version
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Address = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.IsConnector(Connection);
OPI_MySQL.CloseConnection(Result);
```

View File

@@ -0,0 +1,4 @@
{
"label": "Common methods",
"position": "2"
}

44
docs/en/md/MySQL/Orm/Add-records.mdx vendored Normal file
View File

@@ -0,0 +1,44 @@
---
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Add rows
Adds new rows to the table
`Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | &#x2714; | Table name |
| DataArray | --rows | Array of Structure | &#x2714; | An array of string data structures: Key > field, Value > field value |
| Transaction | --trn | Boolean | &#x2716; | True > adding records to transactions with rollback on error |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
:::tip
Record data is specified as an array of structures of the following type:<br/>`{'Field name 1': {'Type': 'Value'}, 'Field name 2': {'Type': 'Value'},...}`
The list of available types is described on the initial page of the MySQL library documentation
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

36
docs/en/md/MySQL/Orm/Clear-table.mdx vendored Normal file
View File

@@ -0,0 +1,36 @@
---
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Clear table
Clears the database table
`Function ClearTable(Val Table, Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | &#x2714; | Table name |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,36 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Create database
Creates a database with the specified name
`Function CreateDatabase(Val Base, Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Base | --base | String | &#x2714; | Database name |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

41
docs/en/md/MySQL/Orm/Create-table.mdx vendored Normal file
View File

@@ -0,0 +1,41 @@
---
sidebar_position: 3
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Create table
Creates an empty table in the database
`Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | &#x2714; | Table name |
| ColoumnsStruct | --cols | Structure Of KeyAndValue | &#x2714; | Column structure: Key > Name, Value > Data type |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
:::tip
The list of available types is described on the initial page of the MySQL library documentation
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,36 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Drop database
Deletes the database
`Function DeleteDatabase(Val Base, Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Base | --base | String | &#x2714; | Database name |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

37
docs/en/md/MySQL/Orm/Delete-records.mdx vendored Normal file
View File

@@ -0,0 +1,37 @@
---
sidebar_position: 9
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Delete records
Deletes records from the table
`Function DeleteRecords(Val Table, Val Filters = "", Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | &#x2714; | Table name |
| Filters | --filter | Array of Structure | &#x2716; | Filters array. See GetRecordsFilterStrucutre |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

36
docs/en/md/MySQL/Orm/Delete-table.mdx vendored Normal file
View File

@@ -0,0 +1,36 @@
---
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Delete table
Deletes a table from the database
`Function DeleteTable(Val Table, Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | &#x2714; | Table name |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,40 @@
---
sidebar_position: 10
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get records filter strucutre
Gets the template structure for filtering records in ORM queries
`Function GetRecordsFilterStrucutre(Val Clear = False) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Clear | --empty | Boolean | &#x2716; | True > structure with empty valuse, False > field descriptions at values |
Returns: Structure Of KeyAndValue - Record filter element
<br/>
:::tip
The use of the `raw` feature is necessary for compound constructions like `BEETWEEN`. For example: with `raw:false` the filter `type:BETWEEN` `value:10 AND 20` will be interpolated as `BETWEEN ?1 ` where `?1 = "10 AND 20,"' which would cause an error.
In such a case, you must use `raw:true` to set the condition directly in the query text
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

40
docs/en/md/MySQL/Orm/Get-records.mdx vendored Normal file
View File

@@ -0,0 +1,40 @@
---
sidebar_position: 7
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get records
Gets records from the selected table
`Function GetRecords(Val Table, Val Fields = "*", Val Filters = "", Val Sort = "", Val Count = "", Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | &#x2714; | Table name |
| Fields | --fields | Array Of String | &#x2716; | Fields for selection |
| Filters | --filter | Array of Structure | &#x2716; | Filters array. See GetRecordsFilterStrucutre |
| Sort | --order | Structure Of KeyAndValue | &#x2716; | Sorting: Key > field name, Value > direction (ASC, DESC) |
| Count | --limit | Number | &#x2716; | Limiting the number of received strings |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

44
docs/en/md/MySQL/Orm/Update-records.mdx vendored Normal file
View File

@@ -0,0 +1,44 @@
---
sidebar_position: 8
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Update records
Updates the value of records by selected criteria
`Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Connection = "", Val Tls = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | &#x2714; | Table name |
| ValueStructure | --values | Structure Of KeyAndValue | &#x2714; | Values structure: Key > field, Value > field value |
| Filters | --filter | Array of Structure | &#x2716; | Filters array. See GetRecordsFilterStrucutre |
| Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Map Of KeyAndValue - Result of query execution
<br/>
:::tip
Record data is specified as an array of structures of the following type:<br/>`{'Field name 1': {'Type': 'Value'}, 'Field name 2': {'Type': 'Value'},...}`
The list of available types is described on the initial page of the MySQL library documentation
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

4
docs/en/md/MySQL/Orm/_category_.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"label": "ORM",
"position": "3"
}

View File

@@ -0,0 +1,5 @@
{
"Картинка": "https://api.athenaeum.digital/test_data/picture.jpg",
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,4 @@
{
"Адрес": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,53 @@
 Картинка = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
// CREATE
ТекстЗапроса = "
|CREATE TABLE test_table (
|id INT AUTO_INCREMENT PRIMARY KEY,
|name VARCHAR(255),
|age INT,
|salary DOUBLE,
|amount FLOAT,
|type TINYINT UNSIGNED,
|date DATE,
|time TIME,
|data BLOB
|);";
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
// INSERT с параметрами
ТекстЗапроса = "
|INSERT INTO test_table (name, age, salary, amount, type, date, time, data)
|VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый Структура("TEXT" , "Vitaly"));
МассивПараметров.Добавить(Новый Структура("INT" , 25));
МассивПараметров.Добавить(Новый Структура("DOUBLE", 1000.12));
МассивПараметров.Добавить(Новый Структура("FLOAT" , 1000.12));
МассивПараметров.Добавить(Новый Структура("UINT" , 1));
МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату()));
МассивПараметров.Добавить(Новый Структура("TIME" , OPI_Инструменты.ПолучитьТекущуюДату()));
МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка));
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, МассивПараметров, , Соединение);
// SELECT (Результат этого запроса приведен в следующем блоке)
ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;";
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение);

View File

@@ -0,0 +1,8 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
Результат = OPI_MySQL.ЗакрытьСоединение(Соединение);

View File

@@ -0,0 +1,9 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Результат = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
OPI_MySQL.ЗакрытьСоединение(Результат);

View File

@@ -0,0 +1,6 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
Результат = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);

View File

@@ -0,0 +1,11 @@
 Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
Результат = OPI_MySQL.ЭтоКоннектор(Соединение);
OPI_MySQL.ЗакрытьСоединение(Результат);

View File

@@ -0,0 +1,46 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Закрыть соединение
Явно закрывает переданное соединение
`Функция ЗакрытьСоединение(Знач Соединение) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Соединение | - | Произвольный | &#x2714; | Объект компоненты с открытым соединением |
Возвращаемое значение: Структура Из КлючИЗначение - Результат закрытия соединения
<br/>
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
Результат = OPI_MySQL.ЗакрытьСоединение(Соединение);
```

View File

@@ -0,0 +1,48 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Открыть соединение
Создает подключение к указанной базе
`Функция ОткрытьСоединение(Знач СтрокаПодключения = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| СтрокаПодключения | - | Строка | &#x2716; | Строка подключения. См. СформироватьСтрокуПодключения |
| Tls | - | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Произвольный - Объект коннектора или структура с информацией об ошибке
<br/>
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Результат = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
OPI_MySQL.ЗакрытьСоединение(Результат);
```

View File

@@ -0,0 +1,96 @@
---
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Выполнить запрос SQL
Выполняет произвольный SQL запрос
`Функция ВыполнитьЗапросSQL(Знач ТекстЗапроса, Знач Параметры = "", Знач ФорсироватьРезультат = Ложь, Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| ТекстЗапроса | --sql | Строка | &#x2714; | Текст запроса к базе |
| Параметры | --params | Массив Из Произвольный | &#x2716; | Массив позиционных параметров запроса |
| ФорсироватьРезультат | --force | Булево | &#x2716; | Включает попытку получения результата, даже для не SELECT запросов |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
:::tip
Параметры запроса указываются как массив структур вида `{'Тип данных': 'Значение'}`. Список доступных типов описан на начальной странице документации библиотеки MySQL
Без указания флага `ФорсироватьРезультат`, чтение результата осуществляется только для запросов, начинающихся с `SELECT` Для остальных запросов возвращается `result:true` или `false` с текстом ошибки
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Картинка = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "test_data";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
// CREATE
ТекстЗапроса = "
|CREATE TABLE test_table (
|id INT AUTO_INCREMENT PRIMARY KEY,
|name VARCHAR(255),
|age INT,
|salary DOUBLE,
|amount FLOAT,
|type TINYINT UNSIGNED,
|date DATE,
|time TIME,
|data BLOB
|);";
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
// INSERT с параметрами
ТекстЗапроса = "
|INSERT INTO test_table (name, age, salary, amount, type, date, time, data)
|VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый Структура("TEXT" , "Vitaly"));
МассивПараметров.Добавить(Новый Структура("INT" , 25));
МассивПараметров.Добавить(Новый Структура("DOUBLE", 1000.12));
МассивПараметров.Добавить(Новый Структура("FLOAT" , 1000.12));
МассивПараметров.Добавить(Новый Структура("UINT" , 1));
МассивПараметров.Добавить(Новый Структура("DATE" , OPI_Инструменты.ПолучитьТекущуюДату()));
МассивПараметров.Добавить(Новый Структура("TIME" , OPI_Инструменты.ПолучитьТекущуюДату()));
МассивПараметров.Добавить(Новый Структура("BYTES" , Картинка));
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, МассивПараметров, , Соединение);
// SELECT (Результат этого запроса приведен в следующем блоке)
ТекстЗапроса = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;";
Результат = OPI_MySQL.ВыполнитьЗапросSQL(ТекстЗапроса, , , Соединение);
Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение);
```

View File

@@ -0,0 +1,43 @@
---
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Сформировать строку подключения
Формирует строку подключения из переданных данных
`Функция СформироватьСтрокуПодключения(Знач Адрес, Знач База, Знач Логин, Знач Пароль = "", Знач Порт = "3306") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Адрес | --addr | Строка | &#x2714; | IP адрес или доменное имя сервера |
| База | --db | Строка | &#x2714; | Имя базы данных для подключения |
| Логин | --login | Строка | &#x2714; | Логин пользователя mysql |
| Пароль | --pass | Строка | &#x2716; | Пароль пользователя mysql |
| Порт | --port | Строка | &#x2716; | Порт подключения |
Возвращаемое значение: Строка - Строка подключения к базе MySQL
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
Результат = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
```

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить настройки TLS
Формирует настройки для использования TLS при выполнении запросов
`Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| ОтключитьПроверкуСертификатов | --trust | Булево | &#x2714; | Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными |
| ПутьКСертификату | --cert | Строка | &#x2716; | Путь к корневому PEM файлу сертификата, если его нет в системном хранилище |
Возвращаемое значение: Структура Из КлючИЗначение - Структура настроек TLS соединения
<br/>
:::tip
Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение` или неявного, при передаче строки подключения в методы ORM.
Передача настроек Tls совместно с передачей уже созданного соединения в параметр `Соединение` будет проигнорирована
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,49 @@
---
sidebar_position: 3
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Это коннектор
Проверяет, что значение является объектом внешней компоненты MySQL
`Функция ЭтоКоннектор(Знач Значение) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Значение | - | Произвольный | &#x2714; | Значение для проверки |
Возвращаемое значение: Булево - Это коннектор
<br/>
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "";
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Соединение = OPI_MySQL.ОткрытьСоединение(СтрокаПодключения);
Результат = OPI_MySQL.ЭтоКоннектор(Соединение);
OPI_MySQL.ЗакрытьСоединение(Результат);
```

View File

@@ -0,0 +1,4 @@
{
"label": "Основные методы",
"position": "2"
}

44
docs/ru/md/MySQL/Orm/Add-records.mdx vendored Normal file
View File

@@ -0,0 +1,44 @@
---
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Добавить записи
Добавляет записи в таблицу
`Функция ДобавитьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| МассивДанных | --rows | Массив Из Структура | &#x2714; | Массив структур данных строк: Ключ > поле, Значение > значение поля |
| Транзакция | --trn | Булево | &#x2716; | Истина > добавление записей в транзакции с откатом при ошибке |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
:::tip
Данные записей указываются как массив структур вида:<br/>`{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}`
Список доступных типов описан на начальной странице документации библиотеки MySQL
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

36
docs/ru/md/MySQL/Orm/Clear-table.mdx vendored Normal file
View File

@@ -0,0 +1,36 @@
---
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Очистить таблицу
Очищает таблицу базы
`Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,36 @@
---
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Создать базу данных
Создает базу данных с указанным именем
`Функция СоздатьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| База | --base | Строка | &#x2714; | Имя базы |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

41
docs/ru/md/MySQL/Orm/Create-table.mdx vendored Normal file
View File

@@ -0,0 +1,41 @@
---
sidebar_position: 3
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Создать таблицу
Создает пустую таблицу в базе
`Функция СоздатьТаблицу(Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| СтруктураКолонок | --cols | Структура Из КлючИЗначение | &#x2714; | Структура колонок: Ключ > имя, Значение > Тип данных |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
:::tip
Список доступных типов описан на начальной странице документации библиотеки MySQL
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,36 @@
---
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Удалить базу данных
Удаляет базу данных
`Функция УдалитьБазуДанных(Знач База, Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| База | --base | Строка | &#x2714; | Имя базы |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

37
docs/ru/md/MySQL/Orm/Delete-records.mdx vendored Normal file
View File

@@ -0,0 +1,37 @@
---
sidebar_position: 9
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Удалить записи
Удаляет записи из таблицы
`Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| Фильтры | --filter | Массив Из Структура | &#x2716; | Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

36
docs/ru/md/MySQL/Orm/Delete-table.mdx vendored Normal file
View File

@@ -0,0 +1,36 @@
---
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Удалить таблицу
Удаляет таблицу из базы
`Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,38 @@
---
sidebar_position: 10
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить структуру фильтра записей
Получает структуру шаблон для фильтрации записей в запросах ORM
`Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Пустая | --empty | Булево | &#x2716; | Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей |
Возвращаемое значение: Структура Из КлючИЗначение - Элемент фильтра записей
<br/>
:::tip
Использование признака `raw` необходимо для составных конструкций, вроде `BEETWEEN`. Например: при `raw:false` фильтр `type:BETWEEN` `value:10 AND 20` будет интерпритирован как `BETWEEN ?1 ` где `?1 = "10 AND 20"`, что приведет к ошибке. В таком случае необходимо использовать `raw:true` для установки условия напрямую в текст запроса
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

40
docs/ru/md/MySQL/Orm/Get-records.mdx vendored Normal file
View File

@@ -0,0 +1,40 @@
---
sidebar_position: 7
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить записи
Получает записи из выбранной таблицы
`Функция ПолучитьЗаписи(Знач Таблица, Знач Поля = "*", Знач Фильтры = "", Знач Сортировка = "", Знач Количество = "", Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| Поля | --fields | Массив Из Строка | &#x2716; | Поля для выборки |
| Фильтры | --filter | Массив Из Структура | &#x2716; | Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей |
| Сортировка | --order | Структура Из КлючИЗначение | &#x2716; | Сортировка: Ключ > поле, Значение > направление (ASC, DESC) |
| Количество | --limit | Число | &#x2716; | Ограничение количества получаемых строк |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

44
docs/ru/md/MySQL/Orm/Update-records.mdx vendored Normal file
View File

@@ -0,0 +1,44 @@
---
sidebar_position: 8
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Обновить записи
Обновляет значение записей по выбранным критериям
`Функция ОбновитьЗаписи(Знач Таблица, Знач СтруктураЗначений, Знач Фильтры = "", Знач Соединение = "", Знач Tls = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| СтруктураЗначений | --values | Структура Из КлючИЗначение | &#x2714; | Структура значений: Ключ > поле, Значение > значение поля |
| Фильтры | --filter | Массив Из Структура | &#x2716; | Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат выполнения запроса
<br/>
:::tip
Данные записей указываются как массив структур вида:<br/>`{'Имя поля 1': {'Тип данных': 'Значение'}, 'Имя поля 2': {'Тип данных': 'Значение'},...}`
Список доступных типов описан на начальной странице документации библиотеки MySQL
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

4
docs/ru/md/MySQL/Orm/_category_.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"label": "ORM",
"position": "3"
}

File diff suppressed because it is too large Load Diff

582
src/en/OInt/core/Modules/OPI_MySQL.os vendored Normal file
View File

@@ -0,0 +1,582 @@
// OneScript: ./OInt/core/Modules/OPI_MySQL.os
// Lib: MySQL
// CLI: mysql
// MIT License
// Copyright (c) 2023 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check constructor-function-return-section
//@skip-check doc-comment-collection-item-type
// Uncomment if OneScript is executed
#Use "../../tools"
#Region Public
#Region CommonMethods
// Create Connection !NOCLI
// Creates a connection to the specified base
//
// Parameters:
// ConnectionString - String - Connection string. See GenerateConnectionString - sting
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Arbitrary - Connector object or structure with error information
Function CreateConnection(Val ConnectionString = "", Val Tls = "") Export
If IsConnector(ConnectionString) Then
Return ConnectionString;
EndIf;
OPI_TypeConversion.GetLine(ConnectionString);
OPI_Tools.RestoreEscapeSequences(ConnectionString);
Connector = OPI_AddIns.GetAddIn("MySQL");
Connector.ConnectionString = ConnectionString;
Result = Connector.Connect();
Result = OPI_Tools.JsonToStructure(Result, False);
Return ?(Result["result"], Connector, Result);
EndFunction
// Close connection !NOCLI
// Explicitly closes the passed connection
//
// Parameters:
// Connection - Arbitrary - AddIn object with open connection - dbc
//
// Returns:
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
If IsConnector(Connection) Then
Result = Connection.Close();
Result = OPI_Tools.JsonToStructure(Result, False);
Else
Result = New Structure("result,error", False, "It's not a connection");
EndIf;
Return Result;
EndFunction
// Is connector !NOCLI
// Checks that the value is an object of an MySQL AddIn
//
// Parameters:
// Value - Arbitrary - Value to check - value
//
// Returns:
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return String(TypeOf(Value)) = "AddIn.OPI_MySQL.Main";
EndFunction
// Execute SQL query
// Executes an arbitrary SQL query
//
// Note
// Query parameters are specified as an array of structures of the following type: `{'Type': 'Value'}`.^^
// The list of available types is described on the initial page of the MySQL library documentation
// Without specifying the `ForcifyResult` flag, result data is returned only for queries beginning with `SELECT` keyword^^
// For other queries, `result:true` or `false` with error text is returned
//
// Parameters:
// QueryText - String - Database query text - sql
// Parameters - Array Of Arbitrary - Array of positional parameters of the request - params
// ForceResult - Boolean - Includes an attempt to retrieve the result, even for nonSELECT queries - force
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function ExecuteSQLQuery(Val QueryText
, Val Parameters = ""
, Val ForceResult = False
, Val Connection = ""
, Val Tls = "") Export
OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
If IsConnector(Connection) Then
CloseConnection = False;
Connector = Connection;
Else
CloseConnection = True;
Connector = CreateConnection(Connection, Tls);
EndIf;
If Not IsConnector(Connector) Then
Return Connector;
EndIf;
Result = Connector.Execute(QueryText, Parameters_, ForceResult);
If CloseConnection Then
CloseConnection(Connector);
EndIf;
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
// Generate connection string
// Forms a connection string from the passed data
//
// Parameters:
// Address - String - IP address or domain name of the server - addr
// Base - String - Name of the database to connect - db
// Login - String - MySQL user - login
// Password - String - MySQL password - pass
// Port - String - Connection port - port
//
// Returns:
// String - MySQL database connection string
Function GenerateConnectionString(Val Address, Val Base, Val Login, Val Password = "", Val Port = "3306") Export
OPI_TypeConversion.GetLine(Address);
OPI_TypeConversion.GetLine(Login);
OPI_TypeConversion.GetLine(Base);
OPI_TypeConversion.GetLine(Port);
OPI_TypeConversion.GetLine(Password);
Port = ?(ValueIsFilled(Port), ":" + Port, Port);
Password = ?(ValueIsFilled(Password), ":" + Password, Password);
StringTemplate = "mysql://%1%2@%3%4/%5";
ConnectionString = StrTemplate(StringTemplate, Login, Password, Address, Port, Base);
Return ConnectionString;
EndFunction
// Get TLS Settings
// Forms settings for using TLS
//
// Note
// Tls settings can only be set when a connection is created: explicitly, by using the `OpenConnection` function^^
// or implicit, when passing the connection string to ORM methods.
// Passing Tls settings together with passing an already created connection to the `Connection` parameter will be ignored
//
// Parameters:
// DisableCertVerification - Boolean - Allows to work with invalid certificates, including self signed - trust
// CertFilepath - String - Path to the root PEM file of the certificate if it is not in the system repository - cert
//
// Returns:
// Structure Of KeyAndValue - Structure of TLS connection settings
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
Return OPI_AddIns.GetTlsSettings(DisableCertVerification, CertFilepath);
EndFunction
#EndRegion
#Region ORM
// Create database
// Creates a database with the specified name
//
// Parameters:
// Base - String - Database name - base
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function CreateDatabase(Val Base, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.CreateDatabase(OPI_MySQL, Base, Connection, Tls);
Return Result;
EndFunction
// Drop database
// Deletes the database
//
// Parameters:
// Base - String - Database name - base
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function DeleteDatabase(Val Base, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteDatabase(OPI_MySQL, Base, Connection, Tls);
Return Result;
EndFunction
// Create table
// Creates an empty table in the database
//
// Note
// The list of available types is described on the initial page of the MySQL library documentation
//
// Parameters:
// Table - String - Table name - table
// ColoumnsStruct - Structure Of KeyAndValue - Column structure: Key > Name, Value > Data type - cols
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.CreateTable(OPI_MySQL, Table, ColoumnsStruct, Connection, Tls);
Return Result;
EndFunction
// Clear table
// Clears the database table
//
// Parameters:
// Table - String - Table name - table
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function ClearTable(Val Table, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteRecords(OPI_MySQL, Table, , Connection, Tls);
Return Result;
EndFunction
// Delete table
// Deletes a table from the database
//
// Parameters:
// Table - String - Table name - table
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function DeleteTable(Val Table, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteTable(OPI_MySQL, Table, Connection, Tls);
Return Result;
EndFunction
// Add rows
// Adds new rows to the table
//
// Note
// Record data is specified as an array of structures of the following type:^
// `{'Field name 1': {'Type': 'Value'}, 'Field name 2': {'Type': 'Value'},...}`
// The list of available types is described on the initial page of the MySQL library documentation
//
// Parameters:
// Table - String - Table name - table
// DataArray - Array of Structure - An array of string data structures: Key > field, Value > field value - rows
// Transaction - Boolean - True > adding records to transactions with rollback on error - trn
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.AddRecords(OPI_MySQL, Table, DataArray, Transaction, Connection, Tls);
Return Result;
EndFunction
// Get records
// Gets records from the selected table
//
// Parameters:
// Table - String - Table name - table
// Fields - Array Of String - Fields for selection - fields
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
// Sort - Structure Of KeyAndValue - Sorting: Key > field name, Value > direction (ASC, DESC) - order
// Count - Number - Limiting the number of received strings - limit
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function GetRecords(Val Table
, Val Fields = "*"
, Val Filters = ""
, Val Sort = ""
, Val Count = ""
, Val Connection = ""
, Val Tls = "") Export
Result = OPI_SQLQueries.GetRecords(OPI_MySQL
, Table
, Fields
, Filters
, Sort
, Count
, Connection
, Tls);
Return Result;
EndFunction
// Update records
// Updates the value of records by selected criteria
//
// Note
// Record data is specified as an array of structures of the following type:^
// `{'Field name 1': {'Type': 'Value'}, 'Field name 2': {'Type': 'Value'},...}`
// The list of available types is described on the initial page of the MySQL library documentation
//
// Parameters:
// Table - String - Table name - table
// ValueStructure - Structure Of KeyAndValue - Values structure: Key > field, Value > field value - values
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function UpdateRecords(Val Table
, Val ValueStructure
, Val Filters = ""
, Val Connection = ""
, Val Tls = "") Export
Result = OPI_SQLQueries.UpdateRecords(OPI_MySQL, Table, ValueStructure, Filters, Connection, Tls);
Return Result;
EndFunction
// Delete records
// Deletes records from the table
//
// Parameters:
// Table - String - Table name - table
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function DeleteRecords(Val Table, Val Filters = "", Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteRecords(OPI_MySQL, Table, Filters, Connection, Tls);
Return Result;
EndFunction
// Get records filter strucutre
// Gets the template structure for filtering records in ORM queries
//
// Note
// The use of the `raw` feature is necessary for compound constructions like `BEETWEEN`.^^
// For example: with `raw:false` the filter `type:BETWEEN` `value:10 AND 20` will be interpolated as `BETWEEN ?1 `^^
// where `?1 = "10 AND 20,"' which would cause an error.
// In such a case, you must use `raw:true` to set the condition directly in the query text
//
// Parameters:
// Clear - Boolean - True > structure with empty valuse, False > field descriptions at values - empty
//
// Returns:
// Structure Of KeyAndValue - Record filter element
Function GetRecordsFilterStrucutre(Val Clear = False) Export
Return OPI_SQLQueries.GetRecordsFilterStrucutre(Clear);
EndFunction
#EndRegion
#EndRegion
#Region Internal
Function GetFeatures() Export
Features = New Map;
Features.Insert("ParameterNumeration", False);
Features.Insert("ParameterMarker" , "?");
Return Features;
EndFunction
#EndRegion
#Region Private
Function ProcessParameters(Val Parameters)
If Not ValueIsFilled(Parameters) Then
Return "[]";
EndIf;
OPI_TypeConversion.GetArray(Parameters);
For N = 0 To Parameters.UBound() Do
CurrentParameter = Parameters[N];
CurrentParameter = ProcessParameter(CurrentParameter);
Parameters[N] = CurrentParameter;
EndDo;
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
If StrStartsWith(Parameters_, "NOT JSON") Then
Raise "JSON parameter array validation error!";
EndIf;
Return Parameters_;
EndFunction
Function ProcessParameter(CurrentParameter, AsObject = True)
CurrentType = TypeOf(CurrentParameter);
CurrentKey = "";
If CurrentType = Type("BinaryData") Then
CurrentParameter = Base64String(CurrentParameter);
CurrentKey = "BYTES";
ElsIf CurrentType = Type("UUID") Then
CurrentParameter = String(CurrentParameter);
CurrentKey = "TEXT";
ElsIf CurrentType = Type("Boolean") Then
CurrentParameter = ?(CurrentParameter, 1, 0);
CurrentKey = "INT";
ElsIf CurrentType = Type("Number") Then
CurrentKey = "DOUBLE";
ElsIf CurrentType = Type("Date") Then
CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter);
CurrentKey = "DATE";
Else
If CurrentType = Type("Structure") Or CurrentType = Type("Map") Then
If OPI_Tools.CollectionFieldExist(CurrentParameter, "BYTES") Then
CurrentParameter = ProcessBlobStructure(CurrentParameter);
CurrentKey = "BYTES";
Else
For Each ParamElement In CurrentParameter Do
CurrentKey = Upper(ParamElement.Key);
CurrentValue = ParamElement.Value;
CurrentParameter = ProcessParameter(CurrentValue, False);
Break;
EndDo;
EndIf;
Else
OPI_TypeConversion.GetLine(CurrentParameter);
CurrentKey = "TEXT";
EndIf;
EndIf;
If AsObject Then
CurrentParameter = New Structure(CurrentKey, CurrentParameter);
EndIf;
Return CurrentParameter;
EndFunction
Function ProcessBlobStructure(Val Value)
Bytea_ = "BYTES";
DataValue = Value[Bytea_];
If TypeOf(DataValue) = Type("BinaryData") Then
Value = Base64String(DataValue);
Else
DataFile = New File(String(DataValue));
If DataFile.Exist() Then
CurrentData = New BinaryData(String(DataValue));
Value = Base64String(CurrentData);
EndIf;
EndIf;
Return Value;
EndFunction
#EndRegion

View File

@@ -8,6 +8,7 @@
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_GreenAPI" file="core/Modules/OPI_GreenAPI.os"/>
<module name="OPI_MySQL" file="core/Modules/OPI_MySQL.os"/>
<module name="OPI_Neocities" file="core/Modules/OPI_Neocities.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Ozon" file="core/Modules/OPI_Ozon.os"/>

View File

@@ -2386,6 +2386,26 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure MYS_CommonMethods() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("SQL" , TestParameters);
MySQL_GenerateConnectionString(TestParameters);
MySQL_CreateConnection(TestParameters);
MySQL_CloseConnection(TestParameters);
MySQL_IsConnector(TestParameters);
MySQL_ExecuteSQLQuery(TestParameters);
EndProcedure
#EndRegion
#Region GreenAPI
Procedure GAPI_Account() Export
@@ -18460,6 +18480,172 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure MySQL_GenerateConnectionString(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
Result = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
// END
Result = StrReplace(Result, Password, "***");
Result = StrReplace(Result, Address , "127.0.0.1");
OPI_TestDataRetrieval.WriteLog(Result, "GenerateConnectionString", "MySQL");
OPI_TestDataRetrieval.Check_String(Result);
EndProcedure
Procedure MySQL_CreateConnection(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Result = OPI_MySQL.CreateConnection(ConnectionString);
OPI_MySQL.CloseConnection(Result);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CreateConnection", "MySQL");
OPI_TestDataRetrieval.Check_AddIn(Result, "AddIn.OPI_MySQL.Main");
EndProcedure
Procedure MySQL_CloseConnection(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.CloseConnection(Connection);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CloseConnection", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_IsConnector(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.IsConnector(Connection);
OPI_MySQL.CloseConnection(Result);
// END
OPI_TestDataRetrieval.WriteLog(Result, "IsConnector", "MySQL");
OPI_TestDataRetrieval.Check_True(Result);
EndProcedure
Procedure MySQL_ExecuteSQLQuery(FunctionParameters)
Image = FunctionParameters["Picture"];
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
OPI_MySQL.DeleteTable("users" , Connection); // SKIP
OPI_MySQL.DeleteTable("test_data", Connection); // SKIP
Deletion = OPI_MySQL.DeleteTable("test_table", Connection); // SKIP
OPI_TestDataRetrieval.WriteLog(Connection, "ExecuteSQLQuery (deleting 1)", "MySQL"); // SKIP
OPI_TestDataRetrieval.WriteLog(Connection, "ExecuteSQLQuery (connect)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_AddIn(Connection, "AddIn.OPI_MySQL.Main"); // SKIP
// CREATE
QueryText = "
|CREATE TABLE test_table (
|id INT AUTO_INCREMENT PRIMARY KEY,
|name VARCHAR(255),
|age INT,
|salary DOUBLE,
|amount FLOAT,
|type TINYINT UNSIGNED,
|date DATE,
|time TIME,
|data BLOB
|);";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Create)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// INSERT with parameters
QueryText = "
|INSERT INTO test_table (name, age, salary, amount, type, date, time, data)
|VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
ParameterArray = New Array;
ParameterArray.Add(New Structure("TEXT" , "Vitaly"));
ParameterArray.Add(New Structure("INT" , 25));
ParameterArray.Add(New Structure("DOUBLE", 1000.12));
ParameterArray.Add(New Structure("FLOAT" , 1000.12));
ParameterArray.Add(New Structure("UINT" , 1));
ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("TIME" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("BYTES" , Image));
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, ParameterArray, , Connection);
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Insert)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// SELECT (The result of this query is shown in the Result block)
QueryText = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
Blob = Result["data"][0]["data"]["BYTES"]; // SKIP
Result["data"][0]["data"]["BYTES"] = "Base64"; // SKIP
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
OPI_TestDataRetrieval.Check_Equality(Base64Value(Blob).Size(), Image.Size()); // SKIP
Closing = OPI_MySQL.CloseConnection(Connection);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CloseConnection (query)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
#EndRegion
#Region GreenAPI
Procedure GreenAPI_FormAccessParameters(FunctionParameters)

View File

@@ -57,9 +57,9 @@ Function GetAddIn(Val AddInName, Val Class = "Main") Export
AddIn = AttachAddInOnServer(AddInName, Class, Error);
If ValueIsFilled(Error) Then
Raise "Failed to initialize AddIn. "
+ "It may not be compatible with your OS. Error: "
+ Error;
FormAddInException(Error);
EndIf;
EndIf;
@@ -163,4 +163,20 @@ Function AddInsFolderOS() Export
EndFunction
Procedure FormAddInException(Val Error)
If OPI_Tools.IsWindows() Then
Text = "Failed to initialize AddIn. "
+ "Error text "
+ Error;
Else
Text = "Failed to initialize AddIn. Perhaps OpenSSL 3.x is missing. "
+ "Error text "
+ Error;
EndIf;
Raise Text;
EndProcedure
#EndRegion

View File

@@ -679,10 +679,10 @@ Function ExecuteSQLQuery(Val Module
, Val Connection = ""
, Val Tls = Undefined)
If Tls = Undefined Then
Result = Module.ExecuteSQLQuery(QueryText, Parameters, ForceResult, Connection);
Else
If ValueIsFilled(Tls) Then
Result = Module.ExecuteSQLQuery(QueryText, Parameters, ForceResult, Connection, Tls);
Else
Result = Module.ExecuteSQLQuery(QueryText, Parameters, ForceResult, Connection);
EndIf;
Return Result;

View File

@@ -55,6 +55,7 @@ Function GetTestingSectionMapping() Export
Sections.Insert("Viber" , 5);
Sections.Insert("Twitter" , 4);
Sections.Insert("PostgreSQL" , 5);
Sections.Insert("MySQL" , 5);
Sections.Insert("SQLite" , 5);
Sections.Insert("RCON" , 5);
Sections.Insert("YandexDisk" , 5);
@@ -91,6 +92,7 @@ Function GetTestingSectionMappingGA() Export
Sections.Insert("Viber" , StandardDependencies);
Sections.Insert("Twitter" , StandardDependencies);
Sections.Insert("PostgreSQL" , StandardDependencies);
Sections.Insert("MySQL" , StandardDependencies);
Sections.Insert("SQLite" , StandardDependencies);
Sections.Insert("RCON" , StandardDependencies);
Sections.Insert("YandexDisk" , StandardDependencies);
@@ -143,6 +145,7 @@ Function GetTestTable() Export
Postgres = "PostgreSQL";
GreenAPI = "GreenAPI";
RCON = "RCON";
MySQL = "MySQL";
TestTable = New ValueTable;
TestTable.Columns.Add("Method");
@@ -282,6 +285,7 @@ Function GetTestTable() Export
NewTest(TestTable, "SQLL_ORM" , "ORM" , SQLite);
NewTest(TestTable, "Postgres_CommonMethods" , "Common methods" , Postgres);
NewTest(TestTable, "Postgres_ORM" , "ORM" , Postgres);
NewTest(TestTable, "MYS_CommonMethods" , "Common methods" , MySQL);
NewTest(TestTable, "GAPI_GroupManagement" , "Group management" , GreenAPI);
NewTest(TestTable, "GAPI_MessageSending" , "Messages sending" , GreenAPI);
NewTest(TestTable, "GAPI_NotificationsReceiving" , "Notifications receiving" , GreenAPI);
@@ -1631,8 +1635,10 @@ Procedure Check_BitrixDeal(Val Result) Export
EndProcedure
Procedure Check_BitrixAttachment(Val Result) Export
ExpectsThat(Result["result"]).ИмеетТип("Map");
ExpectsThat(Result["result"]["attachmentId"]).Заполнено();
EndProcedure
Procedure Check_BitrixAvailableActions(Val Result, Val Count) Export
@@ -2044,7 +2050,9 @@ Procedure Check_YaMarketOk(Val Result) Export
EndProcedure
Procedure Check_MetrikaTags(Val Result) Export
ExpectsThat(Result["labels"]).ИмеетТип("Array");
EndProcedure
Procedure Check_MetrikaTag(Val Result, Val Name = "") Export
@@ -2059,19 +2067,27 @@ Procedure Check_MetrikaTag(Val Result, Val Name = "") Export
EndProcedure
Procedure Check_MetrikaSuccess(Val Result) Export
ExpectsThat(Result["success"]).Равно(True);
EndProcedure
Procedure Check_MetrikaCounter(Val Result) Export
ExpectsThat(Result["counter"]).ИмеетТип("Map").Заполнено();
EndProcedure
Procedure Check_MetrikaCounters(Val Result) Export
ExpectsThat(Result["counters"]).ИмеетТип("Array").Заполнено();
EndProcedure
Procedure Check_MetrikaActions(Val Result) Export
ExpectsThat(Result["operations"]).ИмеетТип("Array");
EndProcedure
Procedure Check_S3Success(Val Result) Export
@@ -2096,23 +2112,33 @@ Procedure Check_S3NotImplemented(Val Result) Export
EndProcedure
Procedure Check_AddIn(Val Result, Val TypeName) Export
ExpectsThat(String(TypeOf(Result))).Равно(TypeName);
EndProcedure
Procedure Check_Equality(Val Value1, Val Value2) Export
ExpectsThat(Value1).Равно(Value2);
EndProcedure
Procedure Check_SQLiteSuccess(Val Result) Export
ExpectsThat(Result["result"]).Равно(True);
EndProcedure
Procedure Check_SQLiteError(Val Result) Export
ExpectsThat(Result["result"]).Равно(False);
EndProcedure
Procedure Check_SQLiteRows(Val Result, Val Count) Export
ExpectsThat(Result["rows"]).Равно(Count);
EndProcedure
Procedure Check_SQLiteFieldsValues(Val Result, Val ValueStructure) Export
@@ -2124,7 +2150,9 @@ Procedure Check_SQLiteFieldsValues(Val Result, Val ValueStructure) Export
EndProcedure
Procedure Check_SQLiteNoRows(Val Result) Export
ExpectsThat(Result["data"].Count()).Равно(0);
EndProcedure
Procedure Check_ResultTrue(Val Result) Export
@@ -2603,32 +2631,64 @@ EndProcedure
Procedure ProcessSpecialOptionsSecrets(Val Library, Val Option, Value)
If Library = "bitrix24"
And Option = "url" Then
If Library = "bitrix24" Then
ProcessSecretsBitrix24(Option, Value);
ElsIf Library = "postgres" Then
ProcessSecretsPostgreSQL(Option, Value);
ElsIf Library = "mysql" Then
ProcessSecretsMySQL(Option, Value);
Else
Return;
EndIf;
EndProcedure
Procedure ProcessSecretsBitrix24(Val Option, Value)
If Option = "url" Then
Value = ?(StrFind(Value, "rest") > 0
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
, Value);
Return;
EndIf;
If Library = "postgres" Then
EndProcedure
If Option = "dbc" Then
Procedure ProcessSecretsPostgreSQL(Val Option, Value)
Value = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
If Option = "dbc" Then
Else
Value = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
If Option = "addr" Then
Value = "127.0.0.1";
Return;
EndIf;
ElsIf Option = "addr" Then
EndIf;
Value = "127.0.0.1";
Else
Return;
EndIf;
EndProcedure
Procedure ProcessSecretsMySQL(Val Option, Value)
If Option = "dbc" Then
Value = "mysql://bayselonarrend:***@127.0.0.1:3306/";
ElsIf Option = "addr" Then
Value = "127.0.0.1";
Else
Return;
EndIf;
EndProcedure

View File

@@ -57,9 +57,9 @@ Function GetAddIn(Val AddInName, Val Class = "Main") Export
AddIn = AttachAddInOnServer(AddInName, Class, Error);
If ValueIsFilled(Error) Then
Raise "Failed to initialize AddIn. "
+ "It may not be compatible with your OS. Error: "
+ Error;
FormAddInException(Error);
EndIf;
EndIf;
@@ -163,4 +163,20 @@ Function AddInsFolderOS() Export
EndFunction
Procedure FormAddInException(Val Error)
If OPI_Tools.IsWindows() Then
Text = "Failed to initialize AddIn. "
+ "Error text "
+ Error;
Else
Text = "Failed to initialize AddIn. Perhaps OpenSSL 3.x is missing. "
+ "Error text "
+ Error;
EndIf;
Raise Text;
EndProcedure
#EndRegion

View File

@@ -0,0 +1,582 @@
// OneScript: ./OInt/core/Modules/OPI_MySQL.os
// Lib: MySQL
// CLI: mysql
// MIT License
// Copyright (c) 2023 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check constructor-function-return-section
//@skip-check doc-comment-collection-item-type
// Uncomment if OneScript is executed
// #Use "../../tools"
#Region Public
#Region CommonMethods
// Create Connection !NOCLI
// Creates a connection to the specified base
//
// Parameters:
// ConnectionString - String - Connection string. See GenerateConnectionString - sting
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Arbitrary - Connector object or structure with error information
Function CreateConnection(Val ConnectionString = "", Val Tls = "") Export
If IsConnector(ConnectionString) Then
Return ConnectionString;
EndIf;
OPI_TypeConversion.GetLine(ConnectionString);
OPI_Tools.RestoreEscapeSequences(ConnectionString);
Connector = OPI_AddIns.GetAddIn("MySQL");
Connector.ConnectionString = ConnectionString;
Result = Connector.Connect();
Result = OPI_Tools.JsonToStructure(Result, False);
Return ?(Result["result"], Connector, Result);
EndFunction
// Close connection !NOCLI
// Explicitly closes the passed connection
//
// Parameters:
// Connection - Arbitrary - AddIn object with open connection - dbc
//
// Returns:
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
If IsConnector(Connection) Then
Result = Connection.Close();
Result = OPI_Tools.JsonToStructure(Result, False);
Else
Result = New Structure("result,error", False, "It's not a connection");
EndIf;
Return Result;
EndFunction
// Is connector !NOCLI
// Checks that the value is an object of an MySQL AddIn
//
// Parameters:
// Value - Arbitrary - Value to check - value
//
// Returns:
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return String(TypeOf(Value)) = "AddIn.OPI_MySQL.Main";
EndFunction
// Execute SQL query
// Executes an arbitrary SQL query
//
// Note
// Query parameters are specified as an array of structures of the following type: `{'Type': 'Value'}`.^^
// The list of available types is described on the initial page of the MySQL library documentation
// Without specifying the `ForcifyResult` flag, result data is returned only for queries beginning with `SELECT` keyword^^
// For other queries, `result:true` or `false` with error text is returned
//
// Parameters:
// QueryText - String - Database query text - sql
// Parameters - Array Of Arbitrary - Array of positional parameters of the request - params
// ForceResult - Boolean - Includes an attempt to retrieve the result, even for nonSELECT queries - force
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function ExecuteSQLQuery(Val QueryText
, Val Parameters = ""
, Val ForceResult = False
, Val Connection = ""
, Val Tls = "") Export
OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
If IsConnector(Connection) Then
CloseConnection = False;
Connector = Connection;
Else
CloseConnection = True;
Connector = CreateConnection(Connection, Tls);
EndIf;
If Not IsConnector(Connector) Then
Return Connector;
EndIf;
Result = Connector.Execute(QueryText, Parameters_, ForceResult);
If CloseConnection Then
CloseConnection(Connector);
EndIf;
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
// Generate connection string
// Forms a connection string from the passed data
//
// Parameters:
// Address - String - IP address or domain name of the server - addr
// Base - String - Name of the database to connect - db
// Login - String - MySQL user - login
// Password - String - MySQL password - pass
// Port - String - Connection port - port
//
// Returns:
// String - MySQL database connection string
Function GenerateConnectionString(Val Address, Val Base, Val Login, Val Password = "", Val Port = "3306") Export
OPI_TypeConversion.GetLine(Address);
OPI_TypeConversion.GetLine(Login);
OPI_TypeConversion.GetLine(Base);
OPI_TypeConversion.GetLine(Port);
OPI_TypeConversion.GetLine(Password);
Port = ?(ValueIsFilled(Port), ":" + Port, Port);
Password = ?(ValueIsFilled(Password), ":" + Password, Password);
StringTemplate = "mysql://%1%2@%3%4/%5";
ConnectionString = StrTemplate(StringTemplate, Login, Password, Address, Port, Base);
Return ConnectionString;
EndFunction
// Get TLS Settings
// Forms settings for using TLS
//
// Note
// Tls settings can only be set when a connection is created: explicitly, by using the `OpenConnection` function^^
// or implicit, when passing the connection string to ORM methods.
// Passing Tls settings together with passing an already created connection to the `Connection` parameter will be ignored
//
// Parameters:
// DisableCertVerification - Boolean - Allows to work with invalid certificates, including self signed - trust
// CertFilepath - String - Path to the root PEM file of the certificate if it is not in the system repository - cert
//
// Returns:
// Structure Of KeyAndValue - Structure of TLS connection settings
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
Return OPI_AddIns.GetTlsSettings(DisableCertVerification, CertFilepath);
EndFunction
#EndRegion
#Region ORM
// Create database
// Creates a database with the specified name
//
// Parameters:
// Base - String - Database name - base
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function CreateDatabase(Val Base, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.CreateDatabase(OPI_MySQL, Base, Connection, Tls);
Return Result;
EndFunction
// Drop database
// Deletes the database
//
// Parameters:
// Base - String - Database name - base
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function DeleteDatabase(Val Base, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteDatabase(OPI_MySQL, Base, Connection, Tls);
Return Result;
EndFunction
// Create table
// Creates an empty table in the database
//
// Note
// The list of available types is described on the initial page of the MySQL library documentation
//
// Parameters:
// Table - String - Table name - table
// ColoumnsStruct - Structure Of KeyAndValue - Column structure: Key > Name, Value > Data type - cols
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.CreateTable(OPI_MySQL, Table, ColoumnsStruct, Connection, Tls);
Return Result;
EndFunction
// Clear table
// Clears the database table
//
// Parameters:
// Table - String - Table name - table
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function ClearTable(Val Table, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteRecords(OPI_MySQL, Table, , Connection, Tls);
Return Result;
EndFunction
// Delete table
// Deletes a table from the database
//
// Parameters:
// Table - String - Table name - table
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function DeleteTable(Val Table, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteTable(OPI_MySQL, Table, Connection, Tls);
Return Result;
EndFunction
// Add rows
// Adds new rows to the table
//
// Note
// Record data is specified as an array of structures of the following type:^
// `{'Field name 1': {'Type': 'Value'}, 'Field name 2': {'Type': 'Value'},...}`
// The list of available types is described on the initial page of the MySQL library documentation
//
// Parameters:
// Table - String - Table name - table
// DataArray - Array of Structure - An array of string data structures: Key > field, Value > field value - rows
// Transaction - Boolean - True > adding records to transactions with rollback on error - trn
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function AddRecords(Val Table, Val DataArray, Val Transaction = True, Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.AddRecords(OPI_MySQL, Table, DataArray, Transaction, Connection, Tls);
Return Result;
EndFunction
// Get records
// Gets records from the selected table
//
// Parameters:
// Table - String - Table name - table
// Fields - Array Of String - Fields for selection - fields
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
// Sort - Structure Of KeyAndValue - Sorting: Key > field name, Value > direction (ASC, DESC) - order
// Count - Number - Limiting the number of received strings - limit
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function GetRecords(Val Table
, Val Fields = "*"
, Val Filters = ""
, Val Sort = ""
, Val Count = ""
, Val Connection = ""
, Val Tls = "") Export
Result = OPI_SQLQueries.GetRecords(OPI_MySQL
, Table
, Fields
, Filters
, Sort
, Count
, Connection
, Tls);
Return Result;
EndFunction
// Update records
// Updates the value of records by selected criteria
//
// Note
// Record data is specified as an array of structures of the following type:^
// `{'Field name 1': {'Type': 'Value'}, 'Field name 2': {'Type': 'Value'},...}`
// The list of available types is described on the initial page of the MySQL library documentation
//
// Parameters:
// Table - String - Table name - table
// ValueStructure - Structure Of KeyAndValue - Values structure: Key > field, Value > field value - values
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function UpdateRecords(Val Table
, Val ValueStructure
, Val Filters = ""
, Val Connection = ""
, Val Tls = "") Export
Result = OPI_SQLQueries.UpdateRecords(OPI_MySQL, Table, ValueStructure, Filters, Connection, Tls);
Return Result;
EndFunction
// Delete records
// Deletes records from the table
//
// Parameters:
// Table - String - Table name - table
// Filters - Array of Structure - Filters array. See GetRecordsFilterStrucutre - filter
// Connection - String, Arbitrary - Connection or connection string - dbc
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Map Of KeyAndValue - Result of query execution
Function DeleteRecords(Val Table, Val Filters = "", Val Connection = "", Val Tls = "") Export
Result = OPI_SQLQueries.DeleteRecords(OPI_MySQL, Table, Filters, Connection, Tls);
Return Result;
EndFunction
// Get records filter strucutre
// Gets the template structure for filtering records in ORM queries
//
// Note
// The use of the `raw` feature is necessary for compound constructions like `BEETWEEN`.^^
// For example: with `raw:false` the filter `type:BETWEEN` `value:10 AND 20` will be interpolated as `BETWEEN ?1 `^^
// where `?1 = "10 AND 20,"' which would cause an error.
// In such a case, you must use `raw:true` to set the condition directly in the query text
//
// Parameters:
// Clear - Boolean - True > structure with empty valuse, False > field descriptions at values - empty
//
// Returns:
// Structure Of KeyAndValue - Record filter element
Function GetRecordsFilterStrucutre(Val Clear = False) Export
Return OPI_SQLQueries.GetRecordsFilterStrucutre(Clear);
EndFunction
#EndRegion
#EndRegion
#Region Internal
Function GetFeatures() Export
Features = New Map;
Features.Insert("ParameterNumeration", False);
Features.Insert("ParameterMarker" , "?");
Return Features;
EndFunction
#EndRegion
#Region Private
Function ProcessParameters(Val Parameters)
If Not ValueIsFilled(Parameters) Then
Return "[]";
EndIf;
OPI_TypeConversion.GetArray(Parameters);
For N = 0 To Parameters.UBound() Do
CurrentParameter = Parameters[N];
CurrentParameter = ProcessParameter(CurrentParameter);
Parameters[N] = CurrentParameter;
EndDo;
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
If StrStartsWith(Parameters_, "NOT JSON") Then
Raise "JSON parameter array validation error!";
EndIf;
Return Parameters_;
EndFunction
Function ProcessParameter(CurrentParameter, AsObject = True)
CurrentType = TypeOf(CurrentParameter);
CurrentKey = "";
If CurrentType = Type("BinaryData") Then
CurrentParameter = Base64String(CurrentParameter);
CurrentKey = "BYTES";
ElsIf CurrentType = Type("UUID") Then
CurrentParameter = String(CurrentParameter);
CurrentKey = "TEXT";
ElsIf CurrentType = Type("Boolean") Then
CurrentParameter = ?(CurrentParameter, 1, 0);
CurrentKey = "INT";
ElsIf CurrentType = Type("Number") Then
CurrentKey = "DOUBLE";
ElsIf CurrentType = Type("Date") Then
CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter);
CurrentKey = "DATE";
Else
If CurrentType = Type("Structure") Or CurrentType = Type("Map") Then
If OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTES") Then
CurrentParameter = ProcessBlobStructure(CurrentParameter);
CurrentKey = "BYTES";
Else
For Each ParamElement In CurrentParameter Do
CurrentKey = Upper(ParamElement.Key);
CurrentValue = ParamElement.Value;
CurrentParameter = ProcessParameter(CurrentValue, False);
Break;
EndDo;
EndIf;
Else
OPI_TypeConversion.GetLine(CurrentParameter);
CurrentKey = "TEXT";
EndIf;
EndIf;
If AsObject Then
CurrentParameter = New Structure(CurrentKey, CurrentParameter);
EndIf;
Return CurrentParameter;
EndFunction
Function ProcessBlobStructure(Val Value)
Bytea_ = "BYTES";
DataValue = Value[Bytea_];
If TypeOf(DataValue) = Type("BinaryData") Then
Value = Base64String(DataValue);
Else
DataFile = New File(String(DataValue));
If DataFile.Exists() Then
CurrentData = New BinaryData(String(DataValue));
Value = Base64String(CurrentData);
EndIf;
EndIf;
Return Value;
EndFunction
#EndRegion

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="080b004e-2bff-48bc-a034-c69937b69323">
<name>OPI_MySQL</name>
<synonym>
<key>en</key>
<value>MySQL (OPI)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@@ -3,7 +3,7 @@
<name>OPI_Neocities</name>
<synonym>
<key>en</key>
<value>Neocities (OPI)</value>
<value>Neocities (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@@ -3,7 +3,7 @@
<name>OPI_PostgreSQL</name>
<synonym>
<key>en</key>
<value>Postgre SQL (OpenIntegrations)</value>
<value>PostgreSQL (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@@ -679,10 +679,10 @@ Function ExecuteSQLQuery(Val Module
, Val Connection = ""
, Val Tls = Undefined)
If Tls = Undefined Then
Result = Module.ExecuteSQLQuery(QueryText, Parameters, ForceResult, Connection);
Else
If ValueIsFilled(Tls) Then
Result = Module.ExecuteSQLQuery(QueryText, Parameters, ForceResult, Connection, Tls);
Else
Result = Module.ExecuteSQLQuery(QueryText, Parameters, ForceResult, Connection);
EndIf;
Return Result;

View File

@@ -55,6 +55,7 @@ Function GetTestingSectionMapping() Export
Sections.Insert("Viber" , 5);
Sections.Insert("Twitter" , 4);
Sections.Insert("PostgreSQL" , 5);
Sections.Insert("MySQL" , 5);
Sections.Insert("SQLite" , 5);
Sections.Insert("RCON" , 5);
Sections.Insert("YandexDisk" , 5);
@@ -91,6 +92,7 @@ Function GetTestingSectionMappingGA() Export
Sections.Insert("Viber" , StandardDependencies);
Sections.Insert("Twitter" , StandardDependencies);
Sections.Insert("PostgreSQL" , StandardDependencies);
Sections.Insert("MySQL" , StandardDependencies);
Sections.Insert("SQLite" , StandardDependencies);
Sections.Insert("RCON" , StandardDependencies);
Sections.Insert("YandexDisk" , StandardDependencies);
@@ -143,6 +145,7 @@ Function GetTestTable() Export
Postgres = "PostgreSQL";
GreenAPI = "GreenAPI";
RCON = "RCON";
MySQL = "MySQL";
TestTable = New ValueTable;
TestTable.Columns.Add("Method");
@@ -282,6 +285,7 @@ Function GetTestTable() Export
NewTest(TestTable, "SQLL_ORM" , "ORM" , SQLite);
NewTest(TestTable, "Postgres_CommonMethods" , "Common methods" , Postgres);
NewTest(TestTable, "Postgres_ORM" , "ORM" , Postgres);
NewTest(TestTable, "MYS_CommonMethods" , "Common methods" , MySQL);
NewTest(TestTable, "GAPI_GroupManagement" , "Group management" , GreenAPI);
NewTest(TestTable, "GAPI_MessageSending" , "Messages sending" , GreenAPI);
NewTest(TestTable, "GAPI_NotificationsReceiving" , "Notifications receiving" , GreenAPI);
@@ -1631,8 +1635,10 @@ Procedure Check_BitrixDeal(Val Result) Export
EndProcedure
Procedure Check_BitrixAttachment(Val Result) Export
ExpectsThat(Result["result"]).ИмеетТип("Map");
ExpectsThat(Result["result"]["attachmentId"]).Заполнено();
EndProcedure
Procedure Check_BitrixAvailableActions(Val Result, Val Count) Export
@@ -2044,7 +2050,9 @@ Procedure Check_YaMarketOk(Val Result) Export
EndProcedure
Procedure Check_MetrikaTags(Val Result) Export
ExpectsThat(Result["labels"]).ИмеетТип("Array");
EndProcedure
Procedure Check_MetrikaTag(Val Result, Val Name = "") Export
@@ -2059,19 +2067,27 @@ Procedure Check_MetrikaTag(Val Result, Val Name = "") Export
EndProcedure
Procedure Check_MetrikaSuccess(Val Result) Export
ExpectsThat(Result["success"]).Равно(True);
EndProcedure
Procedure Check_MetrikaCounter(Val Result) Export
ExpectsThat(Result["counter"]).ИмеетТип("Map").Заполнено();
EndProcedure
Procedure Check_MetrikaCounters(Val Result) Export
ExpectsThat(Result["counters"]).ИмеетТип("Array").Заполнено();
EndProcedure
Procedure Check_MetrikaActions(Val Result) Export
ExpectsThat(Result["operations"]).ИмеетТип("Array");
EndProcedure
Procedure Check_S3Success(Val Result) Export
@@ -2096,23 +2112,33 @@ Procedure Check_S3NotImplemented(Val Result) Export
EndProcedure
Procedure Check_AddIn(Val Result, Val TypeName) Export
ExpectsThat(String(TypeOf(Result))).Равно(TypeName);
EndProcedure
Procedure Check_Equality(Val Value1, Val Value2) Export
ExpectsThat(Value1).Равно(Value2);
EndProcedure
Procedure Check_SQLiteSuccess(Val Result) Export
ExpectsThat(Result["result"]).Равно(True);
EndProcedure
Procedure Check_SQLiteError(Val Result) Export
ExpectsThat(Result["result"]).Равно(False);
EndProcedure
Procedure Check_SQLiteRows(Val Result, Val Count) Export
ExpectsThat(Result["rows"]).Равно(Count);
EndProcedure
Procedure Check_SQLiteFieldsValues(Val Result, Val ValueStructure) Export
@@ -2124,7 +2150,9 @@ Procedure Check_SQLiteFieldsValues(Val Result, Val ValueStructure) Export
EndProcedure
Procedure Check_SQLiteNoRows(Val Result) Export
ExpectsThat(Result["data"].Count()).Равно(0);
EndProcedure
Procedure Check_ResultTrue(Val Result) Export
@@ -2603,32 +2631,64 @@ EndProcedure
Procedure ProcessSpecialOptionsSecrets(Val Library, Val Option, Value)
If Library = "bitrix24"
And Option = "url" Then
If Library = "bitrix24" Then
ProcessSecretsBitrix24(Option, Value);
ElsIf Library = "postgres" Then
ProcessSecretsPostgreSQL(Option, Value);
ElsIf Library = "mysql" Then
ProcessSecretsMySQL(Option, Value);
Else
Return;
EndIf;
EndProcedure
Procedure ProcessSecretsBitrix24(Val Option, Value)
If Option = "url" Then
Value = ?(StrFind(Value, "rest") > 0
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
, Value);
Return;
EndIf;
If Library = "postgres" Then
EndProcedure
If Option = "dbc" Then
Procedure ProcessSecretsPostgreSQL(Val Option, Value)
Value = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
If Option = "dbc" Then
Else
Value = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
If Option = "addr" Then
Value = "127.0.0.1";
Return;
EndIf;
ElsIf Option = "addr" Then
EndIf;
Value = "127.0.0.1";
Else
Return;
EndIf;
EndProcedure
Procedure ProcessSecretsMySQL(Val Option, Value)
If Option = "dbc" Then
Value = "mysql://bayselonarrend:***@127.0.0.1:3306/";
ElsIf Option = "addr" Then
Value = "127.0.0.1";
Else
Return;
EndIf;
EndProcedure

View File

@@ -2386,6 +2386,26 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure MYS_CommonMethods() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Picture" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("SQL" , TestParameters);
MySQL_GenerateConnectionString(TestParameters);
MySQL_CreateConnection(TestParameters);
MySQL_CloseConnection(TestParameters);
MySQL_IsConnector(TestParameters);
MySQL_ExecuteSQLQuery(TestParameters);
EndProcedure
#EndRegion
#Region GreenAPI
Procedure GAPI_Account() Export
@@ -18460,6 +18480,172 @@ EndProcedure
#EndRegion
#Region MySQL
Procedure MySQL_GenerateConnectionString(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
Result = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
// END
Result = StrReplace(Result, Password, "***");
Result = StrReplace(Result, Address , "127.0.0.1");
OPI_TestDataRetrieval.WriteLog(Result, "GenerateConnectionString", "MySQL");
OPI_TestDataRetrieval.Check_String(Result);
EndProcedure
Procedure MySQL_CreateConnection(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Result = OPI_MySQL.CreateConnection(ConnectionString);
OPI_MySQL.CloseConnection(Result);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CreateConnection", "MySQL");
OPI_TestDataRetrieval.Check_AddIn(Result, "AddIn.OPI_MySQL.Main");
EndProcedure
Procedure MySQL_CloseConnection(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.CloseConnection(Connection);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CloseConnection", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
Procedure MySQL_IsConnector(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
Result = OPI_MySQL.IsConnector(Connection);
OPI_MySQL.CloseConnection(Result);
// END
OPI_TestDataRetrieval.WriteLog(Result, "IsConnector", "MySQL");
OPI_TestDataRetrieval.Check_True(Result);
EndProcedure
Procedure MySQL_ExecuteSQLQuery(FunctionParameters)
Image = FunctionParameters["Picture"];
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "test_data";
ConnectionString = OPI_MySQL.GenerateConnectionString(Address, Base, Login, Password);
Connection = OPI_MySQL.CreateConnection(ConnectionString);
OPI_MySQL.DeleteTable("users" , Connection); // SKIP
OPI_MySQL.DeleteTable("test_data", Connection); // SKIP
Deletion = OPI_MySQL.DeleteTable("test_table", Connection); // SKIP
OPI_TestDataRetrieval.WriteLog(Connection, "ExecuteSQLQuery (deleting 1)", "MySQL"); // SKIP
OPI_TestDataRetrieval.WriteLog(Connection, "ExecuteSQLQuery (connect)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_AddIn(Connection, "AddIn.OPI_MySQL.Main"); // SKIP
// CREATE
QueryText = "
|CREATE TABLE test_table (
|id INT AUTO_INCREMENT PRIMARY KEY,
|name VARCHAR(255),
|age INT,
|salary DOUBLE,
|amount FLOAT,
|type TINYINT UNSIGNED,
|date DATE,
|time TIME,
|data BLOB
|);";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Create)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// INSERT with parameters
QueryText = "
|INSERT INTO test_table (name, age, salary, amount, type, date, time, data)
|VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
ParameterArray = New Array;
ParameterArray.Add(New Structure("TEXT" , "Vitaly"));
ParameterArray.Add(New Structure("INT" , 25));
ParameterArray.Add(New Structure("DOUBLE", 1000.12));
ParameterArray.Add(New Structure("FLOAT" , 1000.12));
ParameterArray.Add(New Structure("UINT" , 1));
ParameterArray.Add(New Structure("DATE" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("TIME" , OPI_Tools.GetCurrentDate()));
ParameterArray.Add(New Structure("BYTES" , Image));
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, ParameterArray, , Connection);
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery (Insert)", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
// SELECT (The result of this query is shown in the Result block)
QueryText = "SELECT name, age, salary, amount, type, date, time, data FROM test_table;";
Result = OPI_MySQL.ExecuteSQLQuery(QueryText, , , Connection);
Blob = Result["data"][0]["data"]["BYTES"]; // SKIP
Result["data"][0]["data"]["BYTES"] = "Base64"; // SKIP
OPI_TestDataRetrieval.WriteLog(Result, "ExecuteSQLQuery", "MySQL"); // SKIP
OPI_TestDataRetrieval.Check_ResultTrue(Result); // SKIP
OPI_TestDataRetrieval.Check_Equality(Base64Value(Blob).Size(), Image.Size()); // SKIP
Closing = OPI_MySQL.CloseConnection(Connection);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CloseConnection (query)", "MySQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
#EndRegion
#Region GreenAPI
Procedure GreenAPI_FormAccessParameters(FunctionParameters)

View File

@@ -7,7 +7,7 @@
</synonym>
<synonym>
<key>en</key>
<value>Tests for YaxUnit (OPI)</value>
<value>Tests for YaxUnit (OpenIntegrations)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@@ -53,6 +53,7 @@
<commonModules>CommonModule.OPI_GoogleDrive</commonModules>
<commonModules>CommonModule.OPI_GoogleSheets</commonModules>
<commonModules>CommonModule.OPI_GoogleWorkspace</commonModules>
<commonModules>CommonModule.OPI_MySQL</commonModules>
<commonModules>CommonModule.OPI_Neocities</commonModules>
<commonModules>CommonModule.OPI_Notion</commonModules>
<commonModules>CommonModule.OPI_Ozon</commonModules>

View File

@@ -0,0 +1,527 @@
Function ПолучитьСостав() Export
CompositionTable = New ValueTable();
CompositionTable.Columns.Add("Библиотека");
CompositionTable.Columns.Add("Модуль");
CompositionTable.Columns.Add("Метод");
CompositionTable.Columns.Add("МетодПоиска");
CompositionTable.Columns.Add("Параметр");
CompositionTable.Columns.Add("Описание");
CompositionTable.Columns.Add("ОписаниеМетода");
CompositionTable.Columns.Add("Область");
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ExecuteSQLQuery";
NewLine.МетодПоиска = "EXECUTESQLQUERY";
NewLine.Параметр = "--sql";
NewLine.Описание = "Database query text";
NewLine.Область = "Common methods";
NewLine.ОписаниеМетода = "Executes an arbitrary SQL query";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ExecuteSQLQuery";
NewLine.МетодПоиска = "EXECUTESQLQUERY";
NewLine.Параметр = "--params";
NewLine.Описание = "Array of positional parameters of the request (optional, def. val. - Empty value)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ExecuteSQLQuery";
NewLine.МетодПоиска = "EXECUTESQLQUERY";
NewLine.Параметр = "--force";
NewLine.Описание = "Includes an attempt to retrieve the result, even for nonSELECT queries (optional, def. val. - No)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ExecuteSQLQuery";
NewLine.МетодПоиска = "EXECUTESQLQUERY";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ExecuteSQLQuery";
NewLine.МетодПоиска = "EXECUTESQLQUERY";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GenerateConnectionString";
NewLine.МетодПоиска = "GENERATECONNECTIONSTRING";
NewLine.Параметр = "--addr";
NewLine.Описание = "IP address or domain name of the server";
NewLine.Область = "Common methods";
NewLine.ОписаниеМетода = "Forms a connection string from the passed data";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GenerateConnectionString";
NewLine.МетодПоиска = "GENERATECONNECTIONSTRING";
NewLine.Параметр = "--db";
NewLine.Описание = "Name of the database to connect";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GenerateConnectionString";
NewLine.МетодПоиска = "GENERATECONNECTIONSTRING";
NewLine.Параметр = "--login";
NewLine.Описание = "MySQL user";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GenerateConnectionString";
NewLine.МетодПоиска = "GENERATECONNECTIONSTRING";
NewLine.Параметр = "--pass";
NewLine.Описание = "MySQL password (optional, def. val. - Empty value)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GenerateConnectionString";
NewLine.МетодПоиска = "GENERATECONNECTIONSTRING";
NewLine.Параметр = "--port";
NewLine.Описание = "Connection port (optional, def. val. - 3306)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetTlsSettings";
NewLine.МетодПоиска = "GETTLSSETTINGS";
NewLine.Параметр = "--trust";
NewLine.Описание = "Allows to work with invalid certificates, including self signed";
NewLine.Область = "Common methods";
NewLine.ОписаниеМетода = "Forms settings for using TLS";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetTlsSettings";
NewLine.МетодПоиска = "GETTLSSETTINGS";
NewLine.Параметр = "--cert";
NewLine.Описание = "Path to the root PEM file of the certificate if it is not in the system repository (optional, def. val. - Empty value)";
NewLine.Область = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "CreateDatabase";
NewLine.МетодПоиска = "CREATEDATABASE";
NewLine.Параметр = "--base";
NewLine.Описание = "Database name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Creates a database with the specified name";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "CreateDatabase";
NewLine.МетодПоиска = "CREATEDATABASE";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "CreateDatabase";
NewLine.МетодПоиска = "CREATEDATABASE";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteDatabase";
NewLine.МетодПоиска = "DELETEDATABASE";
NewLine.Параметр = "--base";
NewLine.Описание = "Database name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Deletes the database";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteDatabase";
NewLine.МетодПоиска = "DELETEDATABASE";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteDatabase";
NewLine.МетодПоиска = "DELETEDATABASE";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "CreateTable";
NewLine.МетодПоиска = "CREATETABLE";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Creates an empty table in the database";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "CreateTable";
NewLine.МетодПоиска = "CREATETABLE";
NewLine.Параметр = "--cols";
NewLine.Описание = "Column structure: Key > Name, Value > Data type";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "CreateTable";
NewLine.МетодПоиска = "CREATETABLE";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "CreateTable";
NewLine.МетодПоиска = "CREATETABLE";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ClearTable";
NewLine.МетодПоиска = "CLEARTABLE";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Clears the database table";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ClearTable";
NewLine.МетодПоиска = "CLEARTABLE";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "ClearTable";
NewLine.МетодПоиска = "CLEARTABLE";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteTable";
NewLine.МетодПоиска = "DELETETABLE";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Deletes a table from the database";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteTable";
NewLine.МетодПоиска = "DELETETABLE";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteTable";
NewLine.МетодПоиска = "DELETETABLE";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "AddRecords";
NewLine.МетодПоиска = "ADDRECORDS";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Adds new rows to the table";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "AddRecords";
NewLine.МетодПоиска = "ADDRECORDS";
NewLine.Параметр = "--rows";
NewLine.Описание = "An array of string data structures: Key > field, Value > field value";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "AddRecords";
NewLine.МетодПоиска = "ADDRECORDS";
NewLine.Параметр = "--trn";
NewLine.Описание = "True > adding records to transactions with rollback on error (optional, def. val. - Yes)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "AddRecords";
NewLine.МетодПоиска = "ADDRECORDS";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "AddRecords";
NewLine.МетодПоиска = "ADDRECORDS";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecords";
NewLine.МетодПоиска = "GETRECORDS";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Gets records from the selected table";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecords";
NewLine.МетодПоиска = "GETRECORDS";
NewLine.Параметр = "--fields";
NewLine.Описание = "Fields for selection (optional, def. val. - *)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecords";
NewLine.МетодПоиска = "GETRECORDS";
NewLine.Параметр = "--filter";
NewLine.Описание = "Filters array. See GetRecordsFilterStrucutre (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecords";
NewLine.МетодПоиска = "GETRECORDS";
NewLine.Параметр = "--order";
NewLine.Описание = "Sorting: Key > field name, Value > direction (ASC, DESC) (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecords";
NewLine.МетодПоиска = "GETRECORDS";
NewLine.Параметр = "--limit";
NewLine.Описание = "Limiting the number of received strings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecords";
NewLine.МетодПоиска = "GETRECORDS";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecords";
NewLine.МетодПоиска = "GETRECORDS";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "UpdateRecords";
NewLine.МетодПоиска = "UPDATERECORDS";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Updates the value of records by selected criteria";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "UpdateRecords";
NewLine.МетодПоиска = "UPDATERECORDS";
NewLine.Параметр = "--values";
NewLine.Описание = "Values structure: Key > field, Value > field value";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "UpdateRecords";
NewLine.МетодПоиска = "UPDATERECORDS";
NewLine.Параметр = "--filter";
NewLine.Описание = "Filters array. See GetRecordsFilterStrucutre (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "UpdateRecords";
NewLine.МетодПоиска = "UPDATERECORDS";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "UpdateRecords";
NewLine.МетодПоиска = "UPDATERECORDS";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteRecords";
NewLine.МетодПоиска = "DELETERECORDS";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Deletes records from the table";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteRecords";
NewLine.МетодПоиска = "DELETERECORDS";
NewLine.Параметр = "--filter";
NewLine.Описание = "Filters array. See GetRecordsFilterStrucutre (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteRecords";
NewLine.МетодПоиска = "DELETERECORDS";
NewLine.Параметр = "--dbc";
NewLine.Описание = "Connection or connection string (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "DeleteRecords";
NewLine.МетодПоиска = "DELETERECORDS";
NewLine.Параметр = "--tls";
NewLine.Описание = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "mysql";
NewLine.Модуль = "OPI_MySQL";
NewLine.Метод = "GetRecordsFilterStrucutre";
NewLine.МетодПоиска = "GETRECORDSFILTERSTRUCUTRE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - No)";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Gets the template structure for filtering records in ORM queries";
Return CompositionTable;
EndFunction

View File

@@ -16,6 +16,7 @@
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("greenapi", "OPI_GreenAPI");
СоответствиеКомандМодулей.Вставить("mysql", "OPI_MySQL");
СоответствиеКомандМодулей.Вставить("neocities", "OPI_Neocities");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("ozon", "OPI_Ozon");

View File

@@ -486,71 +486,71 @@
Функция ОбработатьПараметр(ТекущийПараметр, КакОбъект = Истина)
ТекущийТип = ТипЗнч(ТекущийПараметр);
ТекущийКлюч = "";
ТекущийТип = ТипЗнч(ТекущийПараметр);
ТекущийКлюч = "";
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
ТекущийПараметр = Base64Строка(ТекущийПараметр);
ТекущийКлюч = "BYTES";
ТекущийПараметр = Base64Строка(ТекущийПараметр);
ТекущийКлюч = "BYTES";
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
ТекущийПараметр = Строка(ТекущийПараметр);
ТекущийКлюч = "TEXT";
ТекущийПараметр = Строка(ТекущийПараметр);
ТекущийКлюч = "TEXT";
ИначеЕсли ТекущийТип = Тип("Булево") Тогда
ИначеЕсли ТекущийТип = Тип("Булево") Тогда
ТекущийПараметр = ?(ТекущийПараметр, 1, 0);
ТекущийКлюч = "INT";
ТекущийПараметр = ?(ТекущийПараметр, 1, 0);
ТекущийКлюч = "INT";
ИначеЕсли ТекущийТип = Тип("Число") Тогда
ИначеЕсли ТекущийТип = Тип("Число") Тогда
ТекущийКлюч = "DOUBLE";
ТекущийКлюч = "DOUBLE";
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр);
ТекущийКлюч = "DATE";
ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр);
ТекущийКлюч = "DATE";
Иначе
Иначе
Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда
Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда
Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ТекущийКлюч = "BYTES";
Иначе
Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ТекущийКлюч = "BYTES";
Иначе
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
ТекущийПараметр = ОбработатьПараметр(ТекущееЗначение, Ложь);
Прервать;
КонецЦикла;
КонецЕсли;
Иначе
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийКлюч = "TEXT";
Иначе
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийКлюч = "TEXT";
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если КакОбъект Тогда
ТекущийПараметр = Новый Структура(ТекущийКлюч, ТекущийПараметр);
ТекущийПараметр = Новый Структура(ТекущийКлюч, ТекущийПараметр);
КонецЕсли;
Возврат ТекущийПараметр;
Возврат ТекущийПараметр;
КонецФункции

View File

@@ -18634,7 +18634,7 @@
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP
Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение);
// END

View File

@@ -57,9 +57,9 @@
Компонента = ПодключитьКомпонентуНаСервере(ИмяКомпоненты, Класс, Ошибка);
Если ЗначениеЗаполнено(Ошибка) Тогда
СформироватьИсключениеОшибкиКомпоненты(Ошибка);
СформироватьИсключениеКомпоненты(Ошибка);
КонецЕсли;
КонецЕсли;
@@ -163,8 +163,8 @@
КонецФункции
Процедура СформироватьИсключениеОшибкиКомпоненты(Знач Ошибка)
Процедура СформироватьИсключениеКомпоненты(Знач Ошибка)
Если OPI_Инструменты.ЭтоWindows() Тогда
Текст = "Не удалось инициализировать внешнюю компоненту. "
+ "Текст ошибки: "
@@ -174,9 +174,9 @@
+ "Текст ошибки: "
+ Ошибка;
КонецЕсли;
ВызватьИсключение Текст;
КонецПроцедуры
#КонецОбласти

View File

@@ -1635,10 +1635,10 @@
КонецПроцедуры
Процедура Проверка_БитриксВложение(Знач Результат) Экспорт
ОжидаетЧто(Результат["result"]).ИмеетТип("Соответствие");
ОжидаетЧто(Результат["result"]["attachmentId"]).Заполнено();
КонецПроцедуры
Процедура Проверка_БитриксДоступныеДействия(Знач Результат, Знач Количество) Экспорт
@@ -2050,9 +2050,9 @@
КонецПроцедуры
Процедура Проверка_МетрикаМетки(Знач Результат) Экспорт
ОжидаетЧто(Результат["labels"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_МетрикаМетка(Знач Результат, Знач Наименование = "") Экспорт
@@ -2067,27 +2067,27 @@
КонецПроцедуры
Процедура Проверка_МетрикаУспех(Знач Результат) Экспорт
ОжидаетЧто(Результат["success"]).Равно(Истина);
КонецПроцедуры
Процедура Проверка_МетрикаСчетчик(Знач Результат) Экспорт
ОжидаетЧто(Результат["counter"]).ИмеетТип("Соответствие").Заполнено();
КонецПроцедуры
Процедура Проверка_МетрикаСчетчики(Знач Результат) Экспорт
ОжидаетЧто(Результат["counters"]).ИмеетТип("Массив").Заполнено();
КонецПроцедуры
Процедура Проверка_МетрикаОперации(Знач Результат) Экспорт
ОжидаетЧто(Результат["operations"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_S3Успех(Знач Результат) Экспорт
@@ -2112,33 +2112,33 @@
КонецПроцедуры
Процедура Проверка_Компонента(Знач Результат, Знач ИмяТипа) Экспорт
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно(ИмяТипа);
КонецПроцедуры
Процедура Проверка_Равенство(Знач Значение1, Знач Значение2) Экспорт
ОжидаетЧто(Значение1).Равно(Значение2);
КонецПроцедуры
Процедура Проверка_SQLiteУспех(Знач Результат) Экспорт
ОжидаетЧто(Результат["result"]).Равно(Истина);
КонецПроцедуры
Процедура Проверка_SQLiteОшибка(Знач Результат) Экспорт
ОжидаетЧто(Результат["result"]).Равно(Ложь);
КонецПроцедуры
Процедура Проверка_SQLiteСтроки(Знач Результат, Знач Количество) Экспорт
ОжидаетЧто(Результат["rows"]).Равно(Количество);
КонецПроцедуры
Процедура Проверка_SQLiteЗначенияПолей(Знач Результат, Знач СтруктураЗначений) Экспорт
@@ -2150,9 +2150,9 @@
КонецПроцедуры
Процедура Проверка_SQLiteНетЗаписей(Знач Результат) Экспорт
ОжидаетЧто(Результат["data"].Количество()).Равно(0);
КонецПроцедуры
Процедура Проверка_РезультатИстина(Знач Результат) Экспорт
@@ -2353,9 +2353,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции
@@ -2632,65 +2632,65 @@
Процедура ОбработатьОсобенныеСекретыОпций(Знач Библиотека, Знач Опция, Значение)
Если Библиотека = "bitrix24" Тогда
ОбработатьСекретыBitrix24(Опция, Значение);
ИначеЕсли Библиотека = "postgres" Тогда
ОбработатьСекретыPostgreSQL(Опция, Значение);
ИначеЕсли Библиотека = "mysql" Тогда
ОбработатьСекретыMySQL(Опция, Значение);
Иначе
Возврат;
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьСекретыBitrix24(Знач Опция, Значение)
Если Опция = "url" Тогда
Значение = ?(СтрНайти(Значение, "rest") > 0
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
, Значение);
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьСекретыPostgreSQL(Знач Опция, Значение)
Если Опция = "dbc" Тогда
Значение = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
ИначеЕсли Опция = "addr" Тогда
Значение = "127.0.0.1";
Иначе
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьСекретыMySQL(Знач Опция, Значение)
Если Опция = "dbc" Тогда
Значение = "mysql://bayselonarrend:***@127.0.0.1:3306/";
ИначеЕсли Опция = "addr" Тогда
Значение = "127.0.0.1";
Иначе
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@@ -486,71 +486,71 @@
Функция ОбработатьПараметр(ТекущийПараметр, КакОбъект = Истина)
ТекущийТип = ТипЗнч(ТекущийПараметр);
ТекущийКлюч = "";
ТекущийТип = ТипЗнч(ТекущийПараметр);
ТекущийКлюч = "";
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
ТекущийПараметр = Base64Строка(ТекущийПараметр);
ТекущийКлюч = "BYTES";
ТекущийПараметр = Base64Строка(ТекущийПараметр);
ТекущийКлюч = "BYTES";
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
ТекущийПараметр = Строка(ТекущийПараметр);
ТекущийКлюч = "TEXT";
ТекущийПараметр = Строка(ТекущийПараметр);
ТекущийКлюч = "TEXT";
ИначеЕсли ТекущийТип = Тип("Булево") Тогда
ИначеЕсли ТекущийТип = Тип("Булево") Тогда
ТекущийПараметр = ?(ТекущийПараметр, 1, 0);
ТекущийКлюч = "INT";
ТекущийПараметр = ?(ТекущийПараметр, 1, 0);
ТекущийКлюч = "INT";
ИначеЕсли ТекущийТип = Тип("Число") Тогда
ИначеЕсли ТекущийТип = Тип("Число") Тогда
ТекущийКлюч = "DOUBLE";
ТекущийКлюч = "DOUBLE";
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр);
ТекущийКлюч = "DATE";
ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр);
ТекущийКлюч = "DATE";
Иначе
Иначе
Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда
Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда
Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ТекущийКлюч = "BYTES";
Иначе
Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ТекущийКлюч = "BYTES";
Иначе
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
ТекущийПараметр = ОбработатьПараметр(ТекущееЗначение, Ложь);
Прервать;
КонецЦикла;
КонецЕсли;
Иначе
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийКлюч = "TEXT";
Иначе
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийКлюч = "TEXT";
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если КакОбъект Тогда
ТекущийПараметр = Новый Структура(ТекущийКлюч, ТекущийПараметр);
ТекущийПараметр = Новый Структура(ТекущийКлюч, ТекущийПараметр);
КонецЕсли;
Возврат ТекущийПараметр;
Возврат ТекущийПараметр;
КонецФункции

View File

@@ -57,9 +57,9 @@
Компонента = ПодключитьКомпонентуНаСервере(ИмяКомпоненты, Класс, Ошибка);
Если ЗначениеЗаполнено(Ошибка) Тогда
СформироватьИсключениеКомпоненты(Ошибка);
КонецЕсли;
КонецЕсли;
@@ -164,7 +164,7 @@
КонецФункции
Процедура СформироватьИсключениеКомпоненты(Знач Ошибка)
Если OPI_Инструменты.ЭтоWindows() Тогда
Текст = "Не удалось инициализировать внешнюю компоненту. "
+ "Текст ошибки: "
@@ -174,9 +174,9 @@
+ "Текст ошибки: "
+ Ошибка;
КонецЕсли;
ВызватьИсключение Текст;
КонецПроцедуры
#КонецОбласти

View File

@@ -1635,10 +1635,10 @@
КонецПроцедуры
Процедура Проверка_БитриксВложение(Знач Результат) Экспорт
ОжидаетЧто(Результат["result"]).ИмеетТип("Соответствие");
ОжидаетЧто(Результат["result"]["attachmentId"]).Заполнено();
КонецПроцедуры
Процедура Проверка_БитриксДоступныеДействия(Знач Результат, Знач Количество) Экспорт
@@ -2050,9 +2050,9 @@
КонецПроцедуры
Процедура Проверка_МетрикаМетки(Знач Результат) Экспорт
ОжидаетЧто(Результат["labels"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_МетрикаМетка(Знач Результат, Знач Наименование = "") Экспорт
@@ -2067,27 +2067,27 @@
КонецПроцедуры
Процедура Проверка_МетрикаУспех(Знач Результат) Экспорт
ОжидаетЧто(Результат["success"]).Равно(Истина);
КонецПроцедуры
Процедура Проверка_МетрикаСчетчик(Знач Результат) Экспорт
ОжидаетЧто(Результат["counter"]).ИмеетТип("Соответствие").Заполнено();
КонецПроцедуры
Процедура Проверка_МетрикаСчетчики(Знач Результат) Экспорт
ОжидаетЧто(Результат["counters"]).ИмеетТип("Массив").Заполнено();
КонецПроцедуры
Процедура Проверка_МетрикаОперации(Знач Результат) Экспорт
ОжидаетЧто(Результат["operations"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_S3Успех(Знач Результат) Экспорт
@@ -2112,33 +2112,33 @@
КонецПроцедуры
Процедура Проверка_Компонента(Знач Результат, Знач ИмяТипа) Экспорт
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно(ИмяТипа);
КонецПроцедуры
Процедура Проверка_Равенство(Знач Значение1, Знач Значение2) Экспорт
ОжидаетЧто(Значение1).Равно(Значение2);
КонецПроцедуры
Процедура Проверка_SQLiteУспех(Знач Результат) Экспорт
ОжидаетЧто(Результат["result"]).Равно(Истина);
КонецПроцедуры
Процедура Проверка_SQLiteОшибка(Знач Результат) Экспорт
ОжидаетЧто(Результат["result"]).Равно(Ложь);
КонецПроцедуры
Процедура Проверка_SQLiteСтроки(Знач Результат, Знач Количество) Экспорт
ОжидаетЧто(Результат["rows"]).Равно(Количество);
КонецПроцедуры
Процедура Проверка_SQLiteЗначенияПолей(Знач Результат, Знач СтруктураЗначений) Экспорт
@@ -2150,9 +2150,9 @@
КонецПроцедуры
Процедура Проверка_SQLiteНетЗаписей(Знач Результат) Экспорт
ОжидаетЧто(Результат["data"].Количество()).Равно(0);
КонецПроцедуры
Процедура Проверка_РезультатИстина(Знач Результат) Экспорт
@@ -2632,65 +2632,65 @@
Процедура ОбработатьОсобенныеСекретыОпций(Знач Библиотека, Знач Опция, Значение)
Если Библиотека = "bitrix24" Тогда
ОбработатьСекретыBitrix24(Опция, Значение);
ИначеЕсли Библиотека = "postgres" Тогда
ОбработатьСекретыPostgreSQL(Опция, Значение);
ИначеЕсли Библиотека = "mysql" Тогда
ОбработатьСекретыMySQL(Опция, Значение);
Иначе
Возврат;
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьСекретыBitrix24(Знач Опция, Значение)
Если Опция = "url" Тогда
Значение = ?(СтрНайти(Значение, "rest") > 0
, "https://b24-ar17wx.bitrix24.by/rest/1/***"
, Значение);
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьСекретыPostgreSQL(Знач Опция, Значение)
Если Опция = "dbc" Тогда
Значение = "postgresql://bayselonarrend:***@127.0.0.1:5432/";
ИначеЕсли Опция = "addr" Тогда
Значение = "127.0.0.1";
Иначе
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьСекретыMySQL(Знач Опция, Значение)
Если Опция = "dbc" Тогда
Значение = "mysql://bayselonarrend:***@127.0.0.1:3306/";
ИначеЕсли Опция = "addr" Тогда
Значение = "127.0.0.1";
Иначе
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@@ -18634,7 +18634,7 @@
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP
Закрытие = OPI_MySQL.ЗакрытьСоединение(Соединение);
// END

View File

@@ -0,0 +1,547 @@
Функция ПолучитьСостав() Экспорт
ТаблицаСостава = Новый ТаблицаЗначений();
ТаблицаСостава.Колонки.Добавить("Библиотека");
ТаблицаСостава.Колонки.Добавить("Модуль");
ТаблицаСостава.Колонки.Добавить("Метод");
ТаблицаСостава.Колонки.Добавить("МетодПоиска");
ТаблицаСостава.Колонки.Добавить("Параметр");
ТаблицаСостава.Колонки.Добавить("Описание");
ТаблицаСостава.Колонки.Добавить("ОписаниеМетода");
ТаблицаСостава.Колонки.Добавить("Область");
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ВыполнитьЗапросSQL";
НоваяСтрока.МетодПоиска = "ВЫПОЛНИТЬЗАПРОСSQL";
НоваяСтрока.Параметр = "--sql";
НоваяСтрока.Описание = "Текст запроса к базе";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Выполняет произвольный SQL запрос
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ВыполнитьЗапросSQL";
НоваяСтрока.МетодПоиска = "ВЫПОЛНИТЬЗАПРОСSQL";
НоваяСтрока.Параметр = "--params";
НоваяСтрока.Описание = "Массив позиционных параметров запроса (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ВыполнитьЗапросSQL";
НоваяСтрока.МетодПоиска = "ВЫПОЛНИТЬЗАПРОСSQL";
НоваяСтрока.Параметр = "--force";
НоваяСтрока.Описание = "Включает попытку получения результата, даже для не SELECT запросов (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ВыполнитьЗапросSQL";
НоваяСтрока.МетодПоиска = "ВЫПОЛНИТЬЗАПРОСSQL";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ВыполнитьЗапросSQL";
НоваяСтрока.МетодПоиска = "ВЫПОЛНИТЬЗАПРОСSQL";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СформироватьСтрокуПодключения";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬСТРОКУПОДКЛЮЧЕНИЯ";
НоваяСтрока.Параметр = "--addr";
НоваяСтрока.Описание = "IP адрес или доменное имя сервера";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Формирует строку подключения из переданных данных";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СформироватьСтрокуПодключения";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬСТРОКУПОДКЛЮЧЕНИЯ";
НоваяСтрока.Параметр = "--db";
НоваяСтрока.Описание = "Имя базы данных для подключения";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СформироватьСтрокуПодключения";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬСТРОКУПОДКЛЮЧЕНИЯ";
НоваяСтрока.Параметр = "--login";
НоваяСтрока.Описание = "Логин пользователя mysql";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СформироватьСтрокуПодключения";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬСТРОКУПОДКЛЮЧЕНИЯ";
НоваяСтрока.Параметр = "--pass";
НоваяСтрока.Описание = "Пароль пользователя mysql (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СформироватьСтрокуПодключения";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬСТРОКУПОДКЛЮЧЕНИЯ";
НоваяСтрока.Параметр = "--port";
НоваяСтрока.Описание = "Порт подключения (необяз. по ум. - 3306)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьНастройкиTls";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИTLS";
НоваяСтрока.Параметр = "--trust";
НоваяСтрока.Описание = "Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Формирует настройки для использования TLS при выполнении запросов";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьНастройкиTls";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИTLS";
НоваяСтрока.Параметр = "--cert";
НоваяСтрока.Описание = "Путь к корневому PEM файлу сертификата, если его нет в системном хранилище (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СоздатьБазуДанных";
НоваяСтрока.МетодПоиска = "СОЗДАТЬБАЗУДАННЫХ";
НоваяСтрока.Параметр = "--base";
НоваяСтрока.Описание = "Имя базы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Создает базу данных с указанным именем";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СоздатьБазуДанных";
НоваяСтрока.МетодПоиска = "СОЗДАТЬБАЗУДАННЫХ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СоздатьБазуДанных";
НоваяСтрока.МетодПоиска = "СОЗДАТЬБАЗУДАННЫХ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьБазуДанных";
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАЗУДАННЫХ";
НоваяСтрока.Параметр = "--base";
НоваяСтрока.Описание = "Имя базы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Удаляет базу данных";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьБазуДанных";
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАЗУДАННЫХ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьБазуДанных";
НоваяСтрока.МетодПоиска = "УДАЛИТЬБАЗУДАННЫХ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СоздатьТаблицу";
НоваяСтрока.МетодПоиска = "СОЗДАТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Создает пустую таблицу в базе";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СоздатьТаблицу";
НоваяСтрока.МетодПоиска = "СОЗДАТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--cols";
НоваяСтрока.Описание = "Структура колонок: Ключ > имя, Значение > Тип данных";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СоздатьТаблицу";
НоваяСтрока.МетодПоиска = "СОЗДАТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "СоздатьТаблицу";
НоваяСтрока.МетодПоиска = "СОЗДАТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОчиститьТаблицу";
НоваяСтрока.МетодПоиска = "ОЧИСТИТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Очищает таблицу базы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОчиститьТаблицу";
НоваяСтрока.МетодПоиска = "ОЧИСТИТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОчиститьТаблицу";
НоваяСтрока.МетодПоиска = "ОЧИСТИТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьТаблицу";
НоваяСтрока.МетодПоиска = "УДАЛИТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Удаляет таблицу из базы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьТаблицу";
НоваяСтрока.МетодПоиска = "УДАЛИТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьТаблицу";
НоваяСтрока.МетодПоиска = "УДАЛИТЬТАБЛИЦУ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ДобавитьЗаписи";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Добавляет записи в таблицу
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ДобавитьЗаписи";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--rows";
НоваяСтрока.Описание = "Массив структур данных строк: Ключ > поле, Значение > значение поля";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ДобавитьЗаписи";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--trn";
НоваяСтрока.Описание = "Истина > добавление записей в транзакции с откатом при ошибке (необяз. по ум. - Да)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ДобавитьЗаписи";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ДобавитьЗаписи";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьЗаписи";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Получает записи из выбранной таблицы
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьЗаписи";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--fields";
НоваяСтрока.Описание = "Поля для выборки (необяз. по ум. - *)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьЗаписи";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--filter";
НоваяСтрока.Описание = "Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьЗаписи";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--order";
НоваяСтрока.Описание = "Сортировка: Ключ > поле, Значение > направление (ASC, DESC) (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьЗаписи";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--limit";
НоваяСтрока.Описание = "Ограничение количества получаемых строк (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьЗаписи";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьЗаписи";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОбновитьЗаписи";
НоваяСтрока.МетодПоиска = "ОБНОВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Обновляет значение записей по выбранным критериям
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОбновитьЗаписи";
НоваяСтрока.МетодПоиска = "ОБНОВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--values";
НоваяСтрока.Описание = "Структура значений: Ключ > поле, Значение > значение поля";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОбновитьЗаписи";
НоваяСтрока.МетодПоиска = "ОБНОВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--filter";
НоваяСтрока.Описание = "Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОбновитьЗаписи";
НоваяСтрока.МетодПоиска = "ОБНОВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ОбновитьЗаписи";
НоваяСтрока.МетодПоиска = "ОБНОВИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьЗаписи";
НоваяСтрока.МетодПоиска = "УДАЛИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Удаляет записи из таблицы
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьЗаписи";
НоваяСтрока.МетодПоиска = "УДАЛИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--filter";
НоваяСтрока.Описание = "Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьЗаписи";
НоваяСтрока.МетодПоиска = "УДАЛИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--dbc";
НоваяСтрока.Описание = "Соединение или строка подключения (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "УдалитьЗаписи";
НоваяСтрока.МетодПоиска = "УДАЛИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "mysql";
НоваяСтрока.Модуль = "OPI_MySQL";
НоваяСтрока.Метод = "ПолучитьСтруктуруФильтраЗаписей";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУФИЛЬТРАЗАПИСЕЙ";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - Нет)";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Получает структуру шаблон для фильтрации записей в запросах ORM";
Возврат ТаблицаСостава;
КонецФункции

View File

@@ -16,6 +16,7 @@
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("greenapi", "OPI_GreenAPI");
СоответствиеКомандМодулей.Вставить("mysql", "OPI_MySQL");
СоответствиеКомандМодулей.Вставить("neocities", "OPI_Neocities");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("ozon", "OPI_Ozon");