1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-13 20:05:19 +02:00

Преобразование OPI -> OInt (workflow)

This commit is contained in:
Vitaly the Alpaca
2024-06-07 13:13:09 +00:00
committed by Vitaly the Alpaca (bot)
parent cc9122f87b
commit a701f38e3b
22 changed files with 382 additions and 382 deletions

View File

@@ -142,7 +142,7 @@
NewLine.Method = "GetObjectInformation";
NewLine.SearchMethod = "GETOBJECTINFORMATION";
NewLine.Parameter = "--detail";
NewLine.Description = "Adds additional information fields for media files (optional, def. val. - No)";
NewLine.Description = "Adds additional information fields for media files (optional, def. val. - False)";
NewLine.Region = "File and directory management";
@@ -173,7 +173,7 @@
NewLine.Method = "GetListOfFolderFiles";
NewLine.SearchMethod = "GETLISTOFFOLDERFILES";
NewLine.Parameter = "--detail";
NewLine.Description = "Adds additional information fields for media files (optional, def. val. - No)";
NewLine.Description = "Adds additional information fields for media files (optional, def. val. - False)";
NewLine.Region = "File and directory management";
@@ -245,7 +245,7 @@
NewLine.Method = "UploadFile";
NewLine.SearchMethod = "UPLOADFILE";
NewLine.Parameter = "--overwrite";
NewLine.Description = "Overwrite file in case of path conflicts (optional, def. val. - No)";
NewLine.Description = "Overwrite file in case of path conflicts (optional, def. val. - False)";
NewLine.Region = "File and directory management";
@@ -328,7 +328,7 @@
NewLine.Method = "DeleteObject";
NewLine.SearchMethod = "DELETEOBJECT";
NewLine.Parameter = "--permanently";
NewLine.Description = "Delete object without the possibility of recovery (optional, def. val. - No)";
NewLine.Description = "Delete object without the possibility of recovery (optional, def. val. - False)";
NewLine.Region = "File and directory management";
@@ -681,7 +681,7 @@
NewLine.Method = "AddUsersToFile";
NewLine.SearchMethod = "ADDUSERSTOFILE";
NewLine.Parameter = "--readonly";
NewLine.Description = "Prohibits file editing for the external user (optional, def. val. - Да)";
NewLine.Description = "Prohibits file editing for the external user (optional, def. val. - True)";
NewLine.Region = "Shared access settings";
@@ -722,7 +722,7 @@
NewLine.Method = "AddUsersToFolder";
NewLine.SearchMethod = "ADDUSERSTOFOLDER";
NewLine.Parameter = "--readonly";
NewLine.Description = "Prohibits file editing for the external user (optional, def. val. - Да)";
NewLine.Description = "Prohibits file editing for the external user (optional, def. val. - True)";
NewLine.Region = "Shared access settings";

View File

@@ -246,7 +246,7 @@
NewLine.Method = "EditListCalendar";
NewLine.SearchMethod = "EDITLISTCALENDAR";
NewLine.Parameter = "--hidden";
NewLine.Description = "Hidden calendar (optional, def. val. - No)";
NewLine.Description = "Hidden calendar (optional, def. val. - False)";
NewLine.Region = "Calendar list management";

View File

@@ -58,7 +58,7 @@
NewLine.Method = "GetDirectoriesList";
NewLine.SearchMethod = "GETDIRECTORIESLIST";
NewLine.Parameter = "--depth";
NewLine.Description = "Adds a list of files to the directory fields (optional, def. val. - No)";
NewLine.Description = "Adds a list of files to the directory fields (optional, def. val. - False)";
NewLine.Region = "File and directory management";

View File

@@ -27,7 +27,7 @@
NewLine.Method = "FormCodeRetrievalLink";
NewLine.SearchMethod = "FORMCODERETRIEVALLINK";
NewLine.Parameter = "--calendar";
NewLine.Description = "Calendar methods permission (optional, def. val. - Да)";
NewLine.Description = "Calendar methods permission (optional, def. val. - True)";
NewLine.Region = "Public";
@@ -37,7 +37,7 @@
NewLine.Method = "FormCodeRetrievalLink";
NewLine.SearchMethod = "FORMCODERETRIEVALLINK";
NewLine.Parameter = "--drive";
NewLine.Description = "Drive methods permission (optional, def. val. - Да)";
NewLine.Description = "Drive methods permission (optional, def. val. - True)";
NewLine.Region = "Public";
@@ -47,7 +47,7 @@
NewLine.Method = "FormCodeRetrievalLink";
NewLine.SearchMethod = "FORMCODERETRIEVALLINK";
NewLine.Parameter = "--sheets";
NewLine.Description = "Sheets methods permission (optional, def. val. - Да)";
NewLine.Description = "Sheets methods permission (optional, def. val. - True)";
NewLine.Region = "Public";

View File

