1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-12 04:34:10 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot) 2025-01-04 15:23:00 +03:00
parent e0e380765b
commit 9218067b8f
35 changed files with 6826 additions and 6311 deletions

4
ci/clitesten vendored
View File

@ -1980,6 +1980,10 @@ def test_sqlite(){
powershell encoding: 'UTF-8', script:'./oint.exe sqlite UpdateRecords --table "test" --values "test" --filter "test" --db "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe sqlite DeletePosts --table "test" --filter "test" --db "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe sqlite GetRecordsFilterStrucutre --empty "test" --debug --test '
}

4
ci/clitestru vendored
View File

@ -1980,6 +1980,10 @@ def test_sqlite(){
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ОбновитьЗаписи --table "test" --values "test" --filter "test" --db "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe sqlite УдалитьЗаписи --table "test" --filter "test" --db "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe sqlite ПолучитьСтруктуруФильтраЗаписей --empty "test" --debug --test '
}

View File

@ -4,7 +4,7 @@
PictureFile = GetTempFileName("png");
Image.Write(PictureFile); // PictureFile - File to disk
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
DataArray = New Array;

View File

@ -1,4 +1,4 @@
 Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
 Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
ColoumnsStruct = New Structure;

View File

@ -1,4 +1,4 @@
 Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
 Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
Fields = New Array;

View File

@ -1,4 +1,4 @@
 Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
 Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
FieldsStructure = New Structure;

View File

@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
PictureFile = GetTempFileName("png");
Image.Write(PictureFile); // PictureFile - File to disk
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
DataArray = New Array;

View File

@ -27,7 +27,7 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
ColoumnsStruct = New Structure;

36
docs/en/md/SQLite/Orm/Delete-posts.mdx vendored Normal file
View File

@ -0,0 +1,36 @@
---
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Delete records
Deletes records from the table
`Function DeletePosts(Val Table, Val Filters = "", Val Connection = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | ✔ | Table name |
| Filters | --filter | Array of Structure | ✖ | Filters array. See GetRecordsFilterStrucutre |
| Connection | --db | String, Arbitrary | ✖ | Existing connection or database path |
Returns: Structure Of KeyAndValue, String - Result of query execution
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@ -1,5 +1,5 @@
---
sidebar_position: 5
sidebar_position: 6
---
import Tabs from '@theme/Tabs';

View File

@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
Fields = New Array;

View File

@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
```bsl title="1C:Enterprise/OneScript code example"
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
Base = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Table = "test";
FieldsStructure = New Structure;

View File

@ -4,7 +4,7 @@
ФайлКартинки = ПолучитьИмяВременногоФайла("png");
Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске
База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
МассивДанных = Новый Массив;

View File

@ -1,4 +1,4 @@
 База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
 База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
СтруктураПолей = Новый Структура;

View File

@ -1,4 +1,4 @@
 База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
 База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
Поля = Новый Массив;

View File

@ -1,4 +1,4 @@
 База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
 База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
СтруктураКолонок = Новый Структура;

View File

@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
ФайлКартинки = ПолучитьИмяВременногоФайла("png");
Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске
База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
МассивДанных = Новый Массив;

View File

@ -27,7 +27,7 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
СтруктураКолонок = Новый Структура;

36
docs/ru/md/SQLite/Orm/Delete-posts.mdx vendored Normal file
View File

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

View File

@ -1,5 +1,5 @@
---
sidebar_position: 5
sidebar_position: 6
---
import Tabs from '@theme/Tabs';

View File

@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
Поля = Новый Массив;

View File

