1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-27 02:43:54 +02:00
This commit is contained in:
Anton 2024-07-20 19:25:33 +03:00
commit 7538377f3a
32 changed files with 4709 additions and 4724 deletions

View File

@ -1,103 +0,0 @@
# Добро подаловать в правила участия проекта Открытого пакета интеграций!
В этом документе вы можете найти информацию о том, как правильно реализовать и оформить свой вклад в данный проект. Мы всегда рады новым участникам, так что если у вас есть идея, пожелание или, тем более, реализация какой-нибудь классной штуки, которая поможет проекту стать лучше, то обязательно поделитесь ей с нами.
Однако, всем нам будет гораздо проще взаимодействовать друг с другом, если мы заранее оговорим правила и формы данного взаимодействия. И если в случае с Issues неправильная форма может привести разве что к лишним уточняющим вопросам, то незнание структуры и соглашений в работе с кодом с большой долей вероятности приведет к переделкам и отклоненным PR.
Так что, если вы - потенциальный участник, то не стоит относится к этому документу легкомысленно. Несколько минут, потраченные на его прочтение, помогут всем нам сэкономить самый важный ресурс человечества - время.
## Как принять участие в проекте?
Если вы решили стать постоянным участником или даже просто разово помочь проекту ОПИ, то сделать это можно двумя способами:
- Написать Issue о найденом баге или возникшем пожелании
- Реализовать новый или улучшить существующий функционал проекта
Об этих двух вариантах и пойдет речь далее
## Создание Issue
Самый простой способ поучастовать в развитии проекта - написать в [Issues](https://github.com/Bayselonarrend/OpenIntegrations/issues) данного репозитория.
Писать туда можно о чем угодно, но в первую очередь приветствуются сообщения об ошибках, непредвиденном поведении программы и неоптимальностях в её работе. Если вы заметили нечто подобное в процессе работы с ОПИ или даже если у вас есть просто подозрения на этот счет - обязательно напишите. Также приветствуются и предложения о новом или переработке старого функционала: не все подобные предложения принимаются, но точно все обусуждаются
В зависимости от вида информации, которой вы хотите поделиться, в Issues есть разные шаблоны сообщений
![image](https://github.com/Bayselonarrend/OpenIntegrations/assets/105596284/b1be9484-d7b3-4e3b-b678-f369f4e8b98f)
Следование данным шаблонам поможет не забыть указать все нюансы, которые могут быть важны при решении того или иного вопроса, а также, как уже было сказано ранее, избежать лишних распросов с нашей стороны. Ничего особенно плохого в вопросах нет, но несовпадение во времени активности участников диалога по созданному Issue может привести к затягиванию решения проблемы и просрочке дедлайна следующего релиза
## Запросы на слияние
Начнем с простого - запросы на слияние. В создании PR самих по себе нет никаких особо строгих правил: форк -> изменения -> запрос. Все PR рассматриваются и, если отклоняются, то как правило только с комментарием о недоработках.
ОПИ - проект довольно строгий, как буде рассмотрено далее. Так что будет очень хорошо, если запросу на слияние будет предшествовать Issue, где мы вместе обсудим необходимость и способ реализации того или иного нововведения. Теперь перейдем к сложному - к коду
## Работа с кодом
Открытый пакет интеграций - проект с огромным количеством нюансов и соглашений. Вносить свой вклад новичку в него непросто, но этому есть свои причны, о которых сейчас и пойдет речь
Во-первых, ОПИ распространяется в 3-х версиях:
- 1С (OPI)
- OneScript (OInt)
- CLI (OInt CLI)
При этом, напрямую разрабатывается всего одна версия - версия для 1С, и только в эту версию вносятся изменения. В остальные две версии изменения "руками" никогда не вносятся - они создаются автоматически в паплайне на Github Actions. Такой подход позволяет всегда иметь все 3 версии в симметричном и актуальном состоянии, но и рождает некоторые правила и соглашения, без которых ничего работать не будет
> Тут стоит сразу оговорится: ОПИ, как вы уже наверняка знаете, это инструменты для работы с различными API. Так вот создание новых API, т.е. полностью новых модулей для работы с новыми сервисами, в рамках участия в проекте, недопустимо. Не создавайте их - они не будут приняты. <br/><br/>
> Далее из текста будет понятно почему, но если вкратце: автоматизированное тестирование методов для работы с публичными API онлайн-сервисов требует данных и знаний об их работе, чего у меня, как мейнтейнера, не будет, если я не буду хотя бы в теме основы реализованного модуля. Если у вас есть идея создания модуля для нового API - напишите Issues, а там мы вместе подумаем и заложим основу, чтобы я потом мог нормально гонять тесты и понимал, чем этот сервис и этот модуль дышат <br/><br/>
> Проще всего принимаются PR с багфиксами существующих методов - для них большинство описываемых далее соглашений не играют роли, чуть сложнее - новые методы. К последним применимо все описанное далее
Автоматизация выпуска версий основана на двух вещах
- Документирующие комментарии
- Тесты
Документирующие коментарии - важнейшая вещь. На них основаны
- Формирование состава команд CLI версии
- Справка CLI версии
- Автоматическое создание документации для [openintegrations.dev](https://openintegrations.dev)
Рассмотрим типичный докуменитрующий комментарий к одному из методов:
```bsl
// Отправить текстовое сообщение
// Отправляет текстовое сообщение в чат или канал
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка,Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard - JSON клавиатуры или путь к .json
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ОтправитьТекстовоеСообщение(Знач Токен
, Знач IDЧата
, Знач Текст
, Знач Клавиатура = ""
, Знач Разметка = "Markdown") Экспорт
...
```
- В первой строке комментария определяется краткое описание функции. Оно используется как заголовок страницы онлайн-документации, в транслитированном виде как её URL и как описание команды в CLI версии
- Во второй строке определяется развернутое описание для онлайн-документации
- Далее идут описания параметров функции, каждое из которых состоит из 4 частей: имени параметра, типов данных, краткого описания и имени опции для CLI версии
- Завершается комментарий типом и описание возвращаемого значения
В целом - это стандартный формат комментария, который формируется в EDT через ПКМ -> Источник -> Генерировать комментарии к методу, за тем лишь исключением, что верхняя часть комментария всегда из двух строк, а к описанию параметров добавляется четвертая секция с именем CLI опции
![image](https://github.com/Bayselonarrend/OpenIntegrations/assets/105596284/318ccd45-88f1-4f09-93a5-00145290d0af)
В документирующих комментариях не допускается:
- Описание параметров длиннее 120 символов
- Описание параметра с переносом на новую строку - один параметр = одна строка
- Использование спецсимволов в именах CLI опций
- Использование слишком длинных имено CLI опции (в идеале - 3-7 символов)
** Продолжение в процессе работы **

Binary file not shown.

View File

@ -0,0 +1,28 @@
 {
"ok": true,
"result": {
"message_id": 6181,
"from": {
"id": 6129457865,
"is_bot": true,
"first_name": "Бот Виталий",
"username": "sicheebot"
},
"chat": {
"id": 461699897,
"first_name": "Anton",
"last_name": "Titowets",
"username": "JKIee",
"type": "private"
},
"date": 1721467768,
"document": {
"file_name": "customname.docx",
"mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"file_id": "BQACAgIAAxkDAAIYJWabg3dHfAsK-6_AXG2tC_vtLEaZAAKAUAAChaPgSFJHF_DiQErONQQ",
"file_unique_id": "AgADgFAAAoWj4Eg",
"file_size": 24069
},
"caption": "Строковое значение"
}
}

View File

@ -0,0 +1,54 @@
 {
"ok": true,
"result": [
{
"message_id": 6539,
"sender_chat": {
"id": -1001893407333,
"title": "Тестовый канал",
"username": "testsichee",
"type": "channel"
},
"chat": {
"id": -1001893407333,
"title": "Тестовый канал",
"username": "testsichee",
"type": "channel"
},
"date": 1721467787,
"media_group_id": "13771742299292922",
"document": {
"file_name": "document.docx",
"mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"file_id": "BQACAgIAAx0EcNsaZQACGYtmm4OLAUGD8_UJ3Lr5ymkFtpjvAgACq04AAuwb2Ujx3-h6RNa_XDUE",
"file_unique_id": "AgADq04AAuwb2Ug",
"file_size": 24069
},
"caption": "Строковое значение"
},
{
"message_id": 6540,
"sender_chat": {
"id": -1001893407333,
"title": "Тестовый канал",
"username": "testsichee",
"type": "channel"
},
"chat": {
"id": -1001893407333,
"title": "Тестовый канал",
"username": "testsichee",
"type": "channel"
},
"date": 1721467787,
"media_group_id": "13771742299292922",
"document": {
"file_name": "ustit9mvub3.docx",
"mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"file_id": "BQACAgIAAx0EcNsaZQACGYxmm4OL61yi2OtArgUJ727WR1PK3QACrE4AAuwb2UgAARVgYBIW9681BA",
"file_unique_id": "AgADrE4AAuwb2Ug",
"file_size": 24069
}
}
]
}

File diff suppressed because it is too large Load Diff

View File

@ -1057,11 +1057,8 @@ Function SendFile(Val Token
OPI_TypeConversion.GetLine(Token);
OPI_TypeConversion.GetLine(ChatID);
OPI_TypeConversion.GetLine(View);
OPI_TypeConversion.GetLine(Text);
Extension = "";
Method = "";
DetermineSendMethod(View, Method, Extension);
OPI_Tools.ReplaceSpecialCharacters(Text, Markup);
If Not ValueIsFilled(FileName) Then
@ -1082,6 +1079,7 @@ Function SendFile(Val Token
FileMapping = New Map;
FileMapping.Insert(FileName, File);
Method = DetermineSendMethod(View);
URL = "api.telegram.org/bot" + Token + Method;
Response = OPI_Tools.PostMultipart(URL, Parameters, FileMapping, "mixed");
@ -1211,6 +1209,50 @@ Function CreateLongKeyboard(Val ButtonArray)
EndFunction
Function DetermineSendMethod(Val View)
If View = "photo" Then
Method = "/sendPhoto";
ElsIf View = "video" Then
Method = "/sendVideo";
ElsIf View = "audio" Then
Method = "/sendAudio";
ElsIf View = "animation" Then
Method = "/sendAnimation";
Else
Method = "/sendDocument";
EndIf;
Return Method;
EndFunction
Function ConvertFileData(File, View, Counter)
FileName = "";
If TypeOf(File) = Type("String") And View = "document" Then
CurrentFile = New File(File);
FileName = CurrentFile.Name;
EndIf;
If Not ValueIsFilled(FileName) Then
FileName = View + String(Counter);
If View = "animation" Then
FileName = FileName + ".gif";
EndIf;
EndIf;
OPI_TypeConversion.GetBinaryData(File);
Return FileName;
EndFunction
Procedure ConvertFilesToMedia(FileMapping, Text, Media)
OPI_TypeConversion.GetCollection(FileMapping);
@ -1271,44 +1313,4 @@ Procedure AddChatIdentifier(Val ChatID, Parameters)
EndProcedure
Procedure DetermineSendMethod(Val View, Method, Extension)
If View = "photo" Then
Method = "/sendPhoto";
ElsIf View = "video" Then
Method = "/sendVideo";
ElsIf View = "audio" Then
Method = "/sendAudio";
ElsIf View = "document" Then
Method = "/sendDocument";
ElsIf View = "animation" Then
Method = "/sendAnimation";
Extension = ".gif";
Else
Raise "Incorrect sending view";
EndIf;
EndProcedure
Function ConvertFileData(File, View, Counter)
FileName = "";
If TypeOf(File) = Type("String") And View = "document" Then
CurrentFile = New File(File);
FileName = CurrentFile.Name;
EndIf;
If Not ValueIsFilled(FileName) Then
FileName = View + String(Counter);
EndIf;
OPI_TypeConversion.GetBinaryData(File);
Return FileName;
EndFunction
#EndRegion

View File

@ -1,21 +1,21 @@
<package-def>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.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"/>
<module name="OPI_Tools" file="tools/Modules/internal/Modules/OPI_Tools.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_TypeConversion" file="tools/Modules/OPI_TypeConversion.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_TestDataRetrieval" file="tools/Modules/OPI_TestDataRetrieval.os"/>
</package-def>

View File

@ -1057,11 +1057,8 @@ Function SendFile(Val Token
OPI_TypeConversion.GetLine(Token);
OPI_TypeConversion.GetLine(ChatID);
OPI_TypeConversion.GetLine(View);
OPI_TypeConversion.GetLine(Text);
Extension = "";
Method = "";
DetermineSendMethod(View, Method, Extension);
OPI_Tools.ReplaceSpecialCharacters(Text, Markup);
If Not ValueIsFilled(FileName) Then
@ -1082,6 +1079,7 @@ Function SendFile(Val Token
FileMapping = New Map;
FileMapping.Insert(FileName, File);
Method = DetermineSendMethod(View);
URL = "api.telegram.org/bot" + Token + Method;
Response = OPI_Tools.PostMultipart(URL, Parameters, FileMapping, "mixed");
@ -1211,6 +1209,50 @@ Function CreateLongKeyboard(Val ButtonArray)
EndFunction
Function DetermineSendMethod(Val View)
If View = "photo" Then
Method = "/sendPhoto";
ElsIf View = "video" Then
Method = "/sendVideo";
ElsIf View = "audio" Then
Method = "/sendAudio";
ElsIf View = "animation" Then
Method = "/sendAnimation";
Else
Method = "/sendDocument";
EndIf;
Return Method;
EndFunction
Function ConvertFileData(File, View, Counter)
FileName = "";
If TypeOf(File) = Type("String") And View = "document" Then
CurrentFile = New File(File);
FileName = CurrentFile.Name;
EndIf;
If Not ValueIsFilled(FileName) Then
FileName = View + String(Counter);
If View = "animation" Then
FileName = FileName + ".gif";
EndIf;
EndIf;
OPI_TypeConversion.GetBinaryData(File);
Return FileName;
EndFunction
Procedure ConvertFilesToMedia(FileMapping, Text, Media)
OPI_TypeConversion.GetCollection(FileMapping);
@ -1271,44 +1313,4 @@ Procedure AddChatIdentifier(Val ChatID, Parameters)
EndProcedure
Procedure DetermineSendMethod(Val View, Method, Extension)
If View = "photo" Then
Method = "/sendPhoto";
ElsIf View = "video" Then
Method = "/sendVideo";
ElsIf View = "audio" Then
Method = "/sendAudio";
ElsIf View = "document" Then
Method = "/sendDocument";
ElsIf View = "animation" Then
Method = "/sendAnimation";
Extension = ".gif";
Else
Raise "Incorrect sending view";
EndIf;
EndProcedure
Function ConvertFileData(File, View, Counter)
FileName = "";
If TypeOf(File) = Type("String") And View = "document" Then
CurrentFile = New File(File);
FileName = CurrentFile.Name;
EndIf;
If Not ValueIsFilled(FileName) Then
FileName = View + String(Counter);
EndIf;
OPI_TypeConversion.GetBinaryData(File);
Return FileName;
EndFunction
#EndRegion

View File

@ -171,7 +171,7 @@
NewLine.Метод = "CreatePost";
NewLine.МетодПоиска = "CREATEPOST";
NewLine.Параметр = "--important";
NewLine.Описание = "Mark post as important (optional, def. val. - No)";
NewLine.Описание = "Mark post as important (optional, def. val. - False)";
NewLine.Область = "Feed posts managment";
@ -1323,7 +1323,7 @@
NewLine.Метод = "GetTasksFilterStructure";
NewLine.МетодПоиска = "GETTASKSFILTERSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - No)";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - False)";
NewLine.Область = "Tasks managment";
NewLine.ОписаниеМетода = "Return filter structure for GetTasksList";
@ -1365,7 +1365,7 @@
NewLine.Метод = "AddTasksChecklistElement";
NewLine.МетодПоиска = "ADDTASKSCHECKLISTELEMENT";
NewLine.Параметр = "--complete";
NewLine.Описание = "Mark as completed (optional, def. val. - No)";
NewLine.Описание = "Mark as completed (optional, def. val. - False)";
NewLine.Область = "Tasks checklists managment";
@ -1929,7 +1929,7 @@
NewLine.Метод = "GetCommentStructure";
NewLine.МетодПоиска = "GETCOMMENTSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - No)";
NewLine.Описание = "True > structure with empty valuse, False > field descriptions at values (optional, def. val. - False)";
NewLine.Область = "Comments and results managment";
NewLine.ОписаниеМетода = "Get comment fields structure";
@ -1991,7 +1991,7 @@
NewLine.Метод = "AddKanbanStage";
NewLine.МетодПоиска = "ADDKANBANSTAGE";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Область = "Kanban";
@ -2062,7 +2062,7 @@
NewLine.Метод = "UpdateKanbansStage";
NewLine.МетодПоиска = "UPDATEKANBANSSTAGE";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Область = "Kanban";
@ -2103,7 +2103,7 @@
NewLine.Метод = "DeleteKanbanStage";
NewLine.МетодПоиска = "DELETEKANBANSTAGE";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Описание = "Allows you to add stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Область = "Kanban";
@ -2144,7 +2144,7 @@
NewLine.Метод = "GetKanbanStages";
NewLine.МетодПоиска = "GETKANBANSTAGES";
NewLine.Параметр = "--admin";
NewLine.Описание = "Allows you to get stages without checking permissions (for administrators) (optional, def. val. - No)";
NewLine.Описание = "Allows you to get stages without checking permissions (for administrators) (optional, def. val. - False)";
NewLine.Область = "Kanban";
@ -3037,7 +3037,7 @@
NewLine.Метод = "GetFolderFilterStructure";
NewLine.МетодПоиска = "GETFOLDERFILTERSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - No)";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - False)";
NewLine.Область = "Catalogs managment";
@ -3571,7 +3571,7 @@
NewLine.Метод = "AddUsersToChat";
NewLine.МетодПоиска = "ADDUSERSTOCHAT";
NewLine.Параметр = "--hide";
NewLine.Описание = "Hide old messages from new members (optional, def. val. - No)";
NewLine.Описание = "Hide old messages from new members (optional, def. val. - False)";
NewLine.Область = "Chats and dialogs managment";
@ -4054,7 +4054,7 @@
NewLine.Метод = "GetChatStructure";
NewLine.МетодПоиска = "GETCHATSTRUCTURE";
NewLine.Параметр = "--empty";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - No)";
NewLine.Описание = "True > structure with empty values, False > field types at values (optional, def. val. - False)";
NewLine.Область = "Chats and dialogs managment";
NewLine.ОписаниеМетода = "Get chat fields structure";

View File

@ -142,7 +142,7 @@
NewLine.Метод = "GetObjectInformation";
NewLine.МетодПоиска = "GETOBJECTINFORMATION";
NewLine.Параметр = "--detail";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - No)";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - False)";
NewLine.Область = "File and directory management";
@ -173,7 +173,7 @@
NewLine.Метод = "GetListOfFolderFiles";
NewLine.МетодПоиска = "GETLISTOFFOLDERFILES";
NewLine.Параметр = "--detail";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - No)";
NewLine.Описание = "Add information fields for mediafiles (optional, def. val. - False)";
NewLine.Область = "File and directory management";
@ -245,7 +245,7 @@
NewLine.Метод = "UploadFile";
NewLine.МетодПоиска = "UPLOADFILE";
NewLine.Параметр = "--overwrite";
NewLine.Описание = "Overwrite file in case of path conflicts (optional, def. val. - No)";
NewLine.Описание = "Overwrite file in case of path conflicts (optional, def. val. - False)";
NewLine.Область = "File and directory management";
@ -328,7 +328,7 @@
NewLine.Метод = "DeleteObject";
NewLine.МетодПоиска = "DELETEOBJECT";
NewLine.Параметр = "--permanently";
NewLine.Описание = "Delete object without the possibility of recovery (optional, def. val. - No)";
NewLine.Описание = "Delete object without the possibility of recovery (optional, def. val. - False)";
NewLine.Область = "File and directory management";
@ -681,7 +681,7 @@
NewLine.Метод = "AddUsersToFile";
NewLine.МетодПоиска = "ADDUSERSTOFILE";
NewLine.Параметр = "--readonly";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - Yes)";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - True)";
NewLine.Область = "Shared access settings";
@ -722,7 +722,7 @@
NewLine.Метод = "AddUsersToFolder";
NewLine.МетодПоиска = "ADDUSERSTOFOLDER";
NewLine.Параметр = "--readonly";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - Yes)";
NewLine.Описание = "Prohibits file editing for the external user (optional, def. val. - True)";
NewLine.Область = "Shared access settings";

View File

@ -246,7 +246,7 @@
NewLine.Метод = "EditListCalendar";
NewLine.МетодПоиска = "EDITLISTCALENDAR";
NewLine.Параметр = "--hidden";
NewLine.Описание = "Hidden calendar (optional, def. val. - No)";
NewLine.Описание = "Hidden calendar (optional, def. val. - False)";
NewLine.Область = "Calendar list management";

View File

@ -58,7 +58,7 @@
NewLine.Метод = "GetDirectoriesList";
NewLine.МетодПоиска = "GETDIRECTORIESLIST";
NewLine.Параметр = "--depth";
NewLine.Описание = "Adds a list of files to the directory fields (optional, def. val. - No)";
NewLine.Описание = "Adds a list of files to the directory fields (optional, def. val. - False)";
NewLine.Область = "File and directory management";

View File

@ -27,7 +27,7 @@
NewLine.Метод = "FormCodeRetrievalLink";
NewLine.МетодПоиска = "FORMCODERETRIEVALLINK";
NewLine.Параметр = "--calendar";
NewLine.Описание = "Calendar methods permission (optional, def. val. - Yes)";
NewLine.Описание = "Calendar methods permission (optional, def. val. - True)";
NewLine.Область = "Public";
@ -37,7 +37,7 @@
NewLine.Метод = "FormCodeRetrievalLink";
NewLine.МетодПоиска = "FORMCODERETRIEVALLINK";
NewLine.Параметр = "--drive";
NewLine.Описание = "Drive methods permission (optional, def. val. - Yes)";
NewLine.Описание = "Drive methods permission (optional, def. val. - True)";
NewLine.Область = "Public";
@ -47,7 +47,7 @@
NewLine.Метод = "FormCodeRetrievalLink";
NewLine.МетодПоиска = "FORMCODERETRIEVALLINK";
NewLine.Параметр = "--sheets";
NewLine.Описание = "Sheets methods permission (optional, def. val. - Yes)";
NewLine.Описание = "Sheets methods permission (optional, def. val. - True)";
NewLine.Область = "Public";

View File

@ -166,7 +166,7 @@
NewLine.Метод = "EditPageProperties";
NewLine.МетодПоиска = "EDITPAGEPROPERTIES";
NewLine.Параметр = "--archive";
NewLine.Описание = "Archive page or not (boolean) (optional, def. val. - No)";
NewLine.Описание = "Archive page or not (boolean) (optional, def. val. - False)";
NewLine.Область = "Page management";
@ -383,7 +383,7 @@
NewLine.Метод = "ReturnBlock";
NewLine.МетодПоиска = "RETURNBLOCK";
NewLine.Параметр = "--core";
NewLine.Описание = "True > service fields are deleted, only the block itself remains (optional, def. val. - Yes)";
NewLine.Описание = "True > service fields are deleted, only the block itself remains (optional, def. val. - True)";
NewLine.Область = "Blocks managment";

View File

@ -254,7 +254,7 @@
NewLine.Метод = "DeleteMessage";
NewLine.МетодПоиска = "DELETEMESSAGE";
NewLine.Параметр = "--issheduled";
NewLine.Описание = "Indicator of deleting a delayed message (optional, def. val. - No)";
NewLine.Описание = "Indicator of deleting a delayed message (optional, def. val. - False)";
NewLine.Область = "Message management";
@ -378,7 +378,7 @@
NewLine.Метод = "GetChannelList";
NewLine.МетодПоиска = "GETCHANNELLIST";
NewLine.Параметр = "--notarchived";
NewLine.Описание = "Indicator of excluding archived channels (optional, def. val. - No)";
NewLine.Описание = "Indicator of excluding archived channels (optional, def. val. - False)";
NewLine.Область = "Channel management";
@ -450,7 +450,7 @@
NewLine.Метод = "CreateChannel";
NewLine.МетодПоиска = "CREATECHANNEL";
NewLine.Параметр = "--private";
NewLine.Описание = "Create channel as private (optional, def. val. - No)";
NewLine.Описание = "Create channel as private (optional, def. val. - False)";
NewLine.Область = "Channel management";

View File

@ -709,7 +709,7 @@
NewLine.Метод = "SendPoll";
NewLine.МетодПоиска = "SENDPOLL";
NewLine.Параметр = "--anonymous";
NewLine.Описание = "Poll anonymity (optional, def. val. - Yes)";
NewLine.Описание = "Poll anonymity (optional, def. val. - True)";
NewLine.Область = "Data sending";
@ -771,7 +771,7 @@
NewLine.Метод = "FormKeyboardFromButtonArray";
NewLine.МетодПоиска = "FORMKEYBOARDFROMBUTTONARRAY";
NewLine.Параметр = "--under";
NewLine.Описание = "Keyboard under the message or on the bottom panel (optional, def. val. - No)";
NewLine.Описание = "Keyboard under the message or on the bottom panel (optional, def. val. - False)";
NewLine.Область = "Data sending";
@ -781,7 +781,7 @@
NewLine.Метод = "FormKeyboardFromButtonArray";
NewLine.МетодПоиска = "FORMKEYBOARDFROMBUTTONARRAY";
NewLine.Параметр = "--column";
NewLine.Описание = "True > buttons are displayed in a column, False > in a row (optional, def. val. - Yes)";
NewLine.Описание = "True > buttons are displayed in a column, False > in a row (optional, def. val. - True)";
NewLine.Область = "Data sending";

View File

@ -58,7 +58,7 @@
NewLine.Метод = "CreatePost";
NewLine.МетодПоиска = "CREATEPOST";
NewLine.Параметр = "--ad";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - No)";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - False)";
NewLine.Область = "Community managment";
@ -118,7 +118,7 @@
NewLine.Метод = "CreateCompositePost";
NewLine.МетодПоиска = "CREATECOMPOSITEPOST";
NewLine.Параметр = "--ad";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - No)";
NewLine.Описание = "Sign ""This is an ad"" (optional, def. val. - False)";
NewLine.Область = "Community managment";
@ -578,7 +578,7 @@
NewLine.Метод = "CloseDiscussion";
NewLine.МетодПоиска = "CLOSEDISCUSSION";
NewLine.Параметр = "--remove";
NewLine.Описание = "Delete completely (True) or close (optional, def. val. - No)";
NewLine.Описание = "Delete completely (True) or close (optional, def. val. - False)";
NewLine.Область = "Discussion management";
@ -748,7 +748,7 @@
NewLine.Метод = "MakeRepost";
NewLine.МетодПоиска = "MAKEREPOST";
NewLine.Параметр = "--ad";
NewLine.Описание = "Sign of an advertising post (optional, def. val. - No)";
NewLine.Описание = "Sign of an advertising post (optional, def. val. - False)";
NewLine.Область = "Interactive actions";
@ -1510,7 +1510,7 @@
NewLine.Метод = "CreateProductCollection";
NewLine.МетодПоиска = "CREATEPRODUCTCOLLECTION";
NewLine.Параметр = "--main";
NewLine.Описание = "Main (optional, def. val. - No)";
NewLine.Описание = "Main (optional, def. val. - False)";
NewLine.Область = "Product selection management";
@ -1520,7 +1520,7 @@
NewLine.Метод = "CreateProductCollection";
NewLine.МетодПоиска = "CREATEPRODUCTCOLLECTION";
NewLine.Параметр = "--hidden";
NewLine.Описание = "Hidden (optional, def. val. - No)";
NewLine.Описание = "Hidden (optional, def. val. - False)";
NewLine.Область = "Product selection management";
@ -1580,7 +1580,7 @@
NewLine.Метод = "EditProductCollection";
NewLine.МетодПоиска = "EDITPRODUCTCOLLECTION";
NewLine.Параметр = "--main";
NewLine.Описание = "Main (optional, def. val. - No)";
NewLine.Описание = "Main (optional, def. val. - False)";
NewLine.Область = "Product selection management";
@ -1590,7 +1590,7 @@
NewLine.Метод = "EditProductCollection";
NewLine.МетодПоиска = "EDITPRODUCTCOLLECTION";
NewLine.Параметр = "--hidden";
NewLine.Описание = "Hidden (optional, def. val. - No)";
NewLine.Описание = "Hidden (optional, def. val. - False)";
NewLine.Область = "Product selection management";