@@ -165,7 +165,7 @@
NewLine.Method = "EditPageProperties";
NewLine.SearchMethod = "EDITPAGEPROPERTIES";
NewLine.Parameter = "--archive";
NewLine.Description = "Archive page or not (boolean) (optional, def. val. - No)";
NewLine.Description = "Archive page or not (boolean) (optional, def. val. - False)";
NewLine.Region = "Page management";
@@ -381,7 +381,7 @@
NewLine.Method = "ReturnBlock";
NewLine.SearchMethod = "RETURNBLOCK";
NewLine.Parameter = "--core";
NewLine.Description = "True > service fields are deleted, only the block itself remains (optional, def. val. - Да)";
NewLine.Description = "True > service fields are deleted, only the block itself remains (optional, def. val. - True)";
NewLine.Region = "Blocks managment";

View File

@@ -254,7 +254,7 @@
NewLine.Method = "DeleteMessage";
NewLine.SearchMethod = "DELETEMESSAGE";
NewLine.Parameter = "--issheduled";
NewLine.Description = "Indicator of deleting a delayed message (optional, def. val. - No)";
NewLine.Description = "Indicator of deleting a delayed message (optional, def. val. - False)";
NewLine.Region = "Message management";
@@ -378,7 +378,7 @@
NewLine.Method = "GetChannelList";
NewLine.SearchMethod = "GETCHANNELLIST";
NewLine.Parameter = "--notarchived";
NewLine.Description = "Indicator of excluding archived channels (optional, def. val. - No)";
NewLine.Description = "Indicator of excluding archived channels (optional, def. val. - False)";
NewLine.Region = "Channel management";
@@ -450,7 +450,7 @@
NewLine.Method = "CreateChannel";
NewLine.SearchMethod = "CREATECHANNEL";
NewLine.Parameter = "--private";
NewLine.Description = "Create channel as private (optional, def. val. - No)";
NewLine.Description = "Create channel as private (optional, def. val. - False)";
NewLine.Region = "Channel management";

View File

@@ -689,7 +689,7 @@
NewLine.Method = "SendPoll";
NewLine.SearchMethod = "SENDPOLL";
NewLine.Parameter = "--anonymous";
NewLine.Description = "Poll anonymity (optional, def. val. - Да)";
NewLine.Description = "Poll anonymity (optional, def. val. - True)";
NewLine.Region = "Data sending";
@@ -751,7 +751,7 @@
NewLine.Method = "FormKeyboardFromButtonArray";
NewLine.SearchMethod = "FORMKEYBOARDFROMBUTTONARRAY";
NewLine.Parameter = "--under";
NewLine.Description = "Keyboard under the message or on the bottom panel (optional, def. val. - No)";
NewLine.Description = "Keyboard under the message or on the bottom panel (optional, def. val. - False)";
NewLine.Region = "Data sending";
@@ -761,7 +761,7 @@
NewLine.Method = "FormKeyboardFromButtonArray";
NewLine.SearchMethod = "FORMKEYBOARDFROMBUTTONARRAY";
NewLine.Parameter = "--column";
NewLine.Description = "True > buttons are displayed in a column, False > in a row (optional, def. val. - Да)";
NewLine.Description = "True > buttons are displayed in a column, False > in a row (optional, def. val. - True)";
NewLine.Region = "Data sending";

View File

@@ -1,67 +1,67 @@
Function GetComposition() Export
TableСоwithтаinа = New ValueTable();
TableСоwithтаinа.Columns.Add("Library");
TableСоwithтаinа.Columns.Add("Module");
TableСоwithтаinа.Columns.Add("Method");
TableСоwithтаinа.Columns.Add("SearchMethod");
TableСоwithтаinа.Columns.Add("Parameter");
TableСоwithтаinа.Columns.Add("Description");
TableСоwithтаinа.Columns.Add("MethodDescription");
TableСоwithтаinа.Columns.Add("Region");
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--json";
NewLine.Description = "JSON data";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine.MethodDescription = "Displays the values that can be obtained from the passed JSON and returns
| Specific Value When Specifying Field Name";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--nesting";
NewLine.Description = "Parsing depth limit. Full depth by default (optional, def. val. - Empty)";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--name";
NewLine.Description = "Field name to retrieve. Displays the entire list if not specified (optional, def. val. - Empty)";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--enc";
NewLine.Description = "Encoding of JSON Data (optional, def. val. - UTF-8)";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ConvertBase64ToBinary";
NewLine.SearchMethod = "ПРЕОБРАЗОInАТЬBASE64InДInОAndЧNЫЕ";
NewLine.Parameter = "--in";
NewLine.Description = "Base64 File";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine.MethodDescription = "Convert file with Base64 string to binary file";
Return TableСоwithтаinа;
EndFunction
Function GetComposition() Export
TableСоwithтаinа = New ValueTable();
TableСоwithтаinа.Columns.Add("Library");
TableСоwithтаinа.Columns.Add("Module");
TableСоwithтаinа.Columns.Add("Method");
TableСоwithтаinа.Columns.Add("SearchMethod");
TableСоwithтаinа.Columns.Add("Parameter");
TableСоwithтаinа.Columns.Add("Description");
TableСоwithтаinа.Columns.Add("MethodDescription");
TableСоwithтаinа.Columns.Add("Region");
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--json";
NewLine.Description = "JSON data";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine.MethodDescription = "Displays the values that can be obtained from the passed JSON and returns
| Specific Value When Specifying Field Name";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--nesting";
NewLine.Description = "Parsing depth limit. Full depth by default (optional, def. val. - Empty)";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--name";
NewLine.Description = "Field name to retrieve. Displays the entire list if not specified (optional, def. val. - Empty)";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ParseJSON";
NewLine.SearchMethod = "РАЗЛОЖAndТЬJSON";
NewLine.Parameter = "--enc";
NewLine.Description = "Encoding of JSON Data (optional, def. val. - UTF-8)";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine = TableСоwithтаinа.Add();
NewLine.Library = "tools";
NewLine.Module = "Утorты";
NewLine.Method = "ConvertBase64ToBinary";
NewLine.SearchMethod = "ПРЕОБРАЗОInАТЬBASE64InДInОAndЧNЫЕ";
NewLine.Parameter = "--in";
NewLine.Description = "Base64 File";
NewLine.Region = "Служебный программный andнтерфейwith";
NewLine.MethodDescription = "Convert file with Base64 string to binary file";
Return TableСоwithтаinа;
EndFunction

