- Добавил оформление областей в общих модулях

- Декомпозиция процедур и функций общих модулей
This commit is contained in:
2025-05-28 09:59:26 +03:00
parent 0172c538be
commit 0954815c56
10 changed files with 105 additions and 68 deletions

View File

@@ -17,8 +17,8 @@
ОбработатьКомандуДобавитьКонфигурацию(ОбновлениеТелеграм); ОбработатьКомандуДобавитьКонфигурацию(ОбновлениеТелеграм);
ИначеЕсли ОбновлениеТелеграм.Сообщение.text = "/delete" Тогда ИначеЕсли ОбновлениеТелеграм.Сообщение.text = "/delete" Тогда
ОбработатьКомандуУдалитьКонфигурацию(ОбновлениеТелеграм); ОбработатьКомандуУдалитьКонфигурацию(ОбновлениеТелеграм);
ИначеЕсли ДанныеПользователя <> Неопределено ИначеЕсли ДанныеПользователя <> Неопределено И ДанныеПользователя.СтатусДиалога =
И ДанныеПользователя.СтатусДиалога = Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда
ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя); ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя);
КонецЕсли; КонецЕсли;
ИначеЕсли ОбновлениеТелеграм.Свойство("ИдКоллбэка") <> Неопределено Тогда ИначеЕсли ОбновлениеТелеграм.Свойство("ИдКоллбэка") <> Неопределено Тогда
@@ -29,7 +29,6 @@
УдалитьКонфигурациюИзСпискаОтслеживания(Данные, ОбновлениеТелеграм.ИдЧата); УдалитьКонфигурациюИзСпискаОтслеживания(Данные, ОбновлениеТелеграм.ИдЧата);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
@@ -56,7 +55,7 @@
"Для корректного отслеживания обновлений нужно ввести версию конфигурации (четыре группы цифр, разделённых точками):" + "Для корректного отслеживания обновлений нужно ввести версию конфигурации (четыре группы цифр, разделённых точками):" +
Символы.ПС + Символы.ПС +
"Например: 3.1.30.197"; "Например: 3.1.30.197";
РаботаСОбновлениямиВызовСервера.УстановитьСтатусДиалога(ИдЧата, Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии, РаботаСОбновлениямиВызовСервера.УстановитьДанныеПользователя(ИдЧата, Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии,
ИмяКонфигурации); ИмяКонфигурации);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,,); ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,,);
КонецЕсли; КонецЕсли;
@@ -127,7 +126,7 @@
МенеджерЗаписи.АктуальнаяВерсия = АктуальнаяВерсия; МенеджерЗаписи.АктуальнаяВерсия = АктуальнаяВерсия;
Попытка Попытка
МенеджерЗаписи.Записать(); МенеджерЗаписи.Записать();
РаботаСОбновлениямиВызовСервера.УстановитьСтатусДиалога(ИдЧата, Перечисления.ТелеграмСтатусДиалога.НачальноеСостояние, ""); РаботаСОбновлениямиВызовСервера.УстановитьДанныеПользователя(ИдЧата, Перечисления.ТелеграмСтатусДиалога.НачальноеСостояние, "");
ТекстОтвета = СтрШаблон("Версия: %1 успешно добавлена", Версия); ТекстОтвета = СтрШаблон("Версия: %1 успешно добавлена", Версия);
Исключение Исключение
ТекстОтвета = "При сохранении данных возникла ошибка"; ТекстОтвета = "При сохранении данных возникла ошибка";
@@ -148,7 +147,7 @@
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
Для Каждого ГруппаЦифрВерсии Из МассивГруппЦифр Цикл Для Каждого ГруппаЦифрВерсии Из МассивГруппЦифр Цикл
Если Не ТолькоЦифрыВСтроке(ГруппаЦифрВерсии) Тогда Если Не ОбщегоНазначенияКлиентСервер.ТолькоЦифрыВСтроке(ГруппаЦифрВерсии) Тогда
Возврат Ложь; Возврат Ложь;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
@@ -158,30 +157,6 @@
КонецФункции КонецФункции
Функция ТолькоЦифрыВСтроке(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
Возврат Ложь;
КонецЕсли;
Если Не ПробелыЗапрещены Тогда
Значение = СтрЗаменить(Значение, " ", "");
КонецЕсли;
Если СтрДлина(Значение) = 0 Тогда
Возврат Истина;
КонецЕсли;
// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
Возврат СтрДлина(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")) = 0;
КонецФункции
Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм) Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм)
ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС + ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС +
@@ -222,7 +197,7 @@
ИдЧата = ОбновлениеТелеграм.ИдЧата; ИдЧата = ОбновлениеТелеграм.ИдЧата;
Команда = XMLСтрока(Перечисления.ВидыДанныхКоллбэков.AddVersion); Команда = XMLСтрока(Перечисления.ВидыДанныхКоллбэков.AddVersion);
МассивРядов = МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Ложь); МассивРядов = ТелеграмРаботаСКлавиатурой.МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Ложь);
Если МассивРядов = Неопределено Тогда Если МассивРядов = Неопределено Тогда
ТекстОтвета = "Не удалось получить список конфигураций"; ТекстОтвета = "Не удалось получить список конфигураций";
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета); ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
@@ -239,7 +214,7 @@
ИдЧата = ОбновлениеТелеграм.ИдЧата; ИдЧата = ОбновлениеТелеграм.ИдЧата;
Команда = XMLстрока(Перечисления.ВидыДанныхКоллбэков.DeleteVersion); Команда = XMLстрока(Перечисления.ВидыДанныхКоллбэков.DeleteVersion);
МассивРядов = МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Истина); МассивРядов = ТелеграмРаботаСКлавиатурой.МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Истина);
Если МассивРядов = Неопределено Тогда Если МассивРядов = Неопределено Тогда
ТекстОтвета = "Не удалось получить список конфигураций"; ТекстОтвета = "Не удалось получить список конфигураций";
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета); ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
@@ -252,32 +227,4 @@
КонецПроцедуры КонецПроцедуры
Функция МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Подписка = Неопределено)
СписокКонфигураций = РаботаСОбновлениямиВызовСервера.СписокКонфигураций(ИдЧата);
Если СписокКонфигураций.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
МассивРядов = Новый Массив;
Для каждого ПунктМенюПодписки Из СписокКонфигураций Цикл
Если Подписка = Неопределено
ИЛИ (Подписка И ПунктМенюПодписки.Подписка)
ИЛИ (НЕ Подписка И НЕ ПунктМенюПодписки.Подписка) Тогда
МассивКнопок = Новый Массив;
МассивКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(
ПунктМенюПодписки.Наименование
,
,
СтрШаблон("%1 %2", Команда, ПунктМенюПодписки.Имя)
));
МассивРядов.Добавить(МассивКнопок);
КонецЕсли;
КонецЦикла;
Возврат МассивРядов;
КонецЕсли;
КонецФункции
#КонецОбласти #КонецОбласти

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.19">
<CommonModule uuid="6369b63c-3a4f-418b-8ae9-4cf9a6742883">
<Properties>
<Name>ОбщегоНазначенияКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Общего назначения клиент сервер</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -0,0 +1,26 @@
#Область ПрограммныйИнтерфейс
Функция ТолькоЦифрыВСтроке(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
Возврат Ложь;
КонецЕсли;
Если Не ПробелыЗапрещены Тогда
Значение = СтрЗаменить(Значение, " ", "");
КонецЕсли;
Если СтрДлина(Значение) = 0 Тогда
Возврат Истина;
КонецЕсли;
// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
Возврат СтрДлина(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")) = 0;
КонецФункции
#КонецОбласти

View File

@@ -170,7 +170,7 @@
КонецФункции КонецФункции
Процедура УстановитьСтатусДиалога(ИдЧата, НовыйСтатус, ДополнительнаяИнформация) Экспорт Процедура УстановитьДанныеПользователя(ИдЧата, НовыйСтатус, ДополнительнаяИнформация) Экспорт
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = Запрос.Текст =

View File

@@ -1,4 +1,6 @@
Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт #Область ПрограммныйИнтерфейс
Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт
РасширениеФайла = ""; РасширениеФайла = "";
МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь); МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь);
@@ -8,3 +10,5 @@
Возврат РасширениеФайла; Возврат РасширениеФайла;
КонецФункции КонецФункции
#КонецОбласти