View File

@ -90,7 +90,7 @@
NewLine.Метод = "DeleteObject";
NewLine.МетодПоиска = "DELETEOBJECT";
NewLine.Параметр = "--can";
NewLine.Описание = "To cart (optional, def. val. - Yes)";
NewLine.Описание = "To cart (optional, def. val. - True)";
NewLine.Область = "File and folder management";
@ -131,7 +131,7 @@
NewLine.Метод = "CreateObjectCopy";
NewLine.МетодПоиска = "CREATEOBJECTCOPY";
NewLine.Параметр = "--rewrite";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Область = "File and folder management";
@ -237,7 +237,7 @@
NewLine.Метод = "GetFilesList";
NewLine.МетодПоиска = "GETFILESLIST";
NewLine.Параметр = "--datesort";
NewLine.Описание = "True > sort by date, False > alphabetically (optional, def. val. - No)";
NewLine.Описание = "True > sort by date, False > alphabetically (optional, def. val. - False)";
NewLine.Область = "File and folder management";
@ -278,7 +278,7 @@
NewLine.Метод = "MoveObject";
NewLine.МетодПоиска = "MOVEOBJECT";
NewLine.Параметр = "--rewrite";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Область = "File and folder management";
@ -319,7 +319,7 @@
NewLine.Метод = "UploadFile";
NewLine.МетодПоиска = "UPLOADFILE";
NewLine.Параметр = "--rewrite";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - No)";
NewLine.Описание = "Overwrite if a file with the same name already exists (optional, def. val. - False)";
NewLine.Область = "File and folder management";