View File

@@ -58,7 +58,7 @@
NewLine.Method = "CreatePost";
NewLine.SearchMethod = "CREATEPOST";
NewLine.Parameter = "--ad";
NewLine.Description = "Sign ""This is an ad"" (optional, def. val. - No)";
NewLine.Description = "Sign ""This is an ad"" (optional, def. val. - False)";
NewLine.Region = "Community managment";
@@ -118,7 +118,7 @@
NewLine.Method = "CreateCompositePost";
NewLine.SearchMethod = "CREATECOMPOSITEPOST";
NewLine.Parameter = "--ad";
NewLine.Description = "Sign ""This is an ad"" (optional, def. val. - No)";
NewLine.Description = "Sign ""This is an ad"" (optional, def. val. - False)";
NewLine.Region = "Community managment";
@@ -578,7 +578,7 @@
NewLine.Method = "CloseDiscussion";
NewLine.SearchMethod = "CLOSEDISCUSSION";
NewLine.Parameter = "--remove";
NewLine.Description = "Delete completely (True) or close (optional, def. val. - No)";
NewLine.Description = "Delete completely (True) or close (optional, def. val. - False)";
NewLine.Region = "Discussion management";
@@ -748,7 +748,7 @@
NewLine.Method = "MakeRepost";
NewLine.SearchMethod = "MAKEREPOST";
NewLine.Parameter = "--ad";
NewLine.Description = "Sign of an advertising post (optional, def. val. - No)";
NewLine.Description = "Sign of an advertising post (optional, def. val. - False)";
NewLine.Region = "Interactive actions";
@@ -1510,7 +1510,7 @@
NewLine.Method = "CreateProductCollection";
NewLine.SearchMethod = "CREATEPRODUCTCOLLECTION";
NewLine.Parameter = "--main";
NewLine.Description = "Main (optional, def. val. - No)";
NewLine.Description = "Main (optional, def. val. - False)";
NewLine.Region = "Product selection management";
@@ -1520,7 +1520,7 @@
NewLine.Method = "CreateProductCollection";
NewLine.SearchMethod = "CREATEPRODUCTCOLLECTION";
NewLine.Parameter = "--hidden";
NewLine.Description = "Hidden (optional, def. val. - No)";
NewLine.Description = "Hidden (optional, def. val. - False)";
NewLine.Region = "Product selection management";
@@ -1580,7 +1580,7 @@
NewLine.Method = "EditProductCollection";
NewLine.SearchMethod = "EDITPRODUCTCOLLECTION";
NewLine.Parameter = "--main";
NewLine.Description = "Main (optional, def. val. - No)";
NewLine.Description = "Main (optional, def. val. - False)";
NewLine.Region = "Product selection management";
@@ -1590,7 +1590,7 @@
NewLine.Method = "EditProductCollection";
NewLine.SearchMethod = "EDITPRODUCTCOLLECTION";
NewLine.Parameter = "--hidden";
NewLine.Description = "Hidden (optional, def. val. - No)";
NewLine.Description = "Hidden (optional, def. val. - False)";
NewLine.Region = "Product selection management";

View File