View File

@@ -1,12 +1,15 @@
Функция ТелеграмТокен() Экспорт #Область ПрограммныйИнтерфейс
Функция ТелеграмТокен() Экспорт
Возврат Константы.ТелеграмТокен.Получить(); Возврат Константы.ТелеграмТокен.Получить();
КонецФункции КонецФункции
Функция ЛогироватьHttpЗапросы() Экспорт Функция ЛогироватьHttpЗапросы() Экспорт
Возврат Константы.ЛогироватьHttpЗапросы.Получить(); Возврат Константы.ЛогироватьHttpЗапросы.Получить();
КонецФункции КонецФункции
#КонецОбласти

View File

@@ -1,4 +1,6 @@
Функция КлавиатураОтвета(Клавиатура, Компактная = Ложь, Одноразовая = Ложь) Экспорт #Область ПрограммныйИнтерфейс
Функция КлавиатураОтвета(Клавиатура, Компактная = Ложь, Одноразовая = Ложь) Экспорт
СоответствиеКлавиатуры = Новый Соответствие(); СоответствиеКлавиатуры = Новый Соответствие();
@@ -26,7 +28,6 @@
КонецФункции КонецФункции
Функция КнопкаКлавиатурыВстроенной(Надпись, Url = Неопределено, CallbackData = Неопределено) Экспорт Функция КнопкаКлавиатурыВстроенной(Надпись, Url = Неопределено, CallbackData = Неопределено) Экспорт
СоответствиеКнопка = Новый Соответствие; СоответствиеКнопка = Новый Соответствие;
@@ -69,5 +70,33 @@
КонецФункции КонецФункции
Функция МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Подписка = Неопределено) Экспорт
СписокКонфигураций = РаботаСОбновлениямиВызовСервера.СписокКонфигураций(ИдЧата);
Если СписокКонфигураций.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
МассивРядов = Новый Массив;
Для каждого ПунктМенюПодписки Из СписокКонфигураций Цикл
Если Подписка = Неопределено
ИЛИ (Подписка И ПунктМенюПодписки.Подписка)
ИЛИ (НЕ Подписка И НЕ ПунктМенюПодписки.Подписка) Тогда
МассивКнопок = Новый Массив;
МассивКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(
ПунктМенюПодписки.Наименование
,
,
СтрШаблон("%1 %2", Команда, ПунктМенюПодписки.Имя)
));
МассивРядов.Добавить(МассивКнопок);
КонецЕсли;
КонецЦикла;
Возврат МассивРядов;
КонецЕсли;
КонецФункции
#КонецОбласти

