1
0
mirror of https://github.com/BlizD/Tasks.git synced 2025-03-21 21:17:24 +02:00

Убрал использование запроса в цикле. Работа с телеграмм.

This commit is contained in:
Anton Ivanov 2020-07-11 12:55:55 +03:00
parent ef930f3fc4
commit 02d78bcf6f

View File

@ -87,6 +87,8 @@
МассивResult = ОтветСоответсвие["result"]; МассивResult = ОтветСоответсвие["result"];
ИДПоследнегоПринятогоСообщения = Неопределено; ИДПоследнегоПринятогоСообщения = Неопределено;
ТЗПользователиТелеграмм = ПолучитьТЗПользователиТелеграмм();
Для Каждого СоответсвиеMessange Из МассивResult Цикл Для Каждого СоответсвиеMessange Из МассивResult Цикл
ИДПоследнегоПринятогоСообщения = Формат(СоответсвиеMessange["update_id"] + 1, "ЧГ="); ИДПоследнегоПринятогоСообщения = Формат(СоответсвиеMessange["update_id"] + 1, "ЧГ=");
@ -102,33 +104,70 @@
Если СоответсвиеMessange_message.Получить("text") <> Неопределено Тогда Если СоответсвиеMessange_message.Получить("text") <> Неопределено Тогда
MessageText = СоответсвиеMessange_message.Получить("text"); MessageText = СоответсвиеMessange_message.Получить("text");
Если Найти(MessageText, "/addwork") <> 0 Тогда // + Иванов А.Б. 2020-07-11
Запрос = Новый Запрос; // Если Найти(MessageText, "/addwork") <> 0 Тогда
Запрос.Текст = // Запрос = Новый Запрос;
"ВЫБРАТЬ ПЕРВЫЕ 1 // Запрос.Текст =
| Пользователи.Ссылка КАК Пользователь // "ВЫБРАТЬ ПЕРВЫЕ 1
|ИЗ // | Пользователи.Ссылка КАК Пользователь
| Справочник.Пользователи КАК Пользователи // |ИЗ
|ГДЕ // | Справочник.Пользователи КАК Пользователи
| Пользователи.узИДПользователяТелеграмм = &узИДПользователяТелеграмм"; // |ГДЕ
// | Пользователи.узИДПользователяТелеграмм = &узИДПользователяТелеграмм";
Запрос.УстановитьПараметр("узИДПользователяТелеграмм", Число(пСhatИД)); //
// Запрос.УстановитьПараметр("узИДПользователяТелеграмм", Число(пСhatИД));
РезультатЗапроса = Запрос.Выполнить(); //
Если РезультатЗапроса.Пустой() Тогда // РезультатЗапроса = Запрос.Выполнить();
Продолжить; // Если РезультатЗапроса.Пустой() Тогда
КонецЕсли; // Продолжить;
// КонецЕсли;
Выборка = РезультатЗапроса.Выбрать(); //
Пока Выборка.Следующий() Цикл // Выборка = РезультатЗапроса.Выбрать();
ТекущиеДелаОбъект = Справочники.узТекущиеДела.СоздатьЭлемент(); // Пока Выборка.Следующий() Цикл
ТекущиеДелаОбъект.Автор = Выборка.Пользователь; // ТекущиеДелаОбъект = Справочники.узТекущиеДела.СоздатьЭлемент();
ТекущиеДелаОбъект.ТекстСодержания = СтрЗаменить(MessageText, "/addwork", ""); // ТекущиеДелаОбъект.Автор = Выборка.Пользователь;
ТекущиеДелаОбъект.Записать(); // ТекущиеДелаОбъект.ТекстСодержания = СтрЗаменить(MessageText, "/addwork", "");
КонецЦикла; // ТекущиеДелаОбъект.Записать();
// КонецЦикла;
//
// КонецЕсли;
Если Найти(MessageText, "/addwork") = 0 Тогда
Продолжить;
КонецЕсли; КонецЕсли;
пузИДПользователяТелеграмм = Число(пСhatИД);
ПараметрыОтбора=Новый Структура();
ПараметрыОтбора.Вставить("узИДПользователяТелеграмм",пузИДПользователяТелеграмм);
НайденныеСтроки = ТЗПользователиТелеграмм.НайтиСтроки(ПараметрыОтбора);
ВсегоНайденныеСтроки = НайденныеСтроки.Количество();
ТекстОшибки = "";
Если ВсегоНайденныеСтроки = 1 тогда
СтрокаТЗПользователиТелеграмм = НайденныеСтроки[0];
ИначеЕсли ВсегоНайденныеСтроки > 1 Тогда
ТекстОшибки = "Ошибка! Найдено более 1 строки";
Иначе
ТекстОшибки = "Ошибка! Не найдена строка";
Конецесли;
Если ЗначениеЗаполнено(ТекстОшибки) Тогда
ТекстОшибки = ТекстОшибки
+" в ""ТЗПользователиТелеграмм"" для ";
Для каждого ЭлементОтбора из ПараметрыОтбора цикл
ТекстОшибки = ТекстОшибки
+" "+ ЭлементОтбора.Ключ + " = ["+ЭлементОтбора.Значение+"]";
Конеццикла;
ВызватьИсключение ТекстОшибки;
Конецесли;
ТекущиеДелаОбъект = Справочники.узТекущиеДела.СоздатьЭлемент();
ТекущиеДелаОбъект.Автор = СтрокаТЗПользователиТелеграмм.Пользователь;
ТекущиеДелаОбъект.ТекстСодержания = СтрЗаменить(MessageText, "/addwork", "");
ТекущиеДелаОбъект.Записать();
// - Иванов А.Б. 2020-07-11
ИначеЕсли СоответсвиеMessange_message.Получить("photo") <> Неопределено Тогда ИначеЕсли СоответсвиеMessange_message.Получить("photo") <> Неопределено Тогда
КонецЕсли; КонецЕсли;
@ -143,6 +182,26 @@
КонецПроцедуры КонецПроцедуры
Функция ПолучитьТЗПользователиТелеграмм()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(Пользователи.Ссылка) КАК Пользователь,
| Пользователи.узИДПользователяТелеграмм КАК узИДПользователяТелеграмм
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.узИДПользователяТелеграмм <> 0
|
|СГРУППИРОВАТЬ ПО
| Пользователи.узИДПользователяТелеграмм";
ТЗПользователиТелеграмм = Запрос.Выполнить().Выгрузить();
Возврат ТЗПользователиТелеграмм;
КонецФункции
Процедура ОтправитьСообщениеTelegram(ТекстСообщения, МассивПользователейДляОтправки, УведомлятьОРезультате = Ложь) Экспорт Процедура ОтправитьСообщениеTelegram(ТекстСообщения, МассивПользователейДляОтправки, УведомлятьОРезультате = Ложь) Экспорт
Если МассивПользователейДляОтправки.Количество() = 0 Тогда Если МассивПользователейДляОтправки.Количество() = 0 Тогда