@@ -90,7 +90,7 @@
NewLine.Method = "DeleteObject";
NewLine.SearchMethod = "DELETEOBJECT";
NewLine.Parameter = "--can";
NewLine.Description = "To cart (optional, def. val. - Да)";
NewLine.Description = "To cart (optional, def. val. - True)";
NewLine.Region = "File and folder management";
@@ -131,7 +131,7 @@
NewLine.Method = "CreateObjectCopy";
NewLine.SearchMethod = "CREATEOBJECTCOPY";
NewLine.Parameter = "--rewrite";
NewLine.Description = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Description = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Region = "File and folder management";
@@ -237,7 +237,7 @@
NewLine.Method = "GetFilesList";
NewLine.SearchMethod = "GETFILESLIST";
NewLine.Parameter = "--datesort";
NewLine.Description = "True > sort by date, False > alphabetically (optional, def. val. - No)";
NewLine.Description = "True > sort by date, False > alphabetically (optional, def. val. - False)";
NewLine.Region = "File and folder management";
@@ -278,7 +278,7 @@
NewLine.Method = "MoveObject";
NewLine.SearchMethod = "MOVEOBJECT";
NewLine.Parameter = "--rewrite";
NewLine.Description = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Description = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Region = "File and folder management";
@@ -319,7 +319,7 @@
NewLine.Method = "UploadFile";
NewLine.SearchMethod = "UPLOADFILE";
NewLine.Parameter = "--rewrite";
NewLine.Description = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Description = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Region = "File and folder management";

View File

@@ -6,20 +6,20 @@
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
СоответствиеКомандМодулей = Новый Соответствие();
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
Возврат СоответствиеКомандМодулей;
КонецФункции

View File