View File

@@ -1,4 +1,6 @@
// Получить обновления и обработать их по расписанию #Область ПрограммныйИнтерфейс
// Получить обновления и обработать их по расписанию
Процедура ПроверкаОбновленийПоРасписанию() Экспорт Процедура ПроверкаОбновленийПоРасписанию() Экспорт
// Проверка установлен ли вебхук // Проверка установлен ли вебхук
@@ -17,3 +19,5 @@
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
#КонецОбласти

View File

@@ -257,6 +257,7 @@
<CommonModule>ТелеграмРаботаСКлавиатурой</CommonModule> <CommonModule>ТелеграмРаботаСКлавиатурой</CommonModule>
<CommonModule>ТелеграмРегламент</CommonModule> <CommonModule>ТелеграмРегламент</CommonModule>
<CommonModule>БотОбщегоНазначения</CommonModule> <CommonModule>БотОбщегоНазначения</CommonModule>
<CommonModule>ОбщегоНазначенияКлиентСервер</CommonModule>
<HTTPService>HTTPСервис_Telegram</HTTPService> <HTTPService>HTTPСервис_Telegram</HTTPService>
<ScheduledJob>ПроверкаОбновленийТелеграм</ScheduledJob> <ScheduledJob>ПроверкаОбновленийТелеграм</ScheduledJob>
<Constant>ТелеграмТокен</Constant> <Constant>ТелеграмТокен</Constant>

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<VERSION>8</VERSION> <VERSION>9</VERSION>