View File

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

@ -1057,11 +1057,8 @@
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Вид);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
Расширение = "";
Метод = "";
ОпределитьМетодОтправки(Вид, Метод, Расширение);
OPI_Инструменты.ЗаменитьСпецсимволы(Текст, Разметка);
Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
@ -1082,6 +1079,7 @@
СоответствиеФайлов = Новый Соответствие;
СоответствиеФайлов.Вставить(ИмяФайла, Файл);
Метод = ОпределитьМетодОтправки(Вид);
URL = "api.telegram.org/bot" + Токен + Метод;
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, СоответствиеФайлов, "mixed");
@ -1211,6 +1209,50 @@
КонецФункции
Функция ОпределитьМетодОтправки(Знач Вид)
Если Вид = "photo" Тогда
Метод = "/sendPhoto";
ИначеЕсли Вид = "video" Тогда
Метод = "/sendVideo";
ИначеЕсли Вид = "audio" Тогда
Метод = "/sendAudio";
ИначеЕсли Вид = "animation" Тогда
Метод = "/sendAnimation";
Иначе
Метод = "/sendDocument";
КонецЕсли;
Возврат Метод;
КонецФункции
Функция ПреобразоватьДанныеФайла(Файл, Вид, Счетчик)
ИмяФайла = "";
Если ТипЗнч(Файл) = Тип("Строка") И Вид = "document" Тогда
ТекущийФайл = Новый Файл(Файл);
ИмяФайла = ТекущийФайл.Имя;
КонецЕсли;
Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
ИмяФайла = Вид + Строка(Счетчик);
Если Вид = "animation" Тогда
ИмяФайла = ИмяФайла + ".gif";
КонецЕсли;
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
Возврат ИмяФайла;
КонецФункции
Процедура ПреобразоватьФайлыВМедиа(СоответствиеФайлов, Текст, Медиа)
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеФайлов);
@ -1271,44 +1313,4 @@
КонецПроцедуры
Процедура ОпределитьМетодОтправки(Знач Вид, Метод, Расширение)
Если Вид = "photo" Тогда
Метод = "/sendPhoto";
ИначеЕсли Вид = "video" Тогда
Метод = "/sendVideo";
ИначеЕсли Вид = "audio" Тогда
Метод = "/sendAudio";
ИначеЕсли Вид = "document" Тогда
Метод = "/sendDocument";
ИначеЕсли Вид = "animation" Тогда
Метод = "/sendAnimation";
Расширение = ".gif";
Иначе
ВызватьИсключение "Некорректный вид отправки";
КонецЕсли;
КонецПроцедуры
Функция ПреобразоватьДанныеФайла(Файл, Вид, Счетчик)
ИмяФайла = "";
Если ТипЗнч(Файл) = Тип("Строка") И Вид = "document" Тогда
ТекущийФайл = Новый Файл(Файл);
ИмяФайла = ТекущийФайл.Имя;
КонецЕсли;
Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
ИмяФайла = Вид + Строка(Счетчик);
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
Возврат ИмяФайла;
КонецФункции
#КонецОбласти

