From af42567ca95102b6ccc653c7a16ab41450d49a04 Mon Sep 17 00:00:00 2001 From: kashey Date: Thu, 15 May 2025 17:56:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8=D1=89=D0=B0?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 1 + src/cf/AUTHORS | 1 + src/cf/Catalogs/ТелеграмДокумент.xml | 310 +++++++++++++++++ .../ТелеграмДокумент/Forms/ФормаЭлемента.xml | 21 ++ .../Forms/ФормаЭлемента/Ext/Form.xml | 85 +++++ .../Forms/ФормаЭлемента/Ext/Form/Module.bsl | 29 ++ src/cf/Catalogs/ТелеграмПользователь.xml | 225 ++++++++++++ .../ТелеграмПользователь/Ext/Predefined.xml | 9 + src/cf/Catalogs/ТелеграмСообщение.xml | 304 +++++++++++++++++ src/cf/CommonForms/ТелеграмВебХук.xml | 24 ++ .../CommonForms/ТелеграмВебХук/Ext/Form.xml | 27 ++ .../ТелеграмВебХук/Ext/Form/Module.bsl | 21 ++ src/cf/CommonModules/HttpОбщегоНазначения.xml | 23 ++ .../HttpОбщегоНазначения/Ext/Module.bsl | 172 ++++++++++ .../ТелеграмМетодыВызовСервера.xml | 23 ++ .../ТелеграмМетодыВызовСервера/Ext/Module.bsl | 61 ++++ .../ТелеграмОбщегоНазначения.xml | 23 ++ .../ТелеграмОбщегоНазначения/Ext/Module.bsl | 256 ++++++++++++++ .../ТелеграмПовторноеИспользование.xml | 23 ++ .../Ext/Module.bsl | 5 + src/cf/CommonModules/ТелеграмРегламент.xml | 23 ++ .../ТелеграмРегламент/Ext/Module.bsl | 19 ++ src/cf/Configuration.xml | 268 +++++++++++++++ src/cf/Constants/ЛогироватьHttpЗапросы.xml | 58 ++++ src/cf/Constants/ТелеграмВебХук.xml | 62 ++++ src/cf/Constants/ТелеграмТокен.xml | 62 ++++ src/cf/DataProcessors/РаботаССообщениями.xml | 34 ++ .../РаботаССообщениями/Forms/Форма.xml | 22 ++ .../Forms/Форма/Ext/Form.xml | 321 ++++++++++++++++++ .../Forms/Форма/Ext/Form/Module.bsl | 205 +++++++++++ src/cf/Documents/ЛогHttpЗапроса.xml | 170 ++++++++++ .../ЛогHttpЗапроса/Forms/ФормаДокумента.xml | 21 ++ .../Forms/ФормаДокумента/Ext/Form.xml | 72 ++++ src/cf/HTTPServices/HTTPСервис_Telegram.xml | 44 +++ .../HTTPСервис_Telegram/Ext/Module.bsl | 29 ++ .../ТелеграмСообщения.xml | 285 ++++++++++++++++ src/cf/Languages/Русский.xml | 16 + .../ПроверкаОбновленийТелеграм.xml | 22 ++ .../Ext/Schedule.xml | 7 + src/cf/Subsystems/ТелеграмБот.xml | 35 ++ src/cf/VERSION | 2 + 42 files changed, 3421 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 src/cf/AUTHORS create mode 100644 src/cf/Catalogs/ТелеграмДокумент.xml create mode 100644 src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента.xml create mode 100644 src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form.xml create mode 100644 src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl create mode 100644 src/cf/Catalogs/ТелеграмПользователь.xml create mode 100644 src/cf/Catalogs/ТелеграмПользователь/Ext/Predefined.xml create mode 100644 src/cf/Catalogs/ТелеграмСообщение.xml create mode 100644 src/cf/CommonForms/ТелеграмВебХук.xml create mode 100644 src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml create mode 100644 src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl create mode 100644 src/cf/CommonModules/HttpОбщегоНазначения.xml create mode 100644 src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl create mode 100644 src/cf/CommonModules/ТелеграмМетодыВызовСервера.xml create mode 100644 src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl create mode 100644 src/cf/CommonModules/ТелеграмОбщегоНазначения.xml create mode 100644 src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl create mode 100644 src/cf/CommonModules/ТелеграмПовторноеИспользование.xml create mode 100644 src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl create mode 100644 src/cf/CommonModules/ТелеграмРегламент.xml create mode 100644 src/cf/CommonModules/ТелеграмРегламент/Ext/Module.bsl create mode 100644 src/cf/Configuration.xml create mode 100644 src/cf/Constants/ЛогироватьHttpЗапросы.xml create mode 100644 src/cf/Constants/ТелеграмВебХук.xml create mode 100644 src/cf/Constants/ТелеграмТокен.xml create mode 100644 src/cf/DataProcessors/РаботаССообщениями.xml create mode 100644 src/cf/DataProcessors/РаботаССообщениями/Forms/Форма.xml create mode 100644 src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form.xml create mode 100644 src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl create mode 100644 src/cf/Documents/ЛогHttpЗапроса.xml create mode 100644 src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента.xml create mode 100644 src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml create mode 100644 src/cf/HTTPServices/HTTPСервис_Telegram.xml create mode 100644 src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl create mode 100644 src/cf/InformationRegisters/ТелеграмСообщения.xml create mode 100644 src/cf/Languages/Русский.xml create mode 100644 src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм.xml create mode 100644 src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм/Ext/Schedule.xml create mode 100644 src/cf/Subsystems/ТелеграмБот.xml create mode 100644 src/cf/VERSION diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..95edeac --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/ConfigDumpInfo.xml \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b897a29 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Реализация telegam чат-бота средствами платформы 1С \ No newline at end of file diff --git a/src/cf/AUTHORS b/src/cf/AUTHORS new file mode 100644 index 0000000..62cc1d7 --- /dev/null +++ b/src/cf/AUTHORS @@ -0,0 +1 @@ +Администратор=kashey diff --git a/src/cf/Catalogs/ТелеграмДокумент.xml b/src/cf/Catalogs/ТелеграмДокумент.xml new file mode 100644 index 0000000..aa50d21 --- /dev/null +++ b/src/cf/Catalogs/ТелеграмДокумент.xml @@ -0,0 +1,310 @@ + + + + + + 79fc9728-5c36-4c76-8dd3-304174405d63 + cdcdd7f9-03b6-48e9-98eb-e0ba4fa6e7bb + + + 2fac0edc-75c5-4f25-b2bc-a8a1b5499fd3 + e857f5ed-7f18-4fde-9155-eb2cf4041d60 + + + 6ccceb70-b829-4d4e-a3f4-21fb3d9d3147 + ac14aa95-fdda-4e82-99a2-4c93f4ddb7cf + + + cab9b204-3208-4e79-a2d4-217df0367bf3 + 9e82e379-59ad-4891-b7e5-3831151f7791 + + + 9df89e29-979d-4bcd-beb3-c10b2eba3ee5 + 860e25d0-f5de-4c0b-a880-a42fb7296c13 + + + + ТелеграмДокумент + + + ru + Телеграм документ + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + true + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.ТелеграмДокумент.StandardAttribute.Description + Catalog.ТелеграмДокумент.StandardAttribute.Code + + Begin + DontUse + Directly + Catalog.ТелеграмДокумент.Form.ФормаЭлемента + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + + id + + + ru + Id + + + + + xs:string + + 100 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + file_name + + + ru + File name + + + + + xs:string + + 300 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + mime_type + + + ru + Mime type + + + + + xs:string + + 100 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + file_size + + + ru + File size + + + + + xs:decimal + + 15 + 0 + Any + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + ДанныеФайла + + + ru + Данные файла + + + + + v8:ValueStorage + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + +
ФормаЭлемента
+
+
+
\ No newline at end of file diff --git a/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента.xml b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента.xml new file mode 100644 index 0000000..b52ca7b --- /dev/null +++ b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаЭлемента + + + ru + Форма элемента + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form.xml b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form.xml new file mode 100644 index 0000000..dabc3de --- /dev/null +++ b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form.xml @@ -0,0 +1,85 @@ + +
+ LockOwnerWindow + Items + + + + Объект.Code + EnterOnInput + true + + + + + Объект.Description + EnterOnInput + true + + + + + Объект.id + true + EnterOnInput + true + + + + + Объект.file_name + true + EnterOnInput + true + + + + + Объект.mime_type + true + EnterOnInput + true + + + + + Объект.file_size + true + EnterOnInput + true + + + + + + + + + cfg:CatalogObject.ТелеграмДокумент + + true + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Просмотр файла</v8:content> + </v8:item> + + + + ru + Просмотр файла + + + ПросмотрФайла + + + \ No newline at end of file diff --git a/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl new file mode 100644 index 0000000..c60fdb4 --- /dev/null +++ b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl @@ -0,0 +1,29 @@ + +&НаКлиенте +Процедура ПросмотрФайла(Команда) + + ИмяВременногоФайла = ПолучитьИмяВременногоФайла(ПолучитьРасширениеИмениФайла(Объект.file_name)); + ДвоичныеДанные = ПолучитьДвоичныеДанныеНаСервере(); + ДвоичныеДанные.Записать(ИмяВременногоФайла); + ЗапуститьПриложениеАсинх(ИмяВременногоФайла); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт + + РасширениеФайла = ""; + МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь); + Если МассивСтрок.Количество() > 1 Тогда + РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1]; + КонецЕсли; + Возврат РасширениеФайла; + +КонецФункции + +&НаСервере +Функция ПолучитьДвоичныеДанныеНаСервере() + + Возврат РеквизитФормыВЗначение("Объект").ДанныеФайла.Получить(); + +КонецФункции diff --git a/src/cf/Catalogs/ТелеграмПользователь.xml b/src/cf/Catalogs/ТелеграмПользователь.xml new file mode 100644 index 0000000..3d6ff8d --- /dev/null +++ b/src/cf/Catalogs/ТелеграмПользователь.xml @@ -0,0 +1,225 @@ + + + + + + 771bbf76-6560-490f-bddf-4b57282bb979 + e6f77041-f666-4790-b64e-0346b7ba6d24 + + + a3385365-db96-4682-a1f0-05a799ca7d13 + aad9e481-4b51-41bd-bbcc-841dfe7d7fea + + + 21ffa4af-08a6-43da-bf5c-2a6cec872acb + 2d2e8ba9-725d-4052-8709-d150e516b287 + + + 57848e3d-1e86-47e4-8af0-6131e4d2cf11 + ee125c26-eed1-4fec-9caf-f070ac7e16e7 + + + 7e7dd14a-ed48-4c12-a6a3-be34e103c20e + ada062d3-22c5-4398-8454-e271927d264c + + + + ТелеграмПользователь + + + ru + Телеграм пользователь + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 60 + String + Variable + WholeCatalog + true + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.ТелеграмПользователь.StandardAttribute.Description + Catalog.ТелеграмПользователь.StandardAttribute.Code + + Begin + DontUse + Directly + + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + + id + + + ru + Id + + + + + xs:decimal + + 15 + 0 + Any + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + last_name + + + ru + Last name + + + + + xs:string + + 60 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + username + + + ru + Username + + + + + xs:string + + 60 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + \ No newline at end of file diff --git a/src/cf/Catalogs/ТелеграмПользователь/Ext/Predefined.xml b/src/cf/Catalogs/ТелеграмПользователь/Ext/Predefined.xml new file mode 100644 index 0000000..a3d70b0 --- /dev/null +++ b/src/cf/Catalogs/ТелеграмПользователь/Ext/Predefined.xml @@ -0,0 +1,9 @@ + + + + НеОпределен + 000000001 + Не определен + false + + \ No newline at end of file diff --git a/src/cf/Catalogs/ТелеграмСообщение.xml b/src/cf/Catalogs/ТелеграмСообщение.xml new file mode 100644 index 0000000..6d468d1 --- /dev/null +++ b/src/cf/Catalogs/ТелеграмСообщение.xml @@ -0,0 +1,304 @@ + + + + + + f2bf8442-369f-4ac3-8d31-0da98dc3c6e7 + 78de350c-a632-47bf-b8d9-14a931a433bc + + + c171c60d-856c-4711-9f89-44d38a4ca0b5 + df29ebc7-d9a6-40b2-bf81-4b8b55edc9ca + + + 202a8ac1-4473-44de-8db2-b844bc3a5de9 + 3f6bdd2b-54f0-45fc-8b79-9556b41fa48d + + + e7b590ed-fc6d-4d6a-9724-bc68170e3d5b + b6014560-6014-4b02-9c70-8b513ffb1486 + + + 8d1e4c24-ea65-462d-81a4-d5db7c9fef57 + def7c3f6-b096-41bf-aafe-07390a894118 + + + + ТелеграмСообщение + + + ru + Телеграм сообщение + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + true + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.ТелеграмСообщение.StandardAttribute.Description + Catalog.ТелеграмСообщение.StandardAttribute.Code + + Begin + DontUse + Directly + + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + + id + + + ru + Id + + + + + xs:decimal + + 15 + 0 + Any + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + text + + + ru + Text + + + + + xs:string + + 500 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + date + + + ru + Date + + + + + xs:dateTime + + DateTime + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + Автор + + + ru + Автор + + + + + cfg:CatalogRef.ТелеграмПользователь + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + document + + + ru + Document + + + + + cfg:CatalogRef.ТелеграмДокумент + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + \ No newline at end of file diff --git a/src/cf/CommonForms/ТелеграмВебХук.xml b/src/cf/CommonForms/ТелеграмВебХук.xml new file mode 100644 index 0000000..9672d62 --- /dev/null +++ b/src/cf/CommonForms/ТелеграмВебХук.xml @@ -0,0 +1,24 @@ + + + + + ТелеграмВебХук + + + ru + Телеграм веб хук + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml new file mode 100644 index 0000000..807a46d --- /dev/null +++ b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml @@ -0,0 +1,27 @@ + +
+ LockOwnerWindow + + + ПослеЗаписи + + + + НаборКонстант.ТелеграмВебХук + EnterOnInput + true + true + + + + + + + + cfg:ConstantsSet + + true + true + + + \ No newline at end of file diff --git a/src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl new file mode 100644 index 0000000..fa34f68 --- /dev/null +++ b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl @@ -0,0 +1,21 @@ + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + Сообщить(РезультатУстановкиВебХукаНаСервере()); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция РезультатУстановкиВебХукаНаСервере() + + Ответ = ТелеграмМетодыВызовСервера.SetWebHook(Константы.ТелеграмВебХук.Получить()); + ОтветОбъект = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ); + + Если ОтветОбъект.Получить("description") <> Неопределено Тогда + Возврат ОтветОбъект["description"]; + КонецЕсли; + + Возврат Ответ; + +КонецФункции diff --git a/src/cf/CommonModules/HttpОбщегоНазначения.xml b/src/cf/CommonModules/HttpОбщегоНазначения.xml new file mode 100644 index 0000000..e4fb968 --- /dev/null +++ b/src/cf/CommonModules/HttpОбщегоНазначения.xml @@ -0,0 +1,23 @@ + + + + + HttpОбщегоНазначения + + + ru + HTTP общего назначения + + + + false + false + true + true + false + true + false + DontUse + + + \ No newline at end of file diff --git a/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl new file mode 100644 index 0000000..fa429d6 --- /dev/null +++ b/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl @@ -0,0 +1,172 @@ +#Область ПрограммныйИнтерфейс + +Функция ВыполнитьGetЗапрос(АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт + + Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL); + + Если Параметры <> Неопределено Тогда + АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры); + КонецЕсли; + Запрос = Новый HTTPЗапрос(АдресРесурса); + Запрос.Заголовки.Вставить("Content-Type","application/json"); + + Ответ = Соединение.Получить(Запрос); + + Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда + Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент(); + Лог.Дата = ТекущаяДатаСеанса(); + Лог.HTTPЗапрос = Запрос.АдресРесурса; + Лог.HTTPОтвет = ?(ДвоичныеДанные,"Двоичные данные", + HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку())); + Лог.Записать(); + КонецЕсли; + + КодСостояния = Ответ.КодСостояния; + + Если КодСостояния = 200 Тогда + ТелоОтвета = ?(ДвоичныеДанные, Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ.ПолучитьТелоКакСтроку()); + Иначе + ТелоОтвета = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ.ПолучитьТелоКакСтроку()); + Описание = ?(ТелоОтвета.Получить("description") <> Неопределено, ТелоОтвета["description"], ""); + + ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, + СтрШаблон("Не удалось выполнить запрос. Код состояния = %1. %2", КодСостояния, Описание)); + ТелоОтвета = Неопределено; + КонецЕсли; + + Возврат ТелоОтвета; + +КонецФункции + +Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Тело = Неопределено) Экспорт + + Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL); + + Если Параметры <> Неопределено Тогда + АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры); + КонецЕсли; + Запрос = Новый HTTPЗапрос(АдресРесурса); + Запрос.Заголовки.Вставить("Content-Type","application/json"); + Если Тело <> Неопределено Тогда + Запрос.УстановитьТелоИзСтроки(ОбъектВСтрокуJson(Тело)); + КонецЕсли; + + Ответ = Соединение.ОтправитьДляОбработки(Запрос); + + Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда + Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент(); + Лог.Дата = ТекущаяДатаСеанса(); + Лог.HTTPЗапрос = Запрос.АдресРесурса; + Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку()); + Лог.Записать(); + КонецЕсли; + + КодСостояния = Ответ.КодСостояния; + + Если КодСостояния = 200 Тогда + ТелоОтвета = Ответ.ПолучитьТелоКакСтроку(); + Иначе + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = "Не удалось выполнить запрос. Код состояния = " + КодСостояния; + Сообщение.Сообщить(); + ТелоОтвета = Неопределено; + КонецЕсли; + + Возврат ТелоОтвета; + +КонецФункции + +Функция СтрокаJsonВОбъект(СтрокаJson) Экспорт + + ЧтениеJSON = Новый ЧтениеJSON; + ЧтениеJSON.УстановитьСтроку(СтрокаJson); + Попытка + ИтоговоеСоответствие = ПрочитатьJSON(ЧтениеJSON, Истина); + ЧтениеJSON.Закрыть(); + Возврат ИтоговоеСоответствие; + Исключение + Ошибка = ОписаниеОшибки(); + ЗаписьЖурналаРегистрации("Ошибка конвертации из JSON в объект", УровеньЖурналаРегистрации.Ошибка,,,Ошибка); + КонецПопытки; + + Возврат Неопределено; + +КонецФункции + +Функция ОбъектВСтрокуJson(Объект) Экспорт + + ЗаписьJSON = Новый ЗаписьJSON; + ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(, Символы.Таб); + ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи); + Попытка + ЗаписатьJSON(ЗаписьJSON, Объект); + Возврат ЗаписьJSON.Закрыть(); + Исключение + Ошибка = ОписаниеОшибки(); + ЗаписьЖурналаРегистрации("Ошибка конвертации объекта в JSON", УровеньЖурналаРегистрации.Ошибка,,,Ошибка); + КонецПопытки; + + Возврат ""; + +КонецФункции + +Функция ФорматированныйJson(СтрокаJson) Экспорт + + Возврат ОбъектВСтрокуJson(СтрокаJsonВОбъект(СтрокаJson)); + +КонецФункции + +Функция ОтветУспех() Экспорт + + СтруктураОтвета = Новый Структура("result", "ok"); + Возврат ОтветJson(СтруктураОтвета, 200); + +КонецФункции + +Функция ОтветОшибка() Экспорт + + ИнформацияОбОшибке = ИнформацияОбОшибке(); + + ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + + СтруктураОтвета = Новый Структура("result, description", "error", КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + Возврат ОтветJson(СтруктураОтвета, 500); + +КонецФункции + +#КонецОбласти + + +#Область СлужебныеПроцедурыИФункции + +Функция ОтветJson(Объект, КодСостояния) + + Ответ = Новый HTTPСервисОтвет(КодСостояния); + Ответ.Заголовки.Вставить("Content-Type","application/json"); + Ответ.УстановитьТелоИзСтроки(ОбъектВСтрокуJson(Объект)); + + Возврат Ответ; + +КонецФункции + + +Функция АдресРесурсаСПараметрами(АдресРесурса, Параметры) + + Если Параметры.Количество() = 0 Тогда + Возврат АдресРесурса; + КонецЕсли; + + МассивПараметров = Новый Массив; + Для каждого Параметр Из Параметры Цикл + Если НЕ ЗначениеЗаполнено(Параметр.Значение) Тогда + Продолжить; + КонецЕсли; + МассивПараметров.Добавить(СтрШаблон("%1=%2", Параметр.Ключ, Параметр.Значение)); + КонецЦикла; + + Возврат СтрШаблон("%1?%2", АдресРесурса, СтрСоединить(МассивПараметров, "&")); + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git a/src/cf/CommonModules/ТелеграмМетодыВызовСервера.xml b/src/cf/CommonModules/ТелеграмМетодыВызовСервера.xml new file mode 100644 index 0000000..50dc72c --- /dev/null +++ b/src/cf/CommonModules/ТелеграмМетодыВызовСервера.xml @@ -0,0 +1,23 @@ + + + + + ТелеграмМетодыВызовСервера + + + ru + Телеграм методы вызов сервера + + + + false + false + true + true + false + true + false + DontUse + + + \ No newline at end of file diff --git a/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl new file mode 100644 index 0000000..8691ee2 --- /dev/null +++ b/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl @@ -0,0 +1,61 @@ +#Область ПрограммныйИнтерфейс + +Функция SendMessage(ИдЧата, СообщениеДляОтправки) Экспорт + + ТелоЗапроса = Новый Структура("chat_id, text", ИдЧата, СообщениеДляОтправки); + АдресРесурса = АдресРесурсаПоИмениМетода("sendMessage"); + Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,,ТелоЗапроса); + +КонецФункции + +Функция SetWebHook(АдресВебхук) Экспорт + + ПараметрыЗапроса = Новый Структура("url", АдресВебхук); + АдресРесурса = АдресРесурсаПоИмениМетода("setWebhook"); + Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса); + +КонецФункции + +Функция DeleteWebhook() Экспорт + + АдресРесурса = АдресРесурсаПоИмениМетода("deleteWebhook"); + Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса); + +КонецФункции + +Функция GetWebhookInfo() Экспорт + + АдресРесурса = АдресРесурсаПоИмениМетода("getWebhookInfo"); + Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса); + +КонецФункции + +Функция GetUpdates() Экспорт + + Смещение = ? (ТелеграмОбщегоНазначения.ИдПоследнегоСообщения() = 0,0, + Формат(ТелеграмОбщегоНазначения.ИдПоследнегоСообщения() + 1, "ЧГ=0")); + ПараметрыЗапроса = Новый Структура("offset", Смещение); + АдресРесурса = АдресРесурсаПоИмениМетода("getUpdates"); + Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса); + +КонецФункции + +Функция GetFile(ИдФайла) Экспорт + + АдресРесурса = АдресРесурсаПоИмениМетода("getFile"); + ПараметрыЗапроса = Новый Структура("file_id", ИдФайла); + Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса); + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция АдресРесурсаПоИмениМетода(ИмяМетода) + + Возврат СтрШаблон("/bot%1/%2", ТелеграмПовторноеИспользование.ТелеграмТокен(), ИмяМетода); + +КонецФункции + +#КонецОбласти diff --git a/src/cf/CommonModules/ТелеграмОбщегоНазначения.xml b/src/cf/CommonModules/ТелеграмОбщегоНазначения.xml new file mode 100644 index 0000000..4f76234 --- /dev/null +++ b/src/cf/CommonModules/ТелеграмОбщегоНазначения.xml @@ -0,0 +1,23 @@ + + + + + ТелеграмОбщегоНазначения + + + ru + Телеграм общего назначения + + + + false + false + true + false + false + true + false + DontUse + + + \ No newline at end of file diff --git a/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl new file mode 100644 index 0000000..2a545c0 --- /dev/null +++ b/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl @@ -0,0 +1,256 @@ +#Область ПрограммныйИнтерфейс + +Функция ИдПоследнегоСообщения() Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ЕСТЬNULL(МАКСИМУМ(ТелеграмСообщения.ИдСообщения), 0) КАК ИдСообщения + |ИЗ + | РегистрСведений.ТелеграмСообщения КАК ТелеграмСообщения"; + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Если ВыборкаДетальныеЗаписи.Следующий() Тогда + Возврат ВыборкаДетальныеЗаписи.ИдСообщения; + КонецЕсли; + + Возврат 0; + +КонецФункции + +// Получить обновления, пришедшие от вебхука и сохранить в базу +Процедура ОбработатьИСохранитьОбновленияТелеграм(ТелоЗапроса) Экспорт + + ДанныеОбновления = HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоЗапроса); + + Если ДанныеОбновления = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ЭтоМассивОбновлений(ДанныеОбновления) Тогда + МассивОбновлений = ДанныеОбновления["result"]; + Для каждого Обновление Из МассивОбновлений Цикл + ПараметрыСообщения = СтруктураСообщенияТелеграм(Обновление); + СохранитьСообщениеВБазу(ПараметрыСообщения); + КонецЦикла; + ИначеЕсли ЭтоОдиночноеОбновление(ДанныеОбновления) Тогда + ПараметрыСообщения = СтруктураСообщенияТелеграм(ДанныеОбновления); + СохранитьСообщениеВБазу(ПараметрыСообщения); + КонецЕсли; + +КонецПроцедуры + +Функция ОбновленияТелеграм(ТелоЗапроса) Экспорт + + ДанныеОбновления = HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоЗапроса); + + МассивСообщенийТелеграм = Новый Массив; + + Если ДанныеОбновления = Неопределено Тогда + Возврат МассивСообщенийТелеграм; + КонецЕсли; + + Если ЭтоМассивОбновлений(ДанныеОбновления) Тогда + МассивОбновлений = ДанныеОбновления["result"]; + Для каждого Обновление Из МассивОбновлений Цикл + ПараметрыСообщения = СтруктураСообщенияТелеграм(Обновление); + МассивСообщенийТелеграм.Добавить(ПараметрыСообщения) + КонецЦикла; + ИначеЕсли ЭтоОдиночноеОбновление(ДанныеОбновления) Тогда + ПараметрыСообщения = СтруктураСообщенияТелеграм(Обновление); + МассивСообщенийТелеграм.Добавить(ПараметрыСообщения) + КонецЕсли; + + Возврат МассивСообщенийТелеграм; + +КонецФункции + +Функция СтруктураСообщенияТелеграм(Обновление) + + ДанныеСообщения = Обновление["message"]; + + ПараметрыСообщения = Новый Структура; + ПараметрыСообщения.Вставить("ИдСообщения", Обновление["update_id"]); + + Автор = АвторСообщения(ДанныеСообщения["from"]); + ПараметрыСообщения.Вставить("Автор", Автор); + + НовоеСообщение = ТелеграмСообщение(ДанныеСообщения, Автор); + ПараметрыСообщения.Вставить("Сообщение", НовоеСообщение); + + ПараметрыСообщения.Вставить("Дата", ТекущаяДатаСеанса()); + + ИдЧата = ДанныеСообщения["chat"]["id"]; + ПараметрыСообщения.Вставить("ИдЧата", ИдЧата); + + Возврат ПараметрыСообщения; + +КонецФункции + +Процедура СохранитьСообщениеВБазу(СтруктураСообщения) Экспорт + + МенеджерЗаписи = РегистрыСведений.ТелеграмСообщения.СоздатьМенеджерЗаписи(); + ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СтруктураСообщения); + МенеджерЗаписи.Записать(); + +КонецПроцедуры + +Функция ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервере) Экспорт + + АдресРесурса = СтрШаблон("file/bot%1/%2", ТелеграмПовторноеИспользование.ТелеграмТокен(), ПутьКФайлуНаСервере); + Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса,, Истина); + +КонецФункции + +Функция ДанныеДокументаПоИд(ИдДокумента) Экспорт + + Ответ = ТелеграмМетодыВызовСервера.GetFile(ИдДокумента); + + Если Ответ = Неопределено Тогда + Возврат Ответ; + КонецЕсли; + + ДанныеФайла = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ); + + //Если ДанныеФайла.Получить("ok") <> Неопределено Тогда + // Если ДанныеФайла["ok"] И ДанныеФайла.Получить["result"] <> Неопределено Тогда + // ПутьКФайлуНаСервереТелеграм = ДанныеФайла["result"]["file_path"]; + // Возврат ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервереТелеграм); + // Иначе + // ЗаписьЖурналаРегистрации("Телеграм.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, + // СтрШаблон("Не удалось получить файл по id. Код ошибки %1, описание: %2", , ДанныеФайла["error_code"], + // ДанныеФайла["description"])); + // КонецЕсли; + //КонецЕсли; + + Если ДанныеФайла.Получить("result") <> Неопределено Тогда + Возврат ПолучитьФайлССервераТелеграм(ДанныеФайла["result"]["file_path"]); + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ЭтоМассивОбновлений(СоответствиеОбновления) + + Результат = СоответствиеОбновления.Получить("ok"); + + Если Результат <> Неопределено Тогда + Возврат Результат; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +Функция ЭтоОдиночноеОбновление(СоответствиеОбновления) + + ИдОбновления = СоответствиеОбновления.Получить("update_id"); + Сообщение = СоответствиеОбновления.Получить("message"); + + Если ИдОбновления <> Неопределено И Сообщение <> Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +Функция АвторСообщения(СоответствиеОт) + + Если СоответствиеОт.Получить("id") = Неопределено Тогда + Возврат Справочники.ТелеграмПользователь.НеОпределен; + КонецЕсли; + + Автор = Справочники.ТелеграмПользователь.НайтиПоРеквизиту("id", СоответствиеОт["id"]); + + Если Не ЗначениеЗаполнено(Автор) Тогда + НовыйПользователь = Справочники.ТелеграмПользователь.СоздатьЭлемент(); + НовыйПользователь.Наименование = СоответствиеОт["first_name"]; + НовыйПользователь.id = СоответствиеОт["id"]; + НовыйПользователь.last_name = СоответствиеОт["last_name"]; + НовыйПользователь.username = СоответствиеОт["username"]; + НовыйПользователь.Записать(); + Автор = НовыйПользователь.Ссылка; + КонецЕсли; + + Возврат Автор; + +КонецФункции + +Функция ТелеграмСообщение(СообщениеДляОбработки, Автор) + + ИдСообщения = СообщениеДляОбработки.Получить("message_id"); + + Если ИдСообщения = Неопределено Тогда + Возврат Справочники.ТелеграмСообщение.ПустаяСсылка(); + КонецЕсли; + + ИтоговоеСообщение = Справочники.ТелеграмСообщение.НайтиПоРеквизиту("id", ИдСообщения); + + Если НЕ ЗначениеЗаполнено(ИтоговоеСообщение) Тогда + НовоеСообщение = Справочники.ТелеграмСообщение.СоздатьЭлемент(); + НовоеСообщение.Наименование = "Сообщение № " + ИдСообщения + " от " + Автор; + НовоеСообщение.id = ИдСообщения; + НовоеСообщение.Автор = Автор; + Если СообщениеДляОбработки.Получить("text") <> Неопределено Тогда + НовоеСообщение.text = СообщениеДляОбработки["text"]; + КонецЕсли; + Если СообщениеДляОбработки.Получить("document") <> Неопределено Тогда + НовоеСообщение.document = СформироватьДокумент(СообщениеДляОбработки["document"]); + КонецЕсли; + НовоеСообщение.date = TimeStampToDate(СообщениеДляОбработки["date"]); + НовоеСообщение.Записать(); + ИтоговоеСообщение = НовоеСообщение.Ссылка; + КонецЕсли; + + Возврат ИтоговоеСообщение; + +КонецФункции + +Функция СформироватьДокумент(СоответствиеДокумент) + + ИдДокумента = СоответствиеДокумент.Получить("file_unique_id"); + + Если ИдДокумента = Неопределено Тогда + Возврат Справочники.ТелеграмДокумент.ПустаяСсылка(); + КонецЕсли; + + ИтоговыйДокумент = Справочники.ТелеграмДокумент.НайтиПоРеквизиту("id", ИдДокумента); + + Если НЕ ЗначениеЗаполнено(ИтоговыйДокумент) Тогда + НовыйДокумент = Справочники.ТелеграмДокумент.СоздатьЭлемент(); + НовыйДокумент.Наименование = СоответствиеДокумент["file_name"]; + НовыйДокумент.id = ИдДокумента; + + НовыйДокумент.file_name = СоответствиеДокумент["file_name"]; + НовыйДокумент.mime_type = СоответствиеДокумент["mime_type"]; + НовыйДокумент.file_size = СоответствиеДокумент["file_size"]; + + ДанныеДокумента = ДанныеДокументаПоИд(СоответствиеДокумент["file_id"]); + Если ДанныеДокумента <> Неопределено Тогда + НовыйДокумент.ДанныеФайла = Новый ХранилищеЗначения(ДанныеДокумента); + КонецЕсли; + + НовыйДокумент.Записать(); + ИтоговыйДокумент = НовыйДокумент.Ссылка; + КонецЕсли; + + Возврат ИтоговыйДокумент; + +КонецФункции + +Функция TimeStampToDate(ЮниксТайм) + + Возврат Дата(1970,1,1,1,0,0) + СмещениеСтандартногоВремени(ЧасовойПоясСеанса()) + ЮниксТайм; + +КонецФункции + +#КонецОбласти diff --git a/src/cf/CommonModules/ТелеграмПовторноеИспользование.xml b/src/cf/CommonModules/ТелеграмПовторноеИспользование.xml new file mode 100644 index 0000000..2f49d90 --- /dev/null +++ b/src/cf/CommonModules/ТелеграмПовторноеИспользование.xml @@ -0,0 +1,23 @@ + + + + + ТелеграмПовторноеИспользование + + + ru + Телеграм повторное использование + + + + false + false + true + true + false + false + false + DuringSession + + + \ No newline at end of file diff --git a/src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl new file mode 100644 index 0000000..3020fe1 --- /dev/null +++ b/src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl @@ -0,0 +1,5 @@ +Функция ТелеграмТокен() Экспорт + + Возврат Константы.ТелеграмТокен.Получить(); + +КонецФункции diff --git a/src/cf/CommonModules/ТелеграмРегламент.xml b/src/cf/CommonModules/ТелеграмРегламент.xml new file mode 100644 index 0000000..dd61359 --- /dev/null +++ b/src/cf/CommonModules/ТелеграмРегламент.xml @@ -0,0 +1,23 @@ + + + + + ТелеграмРегламент + + + ru + Телеграм регламент + + + + false + false + true + true + false + false + false + DontUse + + + \ No newline at end of file diff --git a/src/cf/CommonModules/ТелеграмРегламент/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмРегламент/Ext/Module.bsl new file mode 100644 index 0000000..9d49c25 --- /dev/null +++ b/src/cf/CommonModules/ТелеграмРегламент/Ext/Module.bsl @@ -0,0 +1,19 @@ +// Получить обновления и обработать их по расписанию +Процедура ПроверкаОбновленийПоРасписанию() Экспорт + + // Проверка установлен ли вебхук + Ответ = HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелеграмМетодыВызовСервера.GetWebhookInfo()); + Если Ответ["ok"] И ЗначениеЗаполнено(Ответ["result"]["url"]) Тогда + Возврат; + КонецЕсли; + + Ответ = ТелеграмМетодыВызовСервера.GetUpdates(); + Если Ответ <> Неопределено Тогда + МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ); + Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл + ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм); + ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text) + КонецЦикла; + КонецЕсли; + +КонецПроцедуры diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml new file mode 100644 index 0000000..0deaeef --- /dev/null +++ b/src/cf/Configuration.xml @@ -0,0 +1,268 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 7b991af1-895d-49db-8ac4-1450ee223c62 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 59fdc80b-8a64-4fc6-85bb-9bddaa5f2049 + + + e3687481-0a87-462c-a166-9f34594f9bba + 17c9be1b-8ead-4295-883e-fb9f13ce1e39 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 79ea00f2-35d1-4e24-b36a-9f45d0f8ba58 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 8376b420-f491-4f23-9b12-1fd5707b744c + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 09855201-e17d-490e-b8b9-fd3c58eb6cc6 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 66a26b09-43f1-4f7e-b9f5-735107340dd7 + + + + Конфигурация + + Реализация телеграм-бота средствами 1С + + Version8_3_26 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + Taxi + DontUse + Version8_3_24 + + + + Русский + ТелеграмБот + HttpОбщегоНазначения + ТелеграмМетодыВызовСервера + ТелеграмОбщегоНазначения + ТелеграмПовторноеИспользование + ТелеграмРегламент + HTTPСервис_Telegram + ПроверкаОбновленийТелеграм + ТелеграмТокен + ТелеграмВебХук + ЛогироватьHttpЗапросы + ТелеграмВебХук + ТелеграмПользователь + ТелеграмСообщение + ТелеграмДокумент + ЛогHttpЗапроса + РаботаССообщениями + ТелеграмСообщения + + + \ No newline at end of file diff --git a/src/cf/Constants/ЛогироватьHttpЗапросы.xml b/src/cf/Constants/ЛогироватьHttpЗапросы.xml new file mode 100644 index 0000000..83c6adf --- /dev/null +++ b/src/cf/Constants/ЛогироватьHttpЗапросы.xml @@ -0,0 +1,58 @@ + + + + + + 5444eb43-8180-41e9-a2b0-f3a60e089702 + 96004d2c-3926-402b-92aa-d6fd82b809b8 + + + 72d7723f-fe5b-4718-9ea7-6d3ae725dcf9 + 1fdd1989-5aca-4acc-a41c-fc23b809bfd6 + + + 5363026d-d7d2-4150-a0bd-0b129a4f865b + e9ac14f6-4c7f-4c70-bc45-94112b747f16 + + + + ЛогироватьHttpЗапросы + + + ru + Логировать http запросы + + + + + xs:boolean + + true + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/src/cf/Constants/ТелеграмВебХук.xml b/src/cf/Constants/ТелеграмВебХук.xml new file mode 100644 index 0000000..443ce17 --- /dev/null +++ b/src/cf/Constants/ТелеграмВебХук.xml @@ -0,0 +1,62 @@ + + + + + + bd358b1b-e82f-4a7a-bd29-cb97fce93ecd + 9d7c9090-a446-4e3c-a95a-3235bd985c17 + + + a94178e4-86c5-4009-8096-0ce3bc11163e + d9dab29b-9833-4dae-8f29-507cd945a2d3 + + + 7de0620e-f946-4af1-9223-cee8b9c82c28 + 0f78e4e3-bb69-4ad5-a0e5-c8c53bb1814d + + + + ТелеграмВебХук + + + ru + Телеграм веб хук + + + + + xs:string + + 0 + Variable + + + true + CommonForm.ТелеграмВебХук + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/src/cf/Constants/ТелеграмТокен.xml b/src/cf/Constants/ТелеграмТокен.xml new file mode 100644 index 0000000..f0e7f5d --- /dev/null +++ b/src/cf/Constants/ТелеграмТокен.xml @@ -0,0 +1,62 @@ + + + + + + b0a1064c-9d23-4200-955a-cad735573405 + 5fa641f3-8efd-4c8b-a242-d246dfe669f6 + + + 9aeb70c8-1e09-4711-92f1-932c333cff50 + 4e794c2c-575c-4f9a-8aa2-c98d18e79b9e + + + d8060bb3-868e-425e-b82b-10cc00b8005b + 8053f4a9-5970-4951-a57d-1fbe5a124931 + + + + ТелеграмТокен + + + ru + Телеграм токен + + + + + xs:string + + 50 + Variable + + + true + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/src/cf/DataProcessors/РаботаССообщениями.xml b/src/cf/DataProcessors/РаботаССообщениями.xml new file mode 100644 index 0000000..8f141c6 --- /dev/null +++ b/src/cf/DataProcessors/РаботаССообщениями.xml @@ -0,0 +1,34 @@ + + + + + + 2c761f39-689d-4cf5-ab61-81089624c383 + 457171ce-0693-48a8-975c-dbd7499e90bc + + + e4281817-188f-4d03-a366-9f47ac9832f9 + 40dc4dda-7a39-482c-aab1-de02c4d74a6f + + + + РаботаССообщениями + + + ru + Работа с сообщениями + + + + true + DataProcessor.РаботаССообщениями.Form.Форма + + false + + + + +
Форма
+
+
+
\ No newline at end of file diff --git a/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма.xml b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма.xml new file mode 100644 index 0000000..1b21f86 --- /dev/null +++ b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма.xml @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git a/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form.xml b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form.xml new file mode 100644 index 0000000..89e8941 --- /dev/null +++ b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form.xml @@ -0,0 +1,321 @@ + +
+ Use + UseList + + + + Сообщения + true + true + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Webhook</v8:content> + </v8:item> + + + + ru + Webhook + + + Vertical + + + + АдресВебхук + true + true + + + + + AlwaysHorizontal + None + false + + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Post</v8:content> + </v8:item> + + + + ru + Post + + + Vertical + StrongSeparation + + + + СообщениеДляОтправки + true + true + + + + + None + false + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Загрузка документов</v8:content> + </v8:item> + + + + ru + Загрузка документов + + + Vertical + + + + ИдФайла + true + + + + + + + + + + + + cfg:DataProcessorObject.РаботаССообщениями + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Сообщения</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Адрес вебхук</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + АдресВебхук + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Сообщение для отправки</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Ид файла</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + ИдФайла + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Получить сообщения</v8:content> + </v8:item> + + + + ru + Получить сообщения + + + ПолучитьСообщения + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Get webhook info</v8:content> + </v8:item> + + + + ru + Get webhook info + + + getWebhookInfo + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Set web hook</v8:content> + </v8:item> + + + + ru + Set web hook + + + SetWebHook + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Post запрос</v8:content> + </v8:item> + + + + ru + Post запрос + + + PostЗапрос + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Delete webhook</v8:content> + </v8:item> + + + + ru + Delete webhook + + + DeleteWebhook + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Скачать файл</v8:content> + </v8:item> + + + + ru + Скачать файл + + + СкачатьФайл + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Прочитать файл</v8:content> + </v8:item> + + + + ru + Прочитать файл + + + ПрочитатьФайл + + + \ No newline at end of file diff --git a/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 0000000..6fe9738 --- /dev/null +++ b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl @@ -0,0 +1,205 @@ +&НаКлиенте +Процедура ПолучитьСообщения(Команда) + + //Сообщения = ""; + //Ответ = ТелеграмМетодыВызовСервера.GetUpdates(); + //Если НЕ Ответ = Неопределено Тогда + // Сообщения = HttpОбщегоНазначения.ФорматированныйJson(Ответ); + //КонецЕсли; + + ПолучитьСообщенияНаСервере(); + +КонецПроцедуры + + +&НаСервереБезКонтекста +Процедура ПолучитьСообщенияНаСервере() + + Ответ = ТелеграмМетодыВызовСервера.GetUpdates(); + Если Ответ <> Неопределено Тогда + МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ); + Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл + ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм); + //ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text) + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура getWebhookInfo(Команда) + + Ответ = ТелеграмМетодыВызовСервера.GetWebhookInfo(); + Если НЕ Ответ = Неопределено Тогда + ВывестиОтвет(Ответ); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура SetWebHook(Команда) + + Ответ = ТелеграмМетодыВызовСервера.SetWebHook(АдресВебхук); + Если НЕ Ответ = Неопределено Тогда + ВывестиОтвет(Ответ); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура PostЗапрос(Команда) + + Ответ = ТелеграмМетодыВызовСервера.SendMessage(248415372, СообщениеДляОтправки); + Если НЕ Ответ = Неопределено Тогда + ВывестиОтвет(Ответ); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура DeleteWebhook(Команда) + + Ответ = ТелеграмМетодыВызовСервера.DeleteWebhook(); + Если НЕ Ответ = Неопределено Тогда + ВывестиОтвет(Ответ); + КонецЕсли; + +КонецПроцедуры + + +&НаКлиенте +Процедура ВывестиОтвет(Ответ) + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = HttpОбщегоНазначения.ФорматированныйJson(Ответ); + Сообщение.Сообщить(); + +КонецПроцедуры + + +//&НаСервереБезКонтекста +//Функция СкачатьФайлНаСервере(ПутьКФайлуНаСервере) +// +// АдресРесурса = СтрШаблон("file/bot%1/%2", +// ТелеграмПовторноеИспользование.ТелеграмТокен(), +// ПутьКФайлуНаСервере); +// Ответ = HttpОбщегоНазначения.ВыполнитьGetЗапросДвоичныеДанные(АдресРесурса); +// МенеджерЗаписи = РегистрыСведений.ТелеграмФайлы.СоздатьМенеджерЗаписи(); +// //МенеджерЗаписи.ИдСообщения = 336; +// //МенеджерЗаписи.Данные = Новый ХранилищеЗначения(Ответ, Новый СжатиеДанных(0)); +// //МенеджерЗаписи.ИмяФайла = "13_05_2025_09_42_108907060608184446656.json"; +// +// МенеджерЗаписи.ИдСообщения = 339; +// МенеджерЗаписи.Данные = Новый ХранилищеЗначения(Ответ, Новый СжатиеДанных(0)); +// МенеджерЗаписи.ИмяФайла = "test.pdf"; +// +// МенеджерЗаписи.Записать(); +// +// Возврат Ответ; +// +//КонецФункции + + +&НаКлиенте +Процедура СкачатьФайл(Команда) + + //ИдФайла = "BQACAgIAAxkBAAIBUmgkRZKtR_4WXvoykjdfXKTFHCvdAAItegACYyUhSQ9mNituwQR1NgQ"; + СкачатьФайлНаСервере(ИдФайла); + + + //Ответ = ТелеграмМетодыВызовСервера.GetFile(ИдФайла); + //ОтветСоответствие = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ); + // + //ПутьКФайлуНаСервереТелеграм = ОтветСоответствие["result"]["file_path"]; + // + ////Ответ = СкачатьФайлНаСервере(ПутьКФайлуНаСервере); + //Ответ = СкачатьФайлНаСервере(ПутьКФайлуНаСервереТелеграм); + + //Если НЕ Ответ = Неопределено Тогда + // //ВывестиОтвет(Ответ); + //КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СкачатьФайлНаСервере(ИдФайла) + + + НовыйДокумент = Справочники.ТелеграмДокумент.СоздатьЭлемент(); + НовыйДокумент.Наименование = "Тестовый документ"; + НовыйДокумент.id = "AgADLXoAAmMlIUk"; + + НовыйДокумент.file_name = "test.pdf"; + НовыйДокумент.mime_type = "application/pdf"; + НовыйДокумент.file_size = 811482; + + ДанныеДокумента = ТелеграмОбщегоНазначения.ДанныеДокументаПоИд(ИдФайла); + Если ДанныеДокумента <> Неопределено Тогда + НовыйДокумент.ДанныеФайла = Новый ХранилищеЗначения(ДанныеДокумента); + КонецЕсли; + + НовыйДокумент.Записать(); + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = СтрШаблон("Документ %1 успешно записан", НовыйДокумент.Ссылка); + Сообщение.Сообщить(); + +КонецПроцедуры + + + +&НаКлиенте +Процедура ПрочитатьФайл(Команда) + + ДанныеФайла = ПолучитьДанныеФайла(); + Если ДанныеФайла <> Неопределено Тогда + Если ДанныеФайла.Свойство("ДвоичныеДанные") И ДанныеФайла.Свойство("ИмяФайла") Тогда + ИмяВременногоФайла = ПолучитьИмяВременногоФайла(ПолучитьРасширениеИмениФайла(ДанныеФайла.ИмяФайла)); + ДанныеФайла.ДвоичныеДанные.Записать(ИмяВременногоФайла); + ЗапуститьПриложениеАсинх(ИмяВременногоФайла); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПолучитьДанныеФайла() + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ТелеграмФайлы.Данные КАК Данные, + | ТелеграмФайлы.ИмяФайла КАК ИмяФайла + |ИЗ + | РегистрСведений.ТелеграмФайлы КАК ТелеграмФайлы + |ГДЕ + | ТелеграмФайлы.ИдСообщения = &ИдСообщения"; + + //Запрос.УстановитьПараметр("ИдСообщения", 336); + Запрос.УстановитьПараметр("ИдСообщения", 338); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Если ВыборкаДетальныеЗаписи.Следующий() Тогда + ДвоичныеДанные = ВыборкаДетальныеЗаписи.Данные.Получить(); + ИмяФайла = ВыборкаДетальныеЗаписи.ИмяФайла; + Возврат Новый Структура("ДвоичныеДанные, ИмяФайла", ДвоичныеДанные, ИмяФайла); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт + + РасширениеФайла = ""; + МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь); + Если МассивСтрок.Количество() > 1 Тогда + РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1]; + КонецЕсли; + Возврат РасширениеФайла; + +КонецФункции \ No newline at end of file diff --git a/src/cf/Documents/ЛогHttpЗапроса.xml b/src/cf/Documents/ЛогHttpЗапроса.xml new file mode 100644 index 0000000..4b5cde0 --- /dev/null +++ b/src/cf/Documents/ЛогHttpЗапроса.xml @@ -0,0 +1,170 @@ + + + + + + ea6e9e6f-fd73-405a-bac6-96eee781c8e5 + d94f7494-6432-421e-bebf-573e35cee4ad + + + dc268b14-03bf-4907-a652-b52e45d59363 + 4e5a9388-65a8-48a6-b32e-c1d494e2e2a3 + + + a65053fd-9227-430b-affd-6cb0b5383140 + 9aeb4fba-27a8-4e05-8a74-d8afba4ff2ff + + + bd353e78-0d8b-46a4-816e-df8cf45ed3df + f8cc591c-5150-4294-acf9-9f5ef49f7996 + + + cae7dc26-80c9-4d43-8a24-96aa775739fc + 1c720f88-df95-4bf7-9cf9-35d32df85dc3 + + + + ЛогHttpЗапроса + + + ru + Лог http запроса + + + + true + + String + 9 + Variable + Nonperiodical + true + true + + + + Document.ЛогHttpЗапроса.StandardAttribute.Number + + Use + Begin + DontUse + Directly + Document.ЛогHttpЗапроса.Form.ФормаДокумента + + + + + + Deny + Allow + AutoDeleteOnUnpost + WriteSelected + AutoFill + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + + HTTPЗапрос + + + ru + HTTPЗапрос + + + + + xs:string + + 0 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + HTTPОтвет + + + ru + HTTPОтвет + + + + + xs:string + + 0 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + +
ФормаДокумента
+
+
+
\ No newline at end of file diff --git a/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента.xml b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента.xml new file mode 100644 index 0000000..5b9aa02 --- /dev/null +++ b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаДокумента + + + ru + Форма документа + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml new file mode 100644 index 0000000..6e45b6e --- /dev/null +++ b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml @@ -0,0 +1,72 @@ + +
+ CurrentOrLast + Auto + true + + + + Объект.Number + EnterOnInput + true + + + + + Объект.Date + EnterOnInput + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>HTTP</v8:content> + </v8:item> + + + + ru + HTTP + + + Vertical + StrongSeparation + + + + Объект.HTTPЗапрос + EnterOnInput + false + true + true + + + + + Объект.HTTPОтвет + EnterOnInput + false + true + true + + + + + + + + + + cfg:DocumentObject.ЛогHttpЗапроса + + true + true + + Объект.RegisterRecords + + + + \ No newline at end of file diff --git a/src/cf/HTTPServices/HTTPСервис_Telegram.xml b/src/cf/HTTPServices/HTTPСервис_Telegram.xml new file mode 100644 index 0000000..12aa03d --- /dev/null +++ b/src/cf/HTTPServices/HTTPСервис_Telegram.xml @@ -0,0 +1,44 @@ + + + + + HTTPСервис_Telegram + + + ru + HTTPСервис telegram + + + + bot + AutoUse + 20 + + + + + ШаблонURL1 + + + + + + + + PostGetUpdate + + + ru + Post get update + + + + POST + ШаблонURL1PostGetUpdate + + + + + + + \ No newline at end of file diff --git a/src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl b/src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl new file mode 100644 index 0000000..fc20ba5 --- /dev/null +++ b/src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl @@ -0,0 +1,29 @@ + +Функция ШаблонURL1PostGetUpdate(Запрос) + + Попытка + Лог = Неопределено; + Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда + Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент(); + Лог.Дата = ТекущаяДатаСеанса(); + ТелоЗапросаДляЛогов = HttpОбщегоНазначения.ФорматированныйJson(Запрос.ПолучитьТелоКакСтроку()); + Лог.HTTPЗапрос = ТелоЗапросаДляЛогов; + КонецЕсли; + ТелеграмОбщегоНазначения.ОбработатьИСохранитьОбновленияТелеграм(Запрос.ПолучитьТелоКакСтроку()); + Ответ = HttpОбщегоНазначения.ОтветУспех(); + Если Лог <> Неопределено Тогда + Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку()); + Лог.Записать(); + КонецЕсли; + Возврат Ответ; + Исключение + Ответ = HttpОбщегоНазначения.ОтветОшибка(); + Если Лог <> Неопределено Тогда + Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку()); + Лог.Записать(); + КонецЕсли; + + Возврат Ответ; + КонецПопытки; + +КонецФункции diff --git a/src/cf/InformationRegisters/ТелеграмСообщения.xml b/src/cf/InformationRegisters/ТелеграмСообщения.xml new file mode 100644 index 0000000..b0e34c0 --- /dev/null +++ b/src/cf/InformationRegisters/ТелеграмСообщения.xml @@ -0,0 +1,285 @@ + + + + + + 9444c860-a15a-48eb-8b4c-29d90b5c8541 + eca768ad-6630-4ee4-831d-cd6fd9764e3d + + + d628eea0-6995-470d-aecc-51d8bd8ed74c + 1c4d0ec8-9752-4a4d-a549-70205ba4e912 + + + 0c0e64e8-b32e-4995-8a76-42bf05a83183 + b1078888-faa2-407f-922d-032e4b6316c3 + + + 064168d2-83fe-4d6e-ac7f-0dea8e6f87ba + 7c6a16a0-6839-4bc7-b6e4-39c69f23b01c + + + d3cf9ed0-1f6c-4914-adfe-1035aa3fbaa0 + de6174d6-baf0-4a9f-be96-a20177e1f591 + + + e3f0086a-be84-4744-b45d-f1c7bfb2d1e9 + ccffa851-6e1c-4300-a1ee-f81650a30bcd + + + d3d49311-3925-4a11-bc57-fea0f92c011b + b272acb8-75cb-429a-9076-2a2c10e3edc0 + + + + ТелеграмСообщения + + + ru + Телеграм сообщения + + + + true + InDialog + + + + + Nonperiodical + Independent + false + false + Managed + DontUse + false + false + + + + + + DontUse + false + false + + + + + Сообщение + + + ru + Сообщение + + + + + cfg:CatalogRef.ТелеграмСообщение + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + Дата + + + ru + Дата + + + + + xs:dateTime + + DateTime + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + ИдЧата + + + ru + Ид чата + + + + + xs:decimal + + 15 + 0 + Any + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + Автор + + + ru + Автор + + + + + cfg:CatalogRef.ТелеграмПользователь + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + false + true + false + DontIndex + Use + Use + TransformValues + + + + + ИдСообщения + + + ru + Ид сообщения + + + + + xs:decimal + + 15 + 0 + Any + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + false + true + false + DontIndex + Use + Use + TransformValues + + + + + \ No newline at end of file diff --git a/src/cf/Languages/Русский.xml b/src/cf/Languages/Русский.xml new file mode 100644 index 0000000..9fea0e0 --- /dev/null +++ b/src/cf/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм.xml b/src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм.xml new file mode 100644 index 0000000..f2cba09 --- /dev/null +++ b/src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм.xml @@ -0,0 +1,22 @@ + + + + + ПроверкаОбновленийТелеграм + + + ru + Проверка обновлений телеграм + + + + CommonModule.ТелеграмРегламент.ПроверкаОбновленийПоРасписанию + + + false + false + 3 + 10 + + + \ No newline at end of file diff --git a/src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм/Ext/Schedule.xml b/src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм/Ext/Schedule.xml new file mode 100644 index 0000000..204d1a1 --- /dev/null +++ b/src/cf/ScheduledJobs/ПроверкаОбновленийТелеграм/Ext/Schedule.xml @@ -0,0 +1,7 @@ + + + + 1 2 3 4 5 6 7 + 1 2 3 4 5 6 7 8 9 10 11 12 + + \ No newline at end of file diff --git a/src/cf/Subsystems/ТелеграмБот.xml b/src/cf/Subsystems/ТелеграмБот.xml new file mode 100644 index 0000000..1aef90c --- /dev/null +++ b/src/cf/Subsystems/ТелеграмБот.xml @@ -0,0 +1,35 @@ + + + + + ТелеграмБот + + + ru + Телеграм бот + + + + true + true + false + + + + Constant.ТелеграмТокен + InformationRegister.ТелеграмСообщения + DataProcessor.РаботаССообщениями + Catalog.ТелеграмПользователь + Catalog.ТелеграмСообщение + HTTPService.HTTPСервис_Telegram + Constant.ТелеграмВебХук + CommonForm.ТелеграмВебХук + Constant.ЛогироватьHttpЗапросы + Document.ЛогHttpЗапроса + 23bf8986-e502-4170-ad89-eac16b64e144 + Catalog.ТелеграмДокумент + + + + + \ No newline at end of file diff --git a/src/cf/VERSION b/src/cf/VERSION new file mode 100644 index 0000000..6f42a32 --- /dev/null +++ b/src/cf/VERSION @@ -0,0 +1,2 @@ + +1