@@ -1,232 +1,232 @@
// CLI Command: tools
Var MaximumNesting;
Var DesiredParameter;
#Region Internal
// Parse JSON to Parameters
// Displays the values that can be obtained from the passed JSON and returns
// Specific Value When Specifying Field Name
//
// Parameters:
// JSON - String - JSON data - json
// MaximumNestingLevel - Number - Parsing depth limit. Full depth by default - nesting
// ParameterName - String - Field name to retrieve. Displays the entire list if not specified - name
// Encoding - String - Encoding of JSON Data - enc
//
// Returns:
// String - empty string
Function ParseJSON(Val JSON
, Val MaximumNestingLevel = 0
, Val ParameterName = ""
, Val Encoding = "UTF-8") Export
MaximumNesting = Number(MaximumNestingLevel);
DesiredParameter = ParameterName;
GetCollection(JSON, Encoding);
If Not TypeOf(JSON) = Type("Map") Then
Raise "JSON Parameter Data Conversion Error";
EndIf;
Value = GetValuesRecursively(JSON);
Return Value;
EndFunction
// Convert Base64 String to Binary File
// Convert file with Base64 string to binary file
//
// Parameters:
// Entry - String - Base64 File - in
//
// Returns:
// String - empty string
Function ConvertBase64ToBinary(Val Entry) Export
InputFile = New File(Entry);
If Not InputFile.Exists() Then
Raise("Input File Not Found!");
EndIf;
TextDocument = New TextDocument();
TextDocument.Read(Entry);
B64 = TextDocument.GetText();
BD = Base64Value(B64);
Return BD;
EndFunction
#EndRegion
#Region Private
Function GetValuesRecursively(Val JSON, Val Prefix = "", Val CurrentNesting = 1, FieldMapping = "")
If Not ValueIsFilled(FieldMapping) Then
FieldMapping = New Map;
EndIf;
ReturnValue = "";
For Each Pair In JSON Do
Value = Pair.Value;
Key = Prefix + String(Pair.Key);
ThisIsCollection = TypeOf(Value) = Type("Map") Or TypeOf(Value) = Type("Structure");
NextNesting = CurrentNesting + 1;
NextNestingAvailable = MaximumNesting = 0 Or NextNesting <= MaximumNesting;
If Not ThisIsCollection Or Not NextNestingAvailable Then
duplicates = FieldMapping.Get(Key);
If duplicates = Undefined Then
Counter = 0;
EnvironmentVariable = Key;
Else
Counter = duplicates + 1;
EnvironmentVariable = Key + StrReplace(String(duplicates), Chars.NPP, "");
EndIf;
FieldMapping.Insert(Key, Counter);
GetLine(Value);
If Not ValueIsFilled(DesiredParameter) Then
Message(EnvironmentVariable, MessageStatus.Information);
Message(Value + Chars.LF, MessageStatus.Attention);
Else
If EnvironmentVariable = DesiredParameter Then
ReturnValue = Value;
Break;
EndIf;
EndIf;
Else
NewPrefix = Key + "_";
ReturnValue = GetValuesRecursively(Value
, NewPrefix
, NextNesting
, FieldMapping);
If ValueIsFilled(ReturnValue) Then
Break;
EndIf;
EndIf;
EndDo;
Return ?(ValueIsFilled(ReturnValue), ReturnValue, Chars.LF);
EndFunction
Procedure GetLine(Value)
ThisIsCollection = TypeOf(Value) = Type("Map") Or TypeOf(Value) = Type("Structure") Or TypeOf(Value) = Type("Array");
If ThisIsCollection Then
JSONParameters = New JSONWriterSettings(JSONLineBreak.Windows
, " "
, True
, True
, False
, False
, False
, False);
JSONWriter = New JSONWriter;
JSONWriter.SetString(JSONParameters);
WriteJSON(JSONWriter, Value);
Value = JSONWriter.Close();
Else
Value = String(Value);
EndIf;
EndProcedure
Procedure GetCollection(Value, Val Encoding)
If Value = Undefined Then
Return;
EndIf;
InitialValue = Value;
If ThisIsCollection(Value) Then
Return;
Else
If TypeOf(Value) = Type("BinaryData") Then
Value = GetStringFromBinaryData(Value, Encoding);
Else
Value = String(Value);
EndIf;
File = New File(Value);
TextDocument = New TextDocument();
If File.Exists() Then
TextDocument.Read(Value, Encoding);
Value = TextDocument.GetText();
ElsIf StrStartsWith(Lower(Value), "http") Then
TFN = GetTempFileName();
CopyFile(Value, TFN);
TextDocument.Read(TFN, Encoding);
Value = TextDocument.GetText();
DeleteFiles(TFN);
Else
Value = String(Value);
EndIf;
EndIf;
NormalizeTextInput(Value);
JSONReader = New JSONReader;
JSONReader.SetString(TrimAll(Value));
Value = ReadJSON(JSONReader, True, Undefined, JSONDateFormat.ISO);
JSONReader.Close();
EndProcedure
Procedure NormalizeTextInput(Text)
InitialCurly = StrFind(Text, "{");
LastCurly = StrFind(Text, "}", SearchDirection.FromEnd);
If InitialCurly = 0 Or LastCurly = 0 Then
Return;
EndIf;
Text = Mid(Text, InitialCurly, LastCurly - InitialCurly + 1);
EndProcedure
Function ThisIsCollection(Val Value)
Return TypeOf(Value) = Type("Array")
Or TypeOf(Value) = Type("Structure")
Or TypeOf(Value) = Type("Map");
EndFunction
#EndRegion
// CLI Command: tools
Var MaximumNesting;
Var DesiredParameter;
#Region Internal
// Parse JSON to Parameters
// Displays the values that can be obtained from the passed JSON and returns
// Specific Value When Specifying Field Name
//
// Parameters:
// JSON - String - JSON data - json
// MaximumNestingLevel - Number - Parsing depth limit. Full depth by default - nesting
// ParameterName - String - Field name to retrieve. Displays the entire list if not specified - name
// Encoding - String - Encoding of JSON Data - enc
//
// Returns:
// String - empty string
Function ParseJSON(Val JSON
, Val MaximumNestingLevel = 0
, Val ParameterName = ""
, Val Encoding = "UTF-8") Export
MaximumNesting = Number(MaximumNestingLevel);
DesiredParameter = ParameterName;
GetCollection(JSON, Encoding);
If Not TypeOf(JSON) = Type("Map") Then
Raise "JSON Parameter Data Conversion Error";
EndIf;
Value = GetValuesRecursively(JSON);
Return Value;
EndFunction
// Convert Base64 String to Binary File
// Convert file with Base64 string to binary file
//
// Parameters:
// Entry - String - Base64 File - in
//
// Returns:
// String - empty string
Function ConvertBase64ToBinary(Val Entry) Export
InputFile = New File(Entry);
If Not InputFile.Exists() Then
Raise("Input File Not Found!");
EndIf;
TextDocument = New TextDocument();
TextDocument.Read(Entry);
B64 = TextDocument.GetText();
BD = Base64Value(B64);
Return BD;
EndFunction
#EndRegion
#Region Private
Function GetValuesRecursively(Val JSON, Val Prefix = "", Val CurrentNesting = 1, FieldMapping = "")
If Not ValueIsFilled(FieldMapping) Then
FieldMapping = New Map;
EndIf;
ReturnValue = "";
For Each Pair In JSON Do
Value = Pair.Value;
Key = Prefix + String(Pair.Key);
ThisIsCollection = TypeOf(Value) = Type("Map") Or TypeOf(Value) = Type("Structure");
NextNesting = CurrentNesting + 1;
NextNestingAvailable = MaximumNesting = 0 Or NextNesting <= MaximumNesting;
If Not ThisIsCollection Or Not NextNestingAvailable Then
duplicates = FieldMapping.Get(Key);
If duplicates = Undefined Then
Counter = 0;
EnvironmentVariable = Key;
Else
Counter = duplicates + 1;
EnvironmentVariable = Key + StrReplace(String(duplicates), Chars.NPP, "");
EndIf;
FieldMapping.Insert(Key, Counter);
GetLine(Value);
If Not ValueIsFilled(DesiredParameter) Then
Message(EnvironmentVariable, MessageStatus.Information);
Message(Value + Chars.LF, MessageStatus.Attention);
Else
If EnvironmentVariable = DesiredParameter Then
ReturnValue = Value;
Break;
EndIf;
EndIf;
Else
NewPrefix = Key + "_";
ReturnValue = GetValuesRecursively(Value
, NewPrefix
, NextNesting
, FieldMapping);
If ValueIsFilled(ReturnValue) Then
Break;
EndIf;
EndIf;
EndDo;
Return ?(ValueIsFilled(ReturnValue), ReturnValue, Chars.LF);
EndFunction
Procedure GetLine(Value)
ThisIsCollection = TypeOf(Value) = Type("Map") Or TypeOf(Value) = Type("Structure") Or TypeOf(Value) = Type("Array");
If ThisIsCollection Then
JSONParameters = New JSONWriterSettings(JSONLineBreak.Windows
, " "
, True
, True
, False
, False
, False
, False);
JSONWriter = New JSONWriter;
JSONWriter.SetString(JSONParameters);
WriteJSON(JSONWriter, Value);
Value = JSONWriter.Close();
Else
Value = String(Value);
EndIf;
EndProcedure
Procedure GetCollection(Value, Val Encoding)
If Value = Undefined Then
Return;
EndIf;
InitialValue = Value;
If ThisIsCollection(Value) Then
Return;
Else
If TypeOf(Value) = Type("BinaryData") Then
Value = GetStringFromBinaryData(Value, Encoding);
Else
Value = String(Value);
EndIf;
File = New File(Value);
TextDocument = New TextDocument();
If File.Exists() Then
TextDocument.Read(Value, Encoding);
Value = TextDocument.GetText();
ElsIf StrStartsWith(Lower(Value), "http") Then
TFN = GetTempFileName();
CopyFile(Value, TFN);
TextDocument.Read(TFN, Encoding);
Value = TextDocument.GetText();
DeleteFiles(TFN);
Else
Value = String(Value);
EndIf;
EndIf;
NormalizeTextInput(Value);
JSONReader = New JSONReader;
JSONReader.SetString(TrimAll(Value));
Value = ReadJSON(JSONReader, True, Undefined, JSONDateFormat.ISO);
JSONReader.Close();
EndProcedure
Procedure NormalizeTextInput(Text)
InitialCurly = StrFind(Text, "{");
LastCurly = StrFind(Text, "}", SearchDirection.FromEnd);
If InitialCurly = 0 Or LastCurly = 0 Then
Return;
EndIf;
Text = Mid(Text, InitialCurly, LastCurly - InitialCurly + 1);
EndProcedure
Function ThisIsCollection(Val Value)
Return TypeOf(Value) = Type("Array")
Or TypeOf(Value) = Type("Structure")
Or TypeOf(Value) = Type("Map");
EndFunction
#EndRegion

