Как сделать запуск фонового задания через регламентные операции?

1. Asuneft 2 29.04.21 04:28 Сейчас в теме
В стандартной УНФ есть встроенный чат бот, который запускается из формы настроек "Настройки программы" - "Настройки чат бота".

При нажатии на кнопку активировать срабатывает Процедура "Активировать в коробке".

Как сделать так, чтобы бот запускался при запуске сервера 1С. База серверная?

&НаКлиенте
Процедура АктивироватьВКоробке(Команда)
	
	Если Модифицированность Тогда
		СохранитьНастройкиЧатБота();
		Модифицированность = Ложь;
	КонецЕсли;
	
	ЧатБотЗапущен = НЕ ЧатБотЗапущен;
	ОбновитьВидимость();
	Если ЧатБотЗапущен Тогда
		ПодключитьОбработчикОжидания("ПроверитьСообщения", 0.1, Истина);	
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьСообщения()
	
	Если НЕ ЧатБотЗапущен Тогда
		Возврат;
	КонецЕсли;
	
	Если НЕ ФайловаяБаза Тогда
		Возврат;
	КонецЕсли;
	
	ДлительнаяОперация = ЗапуститьЧатБотВФоне();
	Если ДлительнаяОперация = Неопределено Тогда
		Возврат;
	КонецЕсли;
	ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
	ПараметрыОжидания.Вставить("ВыводитьОкноОжидания", Ложь);
	
	ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьДействиеЗавершение", ЭтотОбъект);
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если ЧатБотЗапущен Тогда
		ПодключитьОбработчикОжидания("ПроверитьСообщения", 1, Истина);
	КонецЕсли;
	
КонецПроцедуры 

&НаСервере
Функция ЗапуститьЧатБотВФоне()
	
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("ИмяМетода", "ЧатботСервер.ПолучитьСообщенияЧатботаТест");
	ПараметрыОтбора.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
	МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыОтбора);
	Если МассивФоновыхЗаданий.Количество() > 0 Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
	ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
	ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
	ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Ложь);
	ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Истина);
	ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
	
	Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "ЧатботСервер.ПолучитьСообщенияЧатботаТест");
	
КонецФункции
Показать
По теме из базы знаний
Найденные решения
6. user1278383 4 29.04.21 10:22 Сейчас в теме
(4)
Процедура ПолучениеСообщенийЧатБота() Экспорт
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Истина);
ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Ложь);
ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
ЧатботСервер.ПолучитьСообщенияЧатботаТест();
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1278383 4 29.04.21 09:08 Сейчас в теме
А в чем сложность? В "при запуске сервера 1С."?
3. user1278383 4 29.04.21 09:14 Сейчас в теме
(2) засунуть ЧатботСервер.ПолучитьСообщенияЧатботаТест с параметрами в процедуру внешней обработки и запускать по расписанию, добавив при этом проверку на то, что бот уже запущен (наверняка такая есть в самой ЧатботСервер.ПолучитьСообщенияЧатботаТест). Хотя, судя по названию процедуры, он тупо получает новые сообщения, а не запускает бот.
4. Asuneft 2 29.04.21 09:27 Сейчас в теме
Было сделано в новый общий модуль, и сдано регзадание с запуском по расписанию 1 раз в день и через 10 секунд в дне.

В типовой УНФ при обработкеожидания Запрос нового сообщения всегда после завершения обработки предыдущего, а если через рег задания получается еще не обработал сообщение , он уже ждет следующее.

&НаСервере
Функция Расш6_ЗапуститьЧатБотВФоне() Экспорт
	
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("ИмяМетода", "ЧатботСервер.ПолучитьСообщенияЧатботаТест");
	ПараметрыОтбора.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
	МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыОтбора);
	Если МассивФоновыхЗаданий.Количество() > 0 Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	ПараметрыВыполнения = Новый Структура;
	ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
	ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
	ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
	ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Ложь);
	ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Истина);
	ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
	
	Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "ЧатботСервер.ПолучитьСообщенияЧатботаТест");

КонецФункции
Показать
5. user1278383 4 29.04.21 10:18 Сейчас в теме
(4) рег задание, которое запускает длительную операцию?! Интересно
6. user1278383 4 29.04.21 10:22 Сейчас в теме
(4)
Процедура ПолучениеСообщенийЧатБота() Экспорт
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Истина);
ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Ложь);
ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
ЧатботСервер.ПолучитьСообщенияЧатботаТест();
КонецПроцедуры
Показать
7. Asuneft 2 29.04.21 12:10 Сейчас в теме
(6) Это вместо поделки в 4?
8. user1278383 4 29.04.21 12:18 Сейчас в теме
(7) угу. Еще нужно посмотреть за что отвечают ПараметрыВыполнения в ПолучитьСообщенияЧатботаТест(). Выше я поменял ЗапуститьНеВФоне и ЗапуститьВФоне. Ну и конечно разместить ПолучениеСообщенийЧатБота() в общем модуле и создать рег. задание с вызовом этой процедуры.
10. Asuneft 2 29.04.21 12:37 Сейчас в теме
(8) а задание раз в день сделать расписание?
11. user1278383 4 29.04.21 13:56 Сейчас в теме
(10) смотря что делает ПолучитьСообщенияЧатботаТест(). Если запускает какой-то бот, который сам проверяет сообщения, то можно раз в день, если получает сообщения, то наверно раз в 10 секунд...
12. Asuneft 2 29.04.21 14:10 Сейчас в теме
(11) я когда делал, проблемы были, что задание еще не отработало, а уже следующее
13. user1278383 4 29.04.21 14:20 Сейчас в теме
(12) подозреваю из-за использования длительной операции
9. user1278383 4 29.04.21 12:21 Сейчас в теме
(7) можно сделать все во внешней обработке, но это чуть сложнее. Зато не нужны никакие расширения
https://help1c.by/zapusk-vneshney-obrabotki-po-raspisaniyu-v-ut-11/
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот