1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-08-01 13:12:17 +03:00
parent 9b11d83216
commit 5e1725140d
22 changed files with 9053 additions and 8526 deletions

1
docs/en/data/FTP/ClearDirectory.json vendored Normal file
View File

@@ -0,0 +1 @@
{"Host":"172.33.0.10","Port":21,"Login":"bayselonarrend","Password":"12we...","ProxyType":"http","ProxyAddress":"127.0.0.1","ProxyPort":8071,"ProxyLogin":"proxyuser","ProxyPassword":"12we..."}

37
docs/en/examples/FTP/ClearDirectory.txt vendored Normal file
View File

@@ -0,0 +1,37 @@
 Host = "172.33.0.10";
Port = "21";
Login = "bayselonarrend";
Password = "12we...";
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = "http"; // http, socks5, socks4
ProxyAddress = "127.0.0.1";
ProxyPort = "8071";
ProxyLogin = "proxyuser";
ProxyPassword = "12we...";
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.ClearDirectory(Connection, "");
Else
Result = Connection; // Error of connection
EndIf;

View File

@@ -0,0 +1,73 @@
---
sidebar_position: 4
description: Clear directory and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Clear directory
Deletes all objects in the selected directory
`Function ClearDirectory(Val Connection, Val Path) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Connection | --conn | Arbitrary | ✔ | Existing connection or connection configuration |
| Path | --path | String | ✔ | Path to the directory to be cleaned |
Returns: Map Of KeyAndValue - Processing result
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Host = "172.33.0.10";
Port = "21";
Login = "bayselonarrend";
Password = "12we...";
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = "http"; // http, socks5, socks4
ProxyAddress = "127.0.0.1";
ProxyPort = "8071";
ProxyLogin = "proxyuser";
ProxyPassword = "12we...";
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.ClearDirectory(Connection, "");
Else
Result = Connection; // Error of connection
EndIf;
```

View File

@@ -0,0 +1 @@
{"Хост":"172.33.0.10","Порт":21,"Логин":"bayselonarrend","Пароль":"12we...","ТипПрокси":"http","АдресПрокси":"127.0.0.1","ПортПрокси":8071,"ЛогинПрокси":"proxyuser","ПарольПрокси":"12we..."}

View File

@@ -0,0 +1,37 @@
 Хост = "172.33.0.10";
Порт = "21";
Логин = "bayselonarrend";
Пароль = "12we...";
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
Если ИспользоватьПрокси Тогда
ТипПрокси = "http"; // http, socks5, socks4
АдресПрокси = "127.0.0.1";
ПортПрокси = "8071";
ЛогинПрокси = "proxyuser";
ПарольПрокси = "12we...";
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
КонецЕсли;
Если FTPS Тогда
НастройкиTls = OPI_FTP.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Результат = OPI_FTP.ОчиститьДиректорию(Соединение, "");
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;

View File

@@ -0,0 +1,73 @@
---
sidebar_position: 4
description: Очистить директорию и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Очистить директорию
Очищает выбранную директорию
`Функция ОчиститьДиректорию(Знач Соединение, Знач Путь) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Соединение | --conn | Произвольный | &#x2714; | Существующее соединение или конфигурация соединения |
| Путь | --path | Строка | &#x2714; | Путь к очищаемой директории |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат обработки
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Хост = "172.33.0.10";
Порт = "21";
Логин = "bayselonarrend";
Пароль = "12we...";
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
Если ИспользоватьПрокси Тогда
ТипПрокси = "http"; // http, socks5, socks4
АдресПрокси = "127.0.0.1";
ПортПрокси = "8071";
ЛогинПрокси = "proxyuser";
ПарольПрокси = "12we...";
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
КонецЕсли;
Если FTPS Тогда
НастройкиTls = OPI_FTP.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Результат = OPI_FTP.ОчиститьДиректорию(Соединение, "");
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;
```

View File

@@ -77,7 +77,7 @@ import TabItem from '@theme/TabItem';
# JSON данные также могут быть переданы как путь к файлу .json
oint ftp СоздатьДиректорию \
--conn "{'set':{'domain':'172.33.0.10','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}}" \
--conn "{'set':{'domain':'127.0.0.1','port':'2121','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--path "second_dir/another_one"
```
</TabItem>
@@ -87,7 +87,7 @@ import TabItem from '@theme/TabItem';
:: JSON данные также могут быть переданы как путь к файлу .json
oint ftp СоздатьДиректорию ^
--conn "{'set':{'domain':'172.33.0.10','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}}" ^
--conn "{'set':{'domain':'127.0.0.1','port':'2121','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--path "second_dir/another_one"
```
</TabItem>