View File

@@ -142,7 +142,7 @@
НоваяСтрока.Метод = "ПолучитьИнформациюОбОбъекте";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬИНФОРМАЦИЮОБОБЪЕКТЕ";
НоваяСтрока.Параметр = "--detail";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и каталогами";
@@ -173,7 +173,7 @@
НоваяСтрока.Метод = "ПолучитьСписокФайловПапки";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКФАЙЛОВПАПКИ";
НоваяСтрока.Параметр = "--detail";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Добавляет дополнительные поля информации для медиафайлов (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и каталогами";
@@ -245,7 +245,7 @@
НоваяСтрока.Метод = "ЗагрузитьФайл";
НоваяСтрока.МетодПоиска = "ЗАГРУЗИТЬФАЙЛ";
НоваяСтрока.Параметр = "--overwrite";
НоваяСтрока.Описание = "Перезаписывать файл при конфликте путей (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Перезаписывать файл при конфликте путей (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и каталогами";
@@ -689,7 +689,7 @@
НоваяСтрока.Метод = "ДобавитьПользователейКФайлу";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬПОЛЬЗОВАТЕЛЕЙКФАЙЛУ";
НоваяСтрока.Параметр = "--readonly";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - Да)";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - True)";
НоваяСтрока.Область = "Настройки совместного доступа";
@@ -734,7 +734,7 @@
НоваяСтрока.Метод = "ДобавитьПользователейКПапке";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬПОЛЬЗОВАТЕЛЕЙКПАПКЕ";
НоваяСтрока.Параметр = "--readonly";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - Да)";
НоваяСтрока.Описание = "Запрещает редактирование файла для стороннего пользователя (необяз. по ум. - True)";
НоваяСтрока.Область = "Настройки совместного доступа";

View File

@@ -246,7 +246,7 @@
НоваяСтрока.Метод = "ИзменитьКалендарьСписка";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬКАЛЕНДАРЬСПИСКА";
НоваяСтрока.Параметр = "--hidden";
НоваяСтрока.Описание = "Скрытый календарь (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Скрытый календарь (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа со списком календарей";