@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
```bsl title="Пример использования для 1С:Предприятие/OneScript"
База = "C:\Users\Administrator\AppData\Local\Temp\v8_3590_23.sqlite";
База = "C:\Users\Administrator\AppData\Local\Temp\v8_D671_13.sqlite";
Таблица = "test";
СтруктураПолей = Новый Структура;

File diff suppressed because it is too large Load Diff

View File

@ -234,6 +234,23 @@ Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Conn
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 - Existing connection or database path - db
//
// Returns:
// Structure Of KeyAndValue, String - Result of query execution
Function DeletePosts(Val Table, Val Filters = "", Val Connection = "") Export
Result = OPI_SQLQueries.DeletePosts(OPI_SQLite, Table, Filters, Connection);
Return Result;
EndFunction
// Get records filter strucutre
// Gets the template structure for filtering records in ORM queries
//

View File

@ -23,7 +23,7 @@
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_YandexMarket" file="core/Modules/OPI_YandexMarket.os"/>
<module name="OPI_YandexMetrika" file="core/Modules/OPI_YandexMetrika.os"/>
<module name="os" file="tools/Modules/os"/>
<module name="OPI_SQLQueries" file="tools/Modules/OPI_SQLQueries.os"/>
<module name="OPI_Tools" file="tools/Modules/internal/Modules/OPI_Tools.os"/>
<module name="OPI_Cryptography" file="tools/Modules/internal/Modules/OPI_Cryptography.os"/>
<module name="OPI_TestDataRetrieval" file="tools/Modules/OPI_TestDataRetrieval.os"/>

View File

@ -42,164 +42,200 @@
#Region Internal
Function NewSQLScheme(Val Action) Export
Function CreateTable(Val Module, Val Table, Val ColoumnsStruct, Val Connection = "") Export
OPI_TypeConversion.GetLine(Action);
ErrorText = "The column structure is not a valid key-value structure";
OPI_TypeConversion.GetKeyValueCollection(ColoumnsStruct, ErrorText);
Action = Upper(Action);
Scheme = NewSQLScheme("CREATE");
If Action = "SELECT" Then
SetTableName(Scheme, Table);
Scheme = EmptySchemeSelect();
For Each Coloumn In ColoumnsStruct Do
AddColoumn(Scheme, Coloumn.Key, Coloumn.Value);
EndDo;
ElsIf Action = "INSERT" Then
Request = FormSQLText(Scheme);
Result = Module.ExecuteSQLQuery(Request, , , Connection);
Scheme = EmptySchemeInsert();
ElsIf Action = "UPDATE" Then
Scheme = EmptySchemeUpdate();
ElsIf Action = "DELETE" Then
Scheme = EmptySchemeDelete();
ElsIf Action = "CREATE" Then
Scheme = EmptySchemeCreate();
Else
Scheme = New Structure;
EndIf;
Return Scheme;
Return Result;
EndFunction
Function FormSQLText(Val Scheme) Export
Function AddRecords(Val Module
, Val Table
, Val DataArray
, Val Transaction = True
, Val Connection = "") Export
ErrorText = "The value passed is not a valid SQL query schema";
OPI_TypeConversion.GetKeyValueCollection(Scheme, ErrorText);
OPI_TypeConversion.GetArray(DataArray);
OPI_TypeConversion.GetBoolean(Transaction);
SchemeType = "";
Connection = Module.CreateConnection(Connection);
If Not OPI_Tools.CollectionFieldExist(Scheme, "type", SchemeType) Then
Raise ErrorText;
If Not Module.IsConnector(Connection) Then
Return Connection;
EndIf;
SchemeType = Upper(SchemeType);
If Transaction Then
If SchemeType = "SELECT" Then
Start = Module.ExecuteSQLQuery("BEGIN TRANSACTION", , , Connection);
QueryText = FormTextSelect(Scheme);
ElsIf SchemeType = "INSERT" Then
QueryText = FormTextInsert(Scheme);
ElsIf SchemeType = "UPDATE" Then
QueryText = FormTextUpdate(Scheme);
ElsIf SchemeType = "DELETE" Then
QueryText = FormTextDelete(Scheme);
ElsIf SchemeType = "CREATE" Then
QueryText = FormTextCreate(Scheme);
Else
QueryText = "";
If Not Start["result"] Then
Return Start;
EndIf;
EndIf;
Return QueryText;
Counter = 0;
SuccessCount = 0;
Error = False;
ErrorsArray = New Array;
CollectionError = "Invalid data";
ResultStrucutre = New Structure;
For Each Record In DataArray Do
If Error And Transaction Then
Rollback = Module.ExecuteSQLQuery("ROLLBACK", , , Connection);
SuccessCount = 0;
ResultStrucutre.Insert("rollback", Rollback);
Break;
EndIf;
Counter = Counter + 1;
Error = False;
Try
OPI_TypeConversion.GetKeyValueCollection(Record, CollectionError);
Except
ErrorsArray.Add(New Structure("row,error", Counter, CollectionError));
Error = True;
Continue;
EndTry;
Result = AddRow(Module, Table, Record, Connection);
If Result["result"] Then
SuccessCount = SuccessCount + 1;
Else
ErrorsArray.Add(New Structure("row,error", Counter, Result["error"]));
Error = True;
EndIf;
EndDo;
If Transaction And Not Error Then
Completion = Module.ExecuteSQLQuery("COMMIT", , , Connection);
ResultStrucutre.Insert("commit", Completion);
EndIf;
ResultStrucutre.Insert("result", ErrorsArray.Count() = 0);
ResultStrucutre.Insert("rows" , SuccessCount);
ResultStrucutre.Insert("errors", ErrorsArray);
Return ResultStrucutre;
EndFunction
Procedure AddColoumn(Scheme, Val Name, Val Type) Export
Function GetRecords(Val Module
, Val Table
, Val Fields = "*"
, Val Filters = ""
, Val Sort = ""
, Val Count = ""
, Val Connection = "") Export
OPI_TypeConversion.GetLine(Name);
OPI_TypeConversion.GetLine(Type);
Scheme = NewSQLScheme("SELECT");
If Not Scheme["type"] = "CREATE" Then
Return;
SetTableName(Scheme, Table);
SetLimit(Scheme, Count);
FillFields(Scheme, Fields);
FillFilters(Scheme, Filters);
FillSorting(Scheme, Sort);
Request = FormSQLText(Scheme);
Result = Module.ExecuteSQLQuery(Request, Scheme["values"], , Connection);
Return Result;
EndFunction
Function UpdateRecords(Val Module
, Val Table
, Val ValueStructure
, Val Filters = ""
, Val Connection = "") Export
Scheme = NewSQLScheme("UPDATE");
FieldArray = New Array;
ValuesArray = New Array;
SetTableName(Scheme, Table);
SplitDataCollection(ValueStructure, FieldArray, ValuesArray);
Scheme["values"] = ValuesArray;
For Each Field In FieldArray Do
AddField(Scheme, Field);
EndDo;
FillFilters(Scheme, Filters);
Request = FormSQLText(Scheme);
Result = Module.ExecuteSQLQuery(Request, Scheme["values"], , Connection);
Return Result;
EndFunction
Function DeletePosts(Val Module, Val Table, Val Filters = "", Val Connection = "") Export
Scheme = NewSQLScheme("DELETE");
SetTableName(Scheme, Table);
FillFilters(Scheme, Filters);
Request = FormSQLText(Scheme);
Result = Module.ExecuteSQLQuery(Request, Scheme["values"], , Connection);
Return Result;
EndFunction
Function GetRecordsFilterStrucutre(Val Clear = False) Export
FilterStructure = New Structure;
FilterStructure.Insert("field", "<filtering field name>");
FilterStructure.Insert("type" , "<comparison type>");
FilterStructure.Insert("value", "<comparison value>");
FilterStructure.Insert("union", "<connection with the following condition: AND, OR, etc..>");
FilterStructure.Insert("raw" , "<true - the value will be inserted by text as it is, false - through the parameter>");
If Clear Then
FilterStructure = OPI_Tools.ClearCollectionRecursively(FilterStructure);
EndIf;
ColoumnMap = New Map;
ColoumnMap.Insert(Name, Type);
//@skip-check constructor-function-return-section
Return FilterStructure;
Scheme["columns"].Add(ColoumnMap);
EndProcedure
Procedure AddField(Scheme, Val Name) Export
OPI_TypeConversion.GetLine(Name);
Scheme["set"].Add(Name);
EndProcedure
Procedure AddFilter(Scheme, Val Field, Val Type, Val Value, Val Grouping, Val Raw) Export
OPI_TypeConversion.GetLine(Field);
OPI_TypeConversion.GetLine(Type);
OPI_TypeConversion.GetLine(Grouping);
OPI_TypeConversion.GetBoolean(Raw);
MainStructure = New Structure("field,type,union"
, Field
, Type
, Grouping);
If Raw Then
MainStructure.Insert("value", String(Value));
Else
Scheme["values"].Add(Value);
OrderNumber = Scheme["values"].Count();
MainStructure.Insert("value", "?" + OPI_Tools.NumberToString(OrderNumber));
EndIf;
Scheme["filter"].Add(MainStructure);
EndProcedure
Procedure AddSorting(Scheme, Val Field, Val Type) Export
OPI_TypeConversion.GetLine(Field);
OPI_TypeConversion.GetLine(Type);
Scheme["order"].Add(New Structure("field,type", Field, Type));
EndProcedure
Procedure SetTableName(Scheme, Val Name) Export
OPI_TypeConversion.GetLine(Name);
Scheme.Insert("table", Name);
EndProcedure
Procedure SetLimit(Scheme, Val Count) Export
OPI_TypeConversion.GetNumber(Count);
Scheme.Insert("limit", Count);
EndProcedure
EndFunction
#EndRegion
@ -237,9 +273,10 @@ Function EmptySchemeUpdate()
Scheme = New Structure("type", "UPDATE");
Scheme.Insert("table" , "");
Scheme.Insert("set" , New Array);
Scheme.Insert("filter", New Array);
Scheme.Insert("table" , "");
Scheme.Insert("set" , New Array);
Scheme.Insert("filter" , New Array);
Scheme.Insert("values" , New Array);
Return Scheme;
@ -318,7 +355,23 @@ EndFunction
Function FormTextUpdate(Val Scheme)
TextSQL = "";
CheckSchemeRequiredFields(Scheme, "table,set,values");
Table = Scheme["table"];
Fields = Scheme["set"];
Filters = Scheme["filter"];
SQLTemplate = "UPDATE %1 SET %2 %3";
FilterText = FormFilterText(Filters);
For N = 0 To Fields.UBound() Do
Fields[N] = Fields[N] + " = ?" + OPI_Tools.NumberToString(N + 1);
EndDo;
TextSQL = StrTemplate(SQLTemplate, Table, StrConcat(Fields, "," + Chars.LF), FilterText);
Return TextSQL;
@ -326,7 +379,16 @@ EndFunction
Function FormTextDelete(Val Scheme)
TextSQL = "";
CheckSchemeRequiredFields(Scheme, "table");
Table = Scheme["table"];
Filters = Scheme["filter"];
SQLTemplate = "DELETE FROM %1 %2";
FilterText = FormFilterText(Filters);
TextSQL = StrTemplate(SQLTemplate, Table, FilterText);
Return TextSQL;
@ -363,6 +425,87 @@ EndFunction
#EndRegion
#Region Auxiliary
Function NewSQLScheme(Val Action)
OPI_TypeConversion.GetLine(Action);
Action = Upper(Action);
If Action = "SELECT" Then
Scheme = EmptySchemeSelect();
ElsIf Action = "INSERT" Then
Scheme = EmptySchemeInsert();
ElsIf Action = "UPDATE" Then
Scheme = EmptySchemeUpdate();
ElsIf Action = "DELETE" Then
Scheme = EmptySchemeDelete();
ElsIf Action = "CREATE" Then
Scheme = EmptySchemeCreate();
Else
Scheme = New Structure;
EndIf;
Return Scheme;
EndFunction
Function FormSQLText(Val Scheme)
ErrorText = "The value passed is not a valid SQL query schema";
OPI_TypeConversion.GetKeyValueCollection(Scheme, ErrorText);
SchemeType = "";
If Not OPI_Tools.CollectionFieldExist(Scheme, "type", SchemeType) Then
Raise ErrorText;
EndIf;
SchemeType = Upper(SchemeType);
If SchemeType = "SELECT" Then
QueryText = FormTextSelect(Scheme);
ElsIf SchemeType = "INSERT" Then
QueryText = FormTextInsert(Scheme);
ElsIf SchemeType = "UPDATE" Then
QueryText = FormTextUpdate(Scheme);
ElsIf SchemeType = "DELETE" Then
QueryText = FormTextDelete(Scheme);
ElsIf SchemeType = "CREATE" Then
QueryText = FormTextCreate(Scheme);
Else
QueryText = "";
EndIf;
Return QueryText;
EndFunction
Function ForSelectOptionsText(Val Filters, Val Sort, Val Count)
BlockTemplate = "%1
@ -454,6 +597,93 @@ Function FormCountText(Val Count)
EndFunction
Function AddRow(Val Module, Val Table, Val Record, Val Connection)
FieldArray = New Array;
ValuesArray = New Array;
Scheme = NewSQLScheme("INSERT");
SetTableName(Scheme, Table);
SplitDataCollection(Record, FieldArray, ValuesArray);
For Each Field In FieldArray Do
AddField(Scheme, Field);
EndDo;
Request = FormSQLText(Scheme);
Result = Module.ExecuteSQLQuery(Request, ValuesArray, , Connection);
Return Result;
EndFunction
Procedure SplitDataCollection(Val Record, FieldArray, ValuesArray)
ErrorText = "Incorrect data set for updating";
OPI_TypeConversion.GetKeyValueCollection(Record, ErrorText);
For Each Element In Record Do
FieldArray.Add(Element.Key);
ValuesArray.Add(Element.Value);
EndDo;
EndProcedure
Procedure FillFields(Scheme, Val Fields)
If Not ValueIsFilled(Fields) Then
Fields = "*";
EndIf;
OPI_TypeConversion.GetArray(Fields);
For Each Field In Fields Do
AddField(Scheme, Field);
EndDo;
EndProcedure
Procedure FillFilters(Scheme, Val Filters)
If Not ValueIsFilled(Filters) Then
Return;
EndIf;
OPI_TypeConversion.GetArray(Filters);
For Each Filter In Filters Do
AddFilter(Scheme
, Filter["field"]
, ?(Filter.Property("type"), Filter["type"], "=")
, Filter["value"]
, ?(Filter.Property("union"), Filter["union"], "AND")
, ?(Filter.Property("raw"), Filter["raw"], False));
EndDo;
EndProcedure
Procedure FillSorting(Val Scheme, Val Sort)
If Not ValueIsFilled(Sort) Then
Return;
EndIf;
OPI_TypeConversion.GetCollection(Sort);
For Each Element In Sort Do
AddSorting(Scheme, Element.Key, Element.Value);
EndDo;
EndProcedure
Procedure CheckSchemeRequiredFields(Scheme, Val Fields)
RequiredFieldsArray = StrSplit(Fields, ",");
@ -465,4 +695,85 @@ Procedure CheckSchemeRequiredFields(Scheme, Val Fields)
EndProcedure
Procedure AddColoumn(Scheme, Val Name, Val Type) Export
OPI_TypeConversion.GetLine(Name);
OPI_TypeConversion.GetLine(Type);
If Not Scheme["type"] = "CREATE" Then
Return;
EndIf;
ColoumnMap = New Map;
ColoumnMap.Insert(Name, Type);
Scheme["columns"].Add(ColoumnMap);
EndProcedure
Procedure AddField(Scheme, Val Name) Export
OPI_TypeConversion.GetLine(Name);
Scheme["set"].Add(Name);
EndProcedure
Procedure AddFilter(Scheme, Val Field, Val Type, Val Value, Val Grouping, Val Raw)
OPI_TypeConversion.GetLine(Field);
OPI_TypeConversion.GetLine(Type);
OPI_TypeConversion.GetLine(Grouping);
OPI_TypeConversion.GetBoolean(Raw);
MainStructure = New Structure("field,type,union"
, Field
, Type
, Grouping);
If Raw Then
MainStructure.Insert("value", String(Value));
Else
Scheme["values"].Add(Value);
OrderNumber = Scheme["values"].Count();
MainStructure.Insert("value", "?" + OPI_Tools.NumberToString(OrderNumber));
EndIf;
Scheme["filter"].Add(MainStructure);
EndProcedure
Procedure AddSorting(Scheme, Val Field, Val Type)
OPI_TypeConversion.GetLine(Field);
OPI_TypeConversion.GetLine(Type);
Scheme["order"].Add(New Structure("field,type", Field, Type));
EndProcedure
Procedure SetTableName(Scheme, Val Name)
OPI_TypeConversion.GetLine(Name);
Scheme.Insert("table", Name);
EndProcedure
Procedure SetLimit(Scheme, Val Count)
OPI_TypeConversion.GetNumber(Count);
Scheme.Insert("limit", Count);
EndProcedure
#EndRegion
#EndRegion

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/os
// OneScript: ./OInt/tools/Modules/OPI_SQLQueries.os
// MIT License
@ -203,6 +203,21 @@ Function UpdateRecords(Val Module
EndFunction
Function DeletePosts(Val Module, Val Table, Val Filters = "", Val Connection = "") Export
Scheme = NewSQLScheme("DELETE");
SetTableName(Scheme, Table);
FillFilters(Scheme, Filters);
Request = FormSQLText(Scheme);
Result = Module.ExecuteSQLQuery(Request, Scheme["values"], , Connection);
Return Result;
EndFunction
Function GetRecordsFilterStrucutre(Val Clear = False) Export
FilterStructure = New Structure;
@ -364,7 +379,16 @@ EndFunction
Function FormTextDelete(Val Scheme)
TextSQL = "";
CheckSchemeRequiredFields(Scheme, "table");
Table = Scheme["table"];
Filters = Scheme["filter"];
SQLTemplate = "DELETE FROM %1 %2";
FilterText = FormFilterText(Filters);
TextSQL = StrTemplate(SQLTemplate, Table, FilterText);
Return TextSQL;

View File

@ -234,6 +234,23 @@ Function UpdateRecords(Val Table, Val ValueStructure, Val Filters = "", Val Conn
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 - Existing connection or database path - db
//
// Returns:
// Structure Of KeyAndValue, String - Result of query execution
Function DeletePosts(Val Table, Val Filters = "", Val Connection = "") Export
Result = OPI_SQLQueries.DeletePosts(OPI_SQLite, Table, Filters, Connection);
Return Result;
EndFunction
// Get records filter strucutre
// Gets the template structure for filtering records in ORM queries
//

View File

@ -225,6 +225,37 @@
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "sqlite";
NewLine.Модуль = "OPI_SQLite";
NewLine.Метод = "DeletePosts";
NewLine.МетодПоиска = "DELETEPOSTS";
NewLine.Параметр = "--table";
NewLine.Описание = "Table name";
NewLine.Область = "Orm";
NewLine.ОписаниеМетода = "Deletes records from the table";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "sqlite";
NewLine.Модуль = "OPI_SQLite";
NewLine.Метод = "DeletePosts";
NewLine.МетодПоиска = "DELETEPOSTS";
NewLine.Параметр = "--filter";
NewLine.Описание = "Filters array. See GetRecordsFilterStrucutre (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "sqlite";
NewLine.Модуль = "OPI_SQLite";
NewLine.Метод = "DeletePosts";
NewLine.МетодПоиска = "DELETEPOSTS";
NewLine.Параметр = "--db";
NewLine.Описание = "Existing connection or database path (optional, def. val. - Empty value)";
NewLine.Область = "Orm";
NewLine = CompositionTable.Add();
NewLine.Библиотека = "sqlite";
NewLine.Модуль = "OPI_SQLite";

View File

@ -236,7 +236,7 @@
// Удалить записи
// Удаляет записи из таблицы
//
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter
@ -245,10 +245,10 @@
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, Фильтры, Соединение);
Возврат Результат;
КонецФункции
// Получить структуру фильтра записей

View File

@ -204,18 +204,18 @@
КонецФункции
Функция УдалитьЗаписи(Знач Модуль, Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт
Схема = ПустаяСхемаSQL("DELETE");
УстановитьИмяТаблицы(Схема, Таблица);
ЗаполнитьФильтры(Схема, Фильтры);
Запрос = СформироватьТекстSQL(Схема);
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, Схема["values"], , Соединение);
Возврат Результат;
КонецФункции
Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт
@ -383,11 +383,11 @@
Таблица = Схема["table"];
Фильтры = Схема["filter"];
ШаблонSQL = "DELETE FROM %1 %2";
ТекстФильтра = СформироватьТекстФильтра(Фильтры);
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ТекстФильтра);
Возврат ТекстSQL;

View File

@ -2127,9 +2127,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@ -236,7 +236,7 @@
// Удалить записи
// Удаляет записи из таблицы
//
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Фильтры - Массив Из Структура - Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей - filter
@ -245,10 +245,10 @@
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция УдалитьЗаписи(Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, Фильтры, Соединение);
Возврат Результат;
КонецФункции
// Получить структуру фильтра записей

View File

@ -204,18 +204,18 @@
КонецФункции
Функция УдалитьЗаписи(Знач Модуль, Знач Таблица, Знач Фильтры = "", Знач Соединение = "") Экспорт
Схема = ПустаяСхемаSQL("DELETE");
УстановитьИмяТаблицы(Схема, Таблица);
ЗаполнитьФильтры(Схема, Фильтры);
Запрос = СформироватьТекстSQL(Схема);
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, Схема["values"], , Соединение);
Возврат Результат;
КонецФункции
Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт
@ -383,11 +383,11 @@
Таблица = Схема["table"];
Фильтры = Схема["filter"];
ШаблонSQL = "DELETE FROM %1 %2";
ТекстФильтра = СформироватьТекстФильтра(Фильтры);
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ТекстФильтра);
Возврат ТекстSQL;

View File

@ -241,6 +241,41 @@
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "sqlite";
НоваяСтрока.Модуль = "OPI_SQLite";
НоваяСтрока.Метод = "УдалитьЗаписи";
НоваяСтрока.МетодПоиска = "УДАЛИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--table";
НоваяСтрока.Описание = "Имя таблицы";
НоваяСтрока.Область = "Orm";
НоваяСтрока.ОписаниеМетода = "Удаляет записи из таблицы
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "sqlite";
НоваяСтрока.Модуль = "OPI_SQLite";
НоваяСтрока.Метод = "УдалитьЗаписи";
НоваяСтрока.МетодПоиска = "УДАЛИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--filter";
НоваяСтрока.Описание = "Массив фильтров. См. ПолучитьСтруктуруФильтраЗаписей (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "sqlite";
НоваяСтрока.Модуль = "OPI_SQLite";
НоваяСтрока.Метод = "УдалитьЗаписи";
НоваяСтрока.МетодПоиска = "УДАЛИТЬЗАПИСИ";
НоваяСтрока.Параметр = "--db";
НоваяСтрока.Описание = "Существующее соединение или путь к базе (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Orm";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "sqlite";
НоваяСтрока.Модуль = "OPI_SQLite";