View File

@@ -75,7 +75,7 @@ import TabItem from '@theme/TabItem';
# JSON данные также могут быть переданы как путь к файлу .json
oint ftp УдалитьДиректорию \
--conn "{'set':{'domain':'172.33.0.10','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}}" \
--conn "{'set':{'domain':'127.0.0.1','port':'2121','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--path "new_dir"
```
</TabItem>
@@ -85,7 +85,7 @@ import TabItem from '@theme/TabItem';
:: JSON данные также могут быть переданы как путь к файлу .json
oint ftp УдалитьДиректорию ^
--conn "{'set':{'domain':'172.33.0.10','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'}}" ^
--conn "{'set':{'domain':'127.0.0.1','port':'2121','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--path "new_dir"
```
</TabItem>

View File

@@ -76,7 +76,7 @@ import TabItem from '@theme/TabItem';
# JSON данные также могут быть переданы как путь к файлу .json
oint ftp ПолучитьСписокОбъектов \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'1080','proxy_type':'socks5','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--path "." \
--rcv "True"
```
@@ -87,7 +87,7 @@ import TabItem from '@theme/TabItem';
:: JSON данные также могут быть переданы как путь к файлу .json
oint ftp ПолучитьСписокОбъектов ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'1080','proxy_type':'socks5','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--path "." ^
--rcv "True"
```

View File

@@ -75,7 +75,7 @@ import TabItem from '@theme/TabItem';
# JSON данные также могут быть переданы как путь к файлу .json
oint ftp УдалитьФайл \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'1080','proxy_type':'socks5','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--path "pic_from_binary.png"
```
</TabItem>
@@ -85,7 +85,7 @@ import TabItem from '@theme/TabItem';
:: JSON данные также могут быть переданы как путь к файлу .json
oint ftp УдалитьФайл ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'1080','proxy_type':'socks5','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--path "pic_from_binary.png"
```
</TabItem>

View File

@@ -88,8 +88,8 @@ import TabItem from '@theme/TabItem';
oint ftp ЗагрузитьФайл \
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" \
--file "52 61 72 21 1A 07 01 00 30 23 12 A7 10 01 05 0C 00 0B 01 01 8B C8 8F A0 81 80 80 80 00 F8 44 59 F3 37 02 03 0B 85 E4 02 04 A0 DE 08 A0 40 52 47 4A ED 80 43 00 18 61 73 73 65 74 73 2F 69 6E 64…" \
--path "new_dir/big.bin"
--file "/tmp/0ktnecl3.jzu.png" \
--path "pic_from_binary.png"
```
</TabItem>
@@ -99,8 +99,8 @@ import TabItem from '@theme/TabItem';
oint ftp ЗагрузитьФайл ^
--conn "{'set':{'domain':'172.33.0.11','port':'21','passive':'***','read_timeout':'120','write_timeout':'120','advanced_resolve':'True','login':'bayselonarrend','password':'***'},'proxy':{'server':'127.0.0.1','port':'8071','proxy_type':'http','login':'proxyuser','password':'***'},'tls':{'use_tls':'True','accept_invalid_certs':'True','shutdown_delay':'250'}}" ^
--file "52 61 72 21 1A 07 01 00 30 23 12 A7 10 01 05 0C 00 0B 01 01 8B C8 8F A0 81 80 80 80 00 F8 44 59 F3 37 02 03 0B 85 E4 02 04 A0 DE 08 A0 40 52 47 4A ED 80 43 00 18 61 73 73 65 74 73 2F 69 6E 64…" ^
--path "new_dir/big.bin"
--file "/tmp/0ktnecl3.jzu.png" ^
--path "pic_from_binary.png"
```
</TabItem>
</Tabs>

File diff suppressed because it is too large Load Diff

View File