View File

@@ -58,7 +58,7 @@
НоваяСтрока.Метод = "ПолучитьСписокКаталогов";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОККАТАЛОГОВ";
НоваяСтрока.Параметр = "--depth";
НоваяСтрока.Описание = "Добавляет список файлов к полям каталога (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Добавляет список файлов к полям каталога (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и каталогами";

View File

@@ -27,7 +27,7 @@
НоваяСтрока.Метод = "СформироватьСсылкуПолученияКода";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬССЫЛКУПОЛУЧЕНИЯКОДА";
НоваяСтрока.Параметр = "--calendar";
НоваяСтрока.Описание = "разрешение на методы Calendar (необяз. по ум. - Да)";
НоваяСтрока.Описание = "разрешение на методы Calendar (необяз. по ум. - True)";
НоваяСтрока.Область = "Программный интерфейс";
@@ -37,7 +37,7 @@
НоваяСтрока.Метод = "СформироватьСсылкуПолученияКода";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬССЫЛКУПОЛУЧЕНИЯКОДА";
НоваяСтрока.Параметр = "--drive";
НоваяСтрока.Описание = "разрешение на методы Drive (необяз. по ум. - Да)";
НоваяСтрока.Описание = "разрешение на методы Drive (необяз. по ум. - True)";
НоваяСтрока.Область = "Программный интерфейс";
@@ -47,7 +47,7 @@
НоваяСтрока.Метод = "СформироватьСсылкуПолученияКода";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬССЫЛКУПОЛУЧЕНИЯКОДА";
НоваяСтрока.Параметр = "--sheets";
НоваяСтрока.Описание = "разрешение на методы Sheets (необяз. по ум. - Да)";
НоваяСтрока.Описание = "разрешение на методы Sheets (необяз. по ум. - True)";
НоваяСтрока.Область = "Программный интерфейс";

View File

@@ -165,7 +165,7 @@
НоваяСтрока.Метод = "ИзменитьСвойстваСтраницы";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬСВОЙСТВАСТРАНИЦЫ";
НоваяСтрока.Параметр = "--archive";
НоваяСтрока.Описание = "Архивировать страницу или нет (булево) (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Архивировать страницу или нет (булево) (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа со страницами";
@@ -381,7 +381,7 @@
НоваяСтрока.Метод = "ВернутьБлок";
НоваяСтрока.МетодПоиска = "ВЕРНУТЬБЛОК";
НоваяСтрока.Параметр = "--core";
НоваяСтрока.Описание = "Истина > служебные поля удаляются, остается только сам блок (необяз. по ум. - Да)";
НоваяСтрока.Описание = "Истина > служебные поля удаляются, остается только сам блок (необяз. по ум. - True)";
НоваяСтрока.Область = "Работа с блоками";

View File

@@ -272,7 +272,7 @@
НоваяСтрока.Метод = "УдалитьСообщение";
НоваяСтрока.МетодПоиска = "УДАЛИТЬСООБЩЕНИЕ";
НоваяСтрока.Параметр = "--issheduled";
НоваяСтрока.Описание = "Признак удаления отложенного сообщения (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Признак удаления отложенного сообщения (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с сообщениями";
@@ -396,7 +396,7 @@
НоваяСтрока.Метод = "ПолучитьСписокКаналов";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОККАНАЛОВ";
НоваяСтрока.Параметр = "--notarchived";
НоваяСтрока.Описание = "Признак исключения архивированных каналов (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Признак исключения архивированных каналов (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с каналами";
@@ -468,7 +468,7 @@
НоваяСтрока.Метод = "СоздатьКанал";
НоваяСтрока.МетодПоиска = "СОЗДАТЬКАНАЛ";
НоваяСтрока.Параметр = "--private";
НоваяСтрока.Описание = "Создать канал приватным (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Создать канал приватным (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с каналами";

View File

@@ -693,7 +693,7 @@
НоваяСтрока.Метод = "ОтправитьОпрос";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬОПРОС";
НоваяСтрока.Параметр = "--anonymous";
НоваяСтрока.Описание = "Анонимность опроса (необяз. по ум. - Да)";
НоваяСтрока.Описание = "Анонимность опроса (необяз. по ум. - True)";
НоваяСтрока.Область = "Отправка данных";
@@ -759,7 +759,7 @@
НоваяСтрока.Метод = "СформироватьКлавиатуруПоМассивуКнопок";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬКЛАВИАТУРУПОМАССИВУКНОПОК";
НоваяСтрока.Параметр = "--under";
НоваяСтрока.Описание = "Клавиатура под сообщением или на нижней панели (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Клавиатура под сообщением или на нижней панели (необяз. по ум. - False)";
НоваяСтрока.Область = "Отправка данных";
@@ -769,7 +769,7 @@
НоваяСтрока.Метод = "СформироватьКлавиатуруПоМассивуКнопок";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬКЛАВИАТУРУПОМАССИВУКНОПОК";
НоваяСтрока.Параметр = "--column";
НоваяСтрока.Описание = "Истина > кнопки выводятся в столбик, Ложь > в строку (необяз. по ум. - Да)";
НоваяСтрока.Описание = "Истина > кнопки выводятся в столбик, Ложь > в строку (необяз. по ум. - True)";
НоваяСтрока.Область = "Отправка данных";