View File

@ -1,21 +1,21 @@
<package-def>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
</package-def>

View File

@ -171,7 +171,7 @@
НоваяСтрока.Метод = "СоздатьНовость";
НоваяСтрока.МетодПоиска = "СОЗДАТЬНОВОСТЬ";
НоваяСтрока.Параметр = "--important";
НоваяСтрока.Описание = "Помечает новость как важную (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Помечает новость как важную (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с живой лентой";
@ -1327,7 +1327,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруФильтраЗадач";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУФИЛЬТРАЗАДАЧ";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с задачами";
НоваяСтрока.ОписаниеМетода = "Возвращает структуру полей для фильтрации задач в методе ПолучитьСписокЗадач";
@ -1369,7 +1369,7 @@
НоваяСтрока.Метод = "ДобавитьЭлементЧеклистаЗадачи";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬЭЛЕМЕНТЧЕКЛИСТАЗАДАЧИ";
НоваяСтрока.Параметр = "--complete";
НоваяСтрока.Описание = "Отметить пункт как выполненный (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Отметить пункт как выполненный (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с чеклистами задач";
@ -1933,7 +1933,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруКомментария";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУКОММЕНТАРИЯ";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с комментариями и результатами задач";
НоваяСтрока.ОписаниеМетода = "Получает структуру полей комментария";
@ -1995,7 +1995,7 @@
НоваяСтрока.Метод = "ДобавитьСтадиюКанбана";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬСТАДИЮКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Область = "Канбан";
@ -2066,7 +2066,7 @@
НоваяСтрока.Метод = "ИзменитьСтадиюКанбана";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬСТАДИЮКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Область = "Канбан";
@ -2107,7 +2107,7 @@
НоваяСтрока.Метод = "УдалитьСтадиюКанбана";
НоваяСтрока.МетодПоиска = "УДАЛИТЬСТАДИЮКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Позволяет добавлять стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Область = "Канбан";
@ -2148,7 +2148,7 @@
НоваяСтрока.Метод = "ПолучитьСтадииКанбана";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТАДИИКАНБАНА";
НоваяСтрока.Параметр = "--admin";
НоваяСтрока.Описание = "Позволяет получать стадии без проверки прав (для администраторов) (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Позволяет получать стадии без проверки прав (для администраторов) (необяз. по ум. - False)";
НоваяСтрока.Область = "Канбан";
@ -3041,7 +3041,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруФильтраКаталога";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУФИЛЬТРАКАТАЛОГА";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с каталогами";
@ -3579,7 +3579,7 @@
НоваяСтрока.Метод = "ДобавитьПользователейВЧат";
НоваяСтрока.МетодПоиска = "ДОБАВИТЬПОЛЬЗОВАТЕЛЕЙВЧАТ";
НоваяСтрока.Параметр = "--hide";
НоваяСтрока.Описание = "Скрыть старые сообщения от новых пользователей (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Скрыть старые сообщения от новых пользователей (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с чатами и диалогами";
@ -4062,7 +4062,7 @@
НоваяСтрока.Метод = "ПолучитьСтруктуруЧата";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСТРУКТУРУЧАТА";
НоваяСтрока.Параметр = "--empty";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Истина > структура с пустыми значениями, Ложь > в значениях будут описания типов полей (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа с чатами и диалогами";
НоваяСтрока.ОписаниеМетода = "Получает структуру полей чата";

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

@ -166,7 +166,7 @@
НоваяСтрока.Метод = "ИзменитьСвойстваСтраницы";
НоваяСтрока.МетодПоиска = "ИЗМЕНИТЬСВОЙСТВАСТРАНИЦЫ";
НоваяСтрока.Параметр = "--archive";
НоваяСтрока.Описание = "Архивировать страницу или нет (булево) (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Архивировать страницу или нет (булево) (необяз. по ум. - False)";
НоваяСтрока.Область = "Работа со страницами";
@ -383,7 +383,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

@ -713,7 +713,7 @@
НоваяСтрока.Метод = "ОтправитьОпрос";
НоваяСтрока.МетодПоиска = "ОТПРАВИТЬОПРОС";
НоваяСтрока.Параметр = "--anonymous";
НоваяСтрока.Описание = "Анонимность опроса (необяз. по ум. - Да)";
НоваяСтрока.Описание = "Анонимность опроса (необяз. по ум. - True)";
НоваяСтрока.Область = "Отправка данных";
@ -779,7 +779,7 @@
НоваяСтрока.Метод = "СформироватьКлавиатуруПоМассивуКнопок";
НоваяСтрока.МетодПоиска = "СФОРМИРОВАТЬКЛАВИАТУРУПОМАССИВУКНОПОК";
НоваяСтрока.Параметр = "--under";
НоваяСтрока.Описание = "Клавиатура под сообщением или на нижней панели (необяз. по ум. - Нет)";
НоваяСтрока.Описание = "Клавиатура под сообщением или на нижней панели (необяз. по ум. - False)";
НоваяСтрока.Область = "Отправка данных";
@ -789,7 +789,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,21 +6,21 @@
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
СоответствиеКомандМодулей = Новый Соответствие();
СоответствиеКомандМодулей.Вставить("vk", "OPI_VK");
СоответствиеКомандМодулей.Вставить("gsheets", "OPI_GoogleSheets");
СоответствиеКомандМодулей.Вставить("notion", "OPI_Notion");
СоответствиеКомандМодулей.Вставить("yadisk", "OPI_YandexDisk");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("google", "OPI_GoogleWorkspace");
СоответствиеКомандМодулей.Вставить("yandex", "OPI_YandexID");
СоответствиеКомандМодулей.Вставить("twitter", "OPI_Twitter");
СоответствиеКомандМодулей.Вставить("slack", "OPI_Slack");
СоответствиеКомандМодулей.Вставить("viber", "OPI_Viber");
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram");
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
СоответствиеКомандМодулей.Вставить("dropbox", "OPI_Dropbox");
СоответствиеКомандМодулей.Вставить("gcalendar", "OPI_GoogleCalendar");
СоответствиеКомандМодулей.Вставить("gdrive", "OPI_GoogleDrive");
СоответствиеКомандМодулей.Вставить("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");
Возврат СоответствиеКомандМодулей;
КонецФункции