@@ -407,22 +407,22 @@ EndFunction
// Map Of KeyAndValue - Processing result
Function DeleteDirectory(Val Connection, Val Path) Export
CloseConnection = CheckCreateConnection(Connection);
Return ClearDeleteDirectory(Connection, Path, True);
If Not IsConnector(Connection) Then
Return Connection;
Else
EndFunction
OPI_TypeConversion.GetLine(Path);
Result = DeleteDirectoryRecursively(Connection, Path);
// Clear directory
// Deletes all objects in the selected directory
//
// Parameters:
// Connection - Arbitrary - Existing connection or connection configuration - conn
// Path - String - Path to the directory to be cleaned - path
//
// Returns:
// Map Of KeyAndValue - Processing result
Function ClearDirectory(Val Connection, Val Path) Export
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
Return ClearDeleteDirectory(Connection, Path, False);
EndFunction
@@ -625,7 +625,28 @@ Function CheckCreateConnection(Connection)
EndFunction
Function DeleteDirectoryRecursively(Val Connection, Val Path, DeletedArray = Undefined)
Function ClearDeleteDirectory(Val Connection, Val Path, Val DeleteCurrent)
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
Else
OPI_TypeConversion.GetLine(Path);
Result = DeleteDirectoryRecursively(Connection, Path, DeleteCurrent);
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
EndFunction
Function DeleteDirectoryRecursively(Val Connection, Val Path, Val DeleteCurrent = True, DeletedArray = Undefined)
If DeletedArray = Undefined Then
DeletedArray = New Array;
@@ -642,7 +663,7 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, DeletedArray = Und
ElementPath = Element["path"];
If Element["is_directory"] Then
Deletion = DeleteDirectoryRecursively(Connection, ElementPath, DeletedArray);
Deletion = DeleteDirectoryRecursively(Connection, ElementPath, DeleteCurrent, DeletedArray);
Else
Deletion = DeleteFile(Connection, ElementPath);
EndIf;
@@ -653,8 +674,13 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, DeletedArray = Und
EndDo;
EndIf;
Result = Connection.RemoveDirectory(Path);
Result = OPI_Tools.JsonToStructure(Result);
If Not Primary Or DeleteCurrent Then
Result = Connection.RemoveDirectory(Path);
Result = OPI_Tools.JsonToStructure(Result);
Else
Result = New Map;
Result.Insert("result", True);
EndIf;
If Primary Then
Result.Insert("deleted_elements", DeletedArray);
@@ -750,6 +776,10 @@ Function УдалитьДиректорию(Val Соединение, Val Пут
Return DeleteDirectory(Соединение, Путь);
EndFunction
Function ОчиститьДиректорию(Val Соединение, Val Путь) Export
Return ClearDirectory(Соединение, Путь);
EndFunction
Function ЗагрузитьФайл(Val Соединение, Val Файл, Val Путь) Export
Return UploadFile(Соединение, Файл, Путь);
EndFunction

View File

@@ -2891,8 +2891,9 @@ Procedure FT_DirecotryManagement() Export
For Each TestParameters In OptionArray Do
FTP_ListObjects(TestParameters);
FTP_ClearDirectory(TestParameters);
FTP_CreateDirectory(TestParameters);
FTP_ListObjects(TestParameters);
FTP_DeleteDirectory(TestParameters);
EndDo;
@@ -25313,7 +25314,7 @@ Procedure FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"], ImageDD.Size());
For N = 1 To 20 Do
For N = 1 To 7 Do
Result = OPI_FTP.UploadFile(Connection, Image, "new_dir/pic_from_disk.png");
Result2 = OPI_FTP.UploadFile(Connection, ImageDD, "pic_from_binary.png");
@@ -25466,6 +25467,64 @@ Procedure FTP_DeleteDirectory(FunctionParameters)
EndProcedure
Procedure FTP_ClearDirectory(FunctionParameters)
Host = FunctionParameters["FTP_IP"];
Port = FunctionParameters["FTP_Port"];
Login = FunctionParameters["FTP_User"];
Password = FunctionParameters["FTP_Password"];
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
UseProxy = FunctionParameters["Proxy"]; // SKIP
FTPS = FunctionParameters["TLS"]; // SKIP
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4
ProxyAddress = FunctionParameters["Proxy_IP"];
ProxyPort = FunctionParameters["Proxy_Port"];
ProxyLogin = FunctionParameters["Proxy_User"];
ProxyPassword = FunctionParameters["Proxy_Password"];
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.ClearDirectory(Connection, "");
Else
Result = Connection; // Error of connection
EndIf;
// END
Postfix = FunctionParameters["Postfix"];
OPI_TestDataRetrieval.WriteLog(Result, "ClearDirectory" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_FTP.ListObjects(Connection, "", True);
OPI_TestDataRetrieval.WriteLog(Result, "ClearDirectory (check)", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], 0);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -407,22 +407,22 @@ EndFunction
// Map Of KeyAndValue - Processing result
Function DeleteDirectory(Val Connection, Val Path) Export
CloseConnection = CheckCreateConnection(Connection);
Return ClearDeleteDirectory(Connection, Path, True);
If Not IsConnector(Connection) Then
Return Connection;
Else
EndFunction
OPI_TypeConversion.GetLine(Path);
Result = DeleteDirectoryRecursively(Connection, Path);
// Clear directory
// Deletes all objects in the selected directory
//
// Parameters:
// Connection - Arbitrary - Existing connection or connection configuration - conn
// Path - String - Path to the directory to be cleaned - path
//
// Returns:
// Map Of KeyAndValue - Processing result
Function ClearDirectory(Val Connection, Val Path) Export
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
Return ClearDeleteDirectory(Connection, Path, False);
EndFunction
@@ -625,7 +625,28 @@ Function CheckCreateConnection(Connection)
EndFunction
Function DeleteDirectoryRecursively(Val Connection, Val Path, DeletedArray = Undefined)
Function ClearDeleteDirectory(Val Connection, Val Path, Val DeleteCurrent)
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
Else
OPI_TypeConversion.GetLine(Path);
Result = DeleteDirectoryRecursively(Connection, Path, DeleteCurrent);
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
EndFunction
Function DeleteDirectoryRecursively(Val Connection, Val Path, Val DeleteCurrent = True, DeletedArray = Undefined)
If DeletedArray = Undefined Then
DeletedArray = New Array;
@@ -642,7 +663,7 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, DeletedArray = Und
ElementPath = Element["path"];
If Element["is_directory"] Then
Deletion = DeleteDirectoryRecursively(Connection, ElementPath, DeletedArray);
Deletion = DeleteDirectoryRecursively(Connection, ElementPath, DeleteCurrent, DeletedArray);
Else
Deletion = DeleteFile(Connection, ElementPath);
EndIf;
@@ -653,8 +674,13 @@ Function DeleteDirectoryRecursively(Val Connection, Val Path, DeletedArray = Und
EndDo;
EndIf;
Result = Connection.RemoveDirectory(Path);
Result = OPI_Tools.JsonToStructure(Result);
If Not Primary Or DeleteCurrent Then
Result = Connection.RemoveDirectory(Path);
Result = OPI_Tools.JsonToStructure(Result);
Else
Result = New Map;
Result.Insert("result", True);
EndIf;
If Primary Then
Result.Insert("deleted_elements", DeletedArray);

View File

@@ -2891,8 +2891,9 @@ Procedure FT_DirecotryManagement() Export
For Each TestParameters In OptionArray Do
FTP_ListObjects(TestParameters);
FTP_ClearDirectory(TestParameters);
FTP_CreateDirectory(TestParameters);
FTP_ListObjects(TestParameters);
FTP_DeleteDirectory(TestParameters);
EndDo;
@@ -25313,7 +25314,7 @@ Procedure FTP_UploadFile(FunctionParameters)
OPI_TestDataRetrieval.Check_Equality(Result["bytes"] , ImageDD.Size());
OPI_TestDataRetrieval.Check_Equality(Result2["bytes"], ImageDD.Size());
For N = 1 To 20 Do
For N = 1 To 7 Do
Result = OPI_FTP.UploadFile(Connection, Image, "new_dir/pic_from_disk.png");
Result2 = OPI_FTP.UploadFile(Connection, ImageDD, "pic_from_binary.png");
@@ -25466,6 +25467,64 @@ Procedure FTP_DeleteDirectory(FunctionParameters)
EndProcedure
Procedure FTP_ClearDirectory(FunctionParameters)
Host = FunctionParameters["FTP_IP"];
Port = FunctionParameters["FTP_Port"];
Login = FunctionParameters["FTP_User"];
Password = FunctionParameters["FTP_Password"];
UseProxy = True;
FTPS = True;
ProxySettings = Undefined;
TLSSettings = Undefined; // FTPS
UseProxy = FunctionParameters["Proxy"]; // SKIP
FTPS = FunctionParameters["TLS"]; // SKIP
FTPSettings = OPI_FTP.GetConnectionSettings(Host, Port, Login, Password);
If UseProxy Then
ProxyType = FunctionParameters["Proxy_Type"]; // http, socks5, socks4
ProxyAddress = FunctionParameters["Proxy_IP"];
ProxyPort = FunctionParameters["Proxy_Port"];
ProxyLogin = FunctionParameters["Proxy_User"];
ProxyPassword = FunctionParameters["Proxy_Password"];
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, ProxyPort, ProxyType, ProxyLogin, ProxyPassword);
EndIf;
If FTPS Then
TLSSettings = OPI_FTP.GetTlsSettings(True);
EndIf;
Connection = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
If OPI_FTP.IsConnector(Connection) Then
Result = OPI_FTP.ClearDirectory(Connection, "");
Else
Result = Connection; // Error of connection
EndIf;
// END
Postfix = FunctionParameters["Postfix"];
OPI_TestDataRetrieval.WriteLog(Result, "ClearDirectory" + Postfix, "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
Result = OPI_FTP.ListObjects(Connection, "", True);
OPI_TestDataRetrieval.WriteLog(Result, "ClearDirectory (check)", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
OPI_TestDataRetrieval.Check_Array(Result["data"], 0);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -295,6 +295,27 @@ Function GetComposition() Export
NewLine.Region = "Directory management";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "ClearDirectory";
NewLine.SearchMethod = "CLEARDIRECTORY";
NewLine.Parameter = "--conn";
NewLine.Description = "Existing connection or connection configuration";
NewLine.Region = "Directory management";
NewLine.MethodDescription = "Deletes all objects in the selected directory";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "ClearDirectory";
NewLine.SearchMethod = "CLEARDIRECTORY";
NewLine.Parameter = "--path";
NewLine.Description = "Path to the directory to be cleaned";
NewLine.Region = "Directory management";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";

View File

@@ -407,22 +407,22 @@
// Соответствие Из КлючИЗначение - Результат обработки
Функция УдалитьДиректорию(Знач Соединение, Знач Путь) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Возврат ОчиститьУдалитьДиректорию(Соединение, Путь, Истина);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
Иначе
КонецФункции
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
Результат = УдалитьДиректориюРекурсивно(Соединение, Путь);
// Очистить директорию
// Очищает выбранную директорию
//
// Параметры:
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
// Путь - Строка - Путь к очищаемой директории - path
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
Функция ОчиститьДиректорию(Знач Соединение, Знач Путь) Экспорт
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
Возврат ОчиститьУдалитьДиректорию(Соединение, Путь, Ложь);
КонецФункции
@@ -625,7 +625,28 @@
КонецФункции
Функция УдалитьДиректориюРекурсивно(Знач Соединение, Знач Путь, МассивУдаленных = Неопределено)
Функция ОчиститьУдалитьДиректорию(Знач Соединение, Знач Путь, Знач УдалятьТекущую)
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
Иначе
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
Результат = УдалитьДиректориюРекурсивно(Соединение, Путь, УдалятьТекущую);
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
КонецФункции
Функция УдалитьДиректориюРекурсивно(Знач Соединение, Знач Путь, Знач УдалятьТекущую = Истина, МассивУдаленных = Неопределено)
Если МассивУдаленных = Неопределено Тогда
МассивУдаленных = Новый Массив;
@@ -642,7 +663,7 @@
ПутьЭлемента = Элемент["path"];
Если Элемент["is_directory"] Тогда
Удаление = УдалитьДиректориюРекурсивно(Соединение, ПутьЭлемента, МассивУдаленных);
Удаление = УдалитьДиректориюРекурсивно(Соединение, ПутьЭлемента, УдалятьТекущую, МассивУдаленных);
Иначе
Удаление = УдалитьФайл(Соединение, ПутьЭлемента);
КонецЕсли;
@@ -653,8 +674,13 @@
КонецЦикла;
КонецЕсли;
Результат = Соединение.RemoveDirectory(Путь);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Если Не Основной Или УдалятьТекущую Тогда
Результат = Соединение.RemoveDirectory(Путь);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Иначе
Результат = Новый Соответствие;
Результат.Вставить("result", Истина);
КонецЕсли;
Если Основной Тогда
Результат.Вставить("deleted_elements", МассивУдаленных);
@@ -750,6 +776,10 @@ Function DeleteDirectory(Val Connection, Val Path) Export
Return УдалитьДиректорию(Connection, Path);
EndFunction
Function ClearDirectory(Val Connection, Val Path) Export
Return ОчиститьДиректорию(Connection, Path);
EndFunction
Function UploadFile(Val Connection, Val File, Val Path) Export
Return ЗагрузитьФайл(Connection, File, Path);
EndFunction

View File

@@ -2891,8 +2891,9 @@
Для Каждого ПараметрыТеста Из МассивВариантов Цикл
FTP_ПолучитьСписокОбъектов(ПараметрыТеста);
FTP_ОчиститьДиректорию(ПараметрыТеста);
FTP_СоздатьДиректорию(ПараметрыТеста);
FTP_ПолучитьСписокОбъектов(ПараметрыТеста);
FTP_УдалитьДиректорию(ПараметрыТеста);
КонецЦикла;
@@ -25313,7 +25314,7 @@
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат["bytes"] , КартинкаДД.Размер());
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Результат2["bytes"], КартинкаДД.Размер());
Для Н = 1 По 20 Цикл
Для Н = 1 По 7 Цикл
Результат = OPI_FTP.ЗагрузитьФайл(Соединение, Картинка, "new_dir/pic_from_disk.png");
Результат2 = OPI_FTP.ЗагрузитьФайл(Соединение, КартинкаДД, "pic_from_binary.png");
@@ -25466,6 +25467,64 @@
КонецПроцедуры
Процедура FTP_ОчиститьДиректорию(ПараметрыФункции)
Хост = ПараметрыФункции["FTP_IP"];
Порт = ПараметрыФункции["FTP_Port"];
Логин = ПараметрыФункции["FTP_User"];
Пароль = ПараметрыФункции["FTP_Password"];
ИспользоватьПрокси = Истина;
FTPS = Истина;
НастройкиПрокси = Неопределено;
НастройкиTls = Неопределено; // FTPS
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
FTPS = ПараметрыФункции["TLS"]; // SKIP
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
Если ИспользоватьПрокси Тогда
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
АдресПрокси = ПараметрыФункции["Proxy_IP"];
ПортПрокси = ПараметрыФункции["Proxy_Port"];
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
КонецЕсли;
Если FTPS Тогда
НастройкиTls = OPI_FTP.ПолучитьНастройкиTls(Истина);
КонецЕсли;
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTls);
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
Результат = OPI_FTP.ОчиститьДиректорию(Соединение, "");
Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли;
// END
Постфикс = ПараметрыФункции["Postfix"];
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьДиректорию" + Постфикс, "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_FTP.ПолучитьСписокОбъектов(Соединение, "", Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьДиректорию (проверка)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -413,7 +413,7 @@
// Очистить директорию
// Очищает выбранную директорию
//
//
// Параметры:
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
// Путь - Строка - Путь к очищаемой директории - path
@@ -421,9 +421,9 @@
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
Функция ОчиститьДиректорию(Знач Соединение, Знач Путь) Экспорт
Возврат ОчиститьУдалитьДиректорию(Соединение, Путь, Ложь);
КонецФункции
#КонецОбласти
@@ -643,7 +643,7 @@
КонецЕсли;
Возврат Результат;
КонецФункции
Функция УдалитьДиректориюРекурсивно(Знач Соединение, Знач Путь, Знач УдалятьТекущую = Истина, МассивУдаленных = Неопределено)

View File

@@ -2890,7 +2890,7 @@
МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровFTP();
Для Каждого ПараметрыТеста Из МассивВариантов Цикл
FTP_ОчиститьДиректорию(ПараметрыТеста);
FTP_СоздатьДиректорию(ПараметрыТеста);
FTP_ПолучитьСписокОбъектов(ПараметрыТеста);
@@ -25522,7 +25522,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьДиректорию (проверка)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0);
КонецПроцедуры
#КонецОбласти

View File

@@ -295,6 +295,27 @@
НоваяСтрока.Область = "Работа с директориями";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ОчиститьДиректорию";
НоваяСтрока.МетодПоиска = "ОЧИСТИТЬДИРЕКТОРИЮ";
НоваяСтрока.Параметр = "--conn";
НоваяСтрока.Описание = "Существующее соединение или конфигурация соединения";
НоваяСтрока.Область = "Работа с директориями";
НоваяСтрока.ОписаниеМетода = "Очищает выбранную директорию";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ОчиститьДиректорию";
НоваяСтрока.МетодПоиска = "ОЧИСТИТЬДИРЕКТОРИЮ";
НоваяСтрока.Параметр = "--path";
НоваяСтрока.Описание = "Путь к очищаемой директории";
НоваяСтрока.Область = "Работа с директориями";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";