View File

@@ -62,7 +62,7 @@
НоваяСтрока.Метод = "СоздатьПост";
НоваяСтрока.МетодПоиска = "СОЗДАТЬПОСТ";
НоваяСтрока.Параметр = "--ad";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с группой";
@@ -126,7 +126,7 @@
НоваяСтрока.Метод = "СоздатьСоставнойПост";
НоваяСтрока.МетодПоиска = "СОЗДАТЬСОСТАВНОЙПОСТ";
НоваяСтрока.Параметр = "--ad";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Признак ""Это реклама"" (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с группой";
@@ -590,7 +590,7 @@
НоваяСтрока.Метод = "ЗакрытьОбсуждение";
НоваяСтрока.МетодПоиска = "ЗАКРЫТЬОБСУЖДЕНИЕ";
НоваяСтрока.Параметр = "--remove";
НоваяСтрока.Описание = "Удалить полностью (Истина) или закрыть (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Удалить полностью (Истина) или закрыть (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с обсуждениями";
@@ -760,7 +760,7 @@
НоваяСтрока.Метод = "СделатьРепост";
НоваяСтрока.МетодПоиска = "СДЕЛАТЬРЕПОСТ";
НоваяСтрока.Параметр = "--ad";
НоваяСтрока.Описание = "Признак рекламного поста (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Признак рекламного поста (необяз. по ум. - False)";
НоваяСтрока.Область = "Интерактивные действия";
@@ -1544,7 +1544,7 @@
НоваяСтрока.Метод = "СоздатьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "СОЗДАТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--main";
НоваяСтрока.Описание = "Основная (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Основная (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с подборками товаров";
@@ -1554,7 +1554,7 @@
НоваяСтрока.Метод = "СоздатьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "СОЗДАТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--hidden";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с подборками товаров";
@@ -1614,7 +1614,7 @@
НоваяСтрока.Метод = "ИзменитьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--main";
НоваяСтрока.Описание = "Основная (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Основная (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с подборками товаров";
@@ -1624,7 +1624,7 @@
НоваяСтрока.Метод = "ИзменитьПодборкуТоваров";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬПОДБОРКУТОВАРОВ";
НоваяСтрока.Параметр = "--hidden";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Скрытая (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с подборками товаров";

View File

@@ -90,7 +90,7 @@
НоваяСтрока.Метод = "УдалитьОбъект";
НоваяСтрока.МетодПоиска = "УДАЛИТЬОБЪЕКТ";
НоваяСтрока.Параметр = "--can";
НоваяСтрока.Описание = "В корзину (необяз. по ум. - Да)";
НоваяСтрока.Описание = "В корзину (необяз. по ум. - True)";
НоваяСтрока.Область = "Работа с файлами и папками";
@@ -131,7 +131,7 @@
НоваяСтрока.Метод = "СоздатьКопиюОбъекта";
НоваяСтрока.МетодПоиска = "СОЗДАТЬКОПИЮОБЪЕКТА";
НоваяСтрока.Параметр = "--rewrite";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и папками";
@@ -237,7 +237,7 @@
НоваяСтрока.Метод = "ПолучитьСписокФайлов";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКФАЙЛОВ";
НоваяСтрока.Параметр = "--datesort";
НоваяСтрока.Описание = "Истина > сортировать по дате, Ложь > по алфавиту (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Истина > сортировать по дате, Ложь > по алфавиту (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и папками";
@@ -278,7 +278,7 @@
НоваяСтрока.Метод = "ПереместитьОбъект";
НоваяСтрока.МетодПоиска = "ПЕРЕМЕСТИТЬОБЪЕКТ";
НоваяСтрока.Параметр = "--rewrite";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Перезаписывать если файл с таким именем уже существует (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и папками";
@@ -319,7 +319,7 @@
НоваяСтрока.Метод = "ЗагрузитьФайл";
НоваяСтрока.МетодПоиска = "ЗАГРУЗИТЬФАЙЛ";
НоваяСтрока.Параметр = "--rewrite";
НоваяСтрока.Описание = "Перезаписывать, если файл с таким именем уже существует (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Перезаписывать, если файл с таким именем уже существует (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с файлами и папками";

View File

@@ -6,20 +6,20 @@
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
СоответствиеКомандМодулей = Новый Соответствие();
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
Возврат СоответствиеКомандМодулей;
КонецФункции