Как сделать запуск фонового задания через регламентные операции?
В стандартной УНФ есть встроенный чат бот, который запускается из формы настроек "Настройки программы" - "Настройки чат бота".
При нажатии на кнопку активировать срабатывает Процедура "Активировать в коробке".
Как сделать так, чтобы бот запускался при запуске сервера 1С. База серверная?
При нажатии на кнопку активировать срабатывает Процедура "Активировать в коробке".
Как сделать так, чтобы бот запускался при запуске сервера 1С. База серверная?
&НаКлиенте
Процедура АктивироватьВКоробке(Команда)
Если Модифицированность Тогда
СохранитьНастройкиЧатБота();
Модифицированность = Ложь;
КонецЕсли;
ЧатБотЗапущен = НЕ ЧатБотЗапущен;
ОбновитьВидимость();
Если ЧатБотЗапущен Тогда
ПодключитьОбработчикОжидания("ПроверитьСообщения", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСообщения()
Если НЕ ЧатБотЗапущен Тогда
Возврат;
КонецЕсли;
Если НЕ ФайловаяБаза Тогда
Возврат;
КонецЕсли;
ДлительнаяОперация = ЗапуститьЧатБотВФоне();
Если ДлительнаяОперация = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.Вставить("ВыводитьОкноОжидания", Ложь);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьДействиеЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЧатБотЗапущен Тогда
ПодключитьОбработчикОжидания("ПроверитьСообщения", 1, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗапуститьЧатБотВФоне()
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ИмяМетода", "ЧатботСервер.ПолучитьСообщенияЧатботаТест");
ПараметрыОтбора.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыОтбора);
Если МассивФоновыхЗаданий.Количество() > 0 Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Ложь);
ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Истина);
ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "ЧатботСервер.ПолучитьСообщенияЧатботаТест");
КонецФункции
ПоказатьПо теме из базы знаний
Найденные решения
(4)
Процедура ПолучениеСообщенийЧатБота() Экспорт
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Истина);
ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Ложь);
ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
ЧатботСервер.ПолучитьСообщенияЧатботаТест();
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) засунуть ЧатботСервер.ПолучитьСообщенияЧатботаТест с параметрами в процедуру внешней обработки и запускать по расписанию, добавив при этом проверку на то, что бот уже запущен (наверняка такая есть в самой ЧатботСервер.ПолучитьСообщенияЧатботаТест). Хотя, судя по названию процедуры, он тупо получает новые сообщения, а не запускает бот.
Было сделано в новый общий модуль, и сдано регзадание с запуском по расписанию 1 раз в день и через 10 секунд в дне.
В типовой УНФ при обработкеожидания Запрос нового сообщения всегда после завершения обработки предыдущего, а если через рег задания получается еще не обработал сообщение , он уже ждет следующее.
В типовой УНФ при обработкеожидания Запрос нового сообщения всегда после завершения обработки предыдущего, а если через рег задания получается еще не обработал сообщение , он уже ждет следующее.
&НаСервере
Функция Расш6_ЗапуститьЧатБотВФоне() Экспорт
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ИмяМетода", "ЧатботСервер.ПолучитьСообщенияЧатботаТест");
ПараметрыОтбора.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыОтбора);
Если МассивФоновыхЗаданий.Количество() > 0 Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Ложь);
ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Истина);
ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "ЧатботСервер.ПолучитьСообщенияЧатботаТест");
КонецФункции
Показать
(4)
Процедура ПолучениеСообщенийЧатБота() Экспорт
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("ОжидатьЗавершение", 0);
ПараметрыВыполнения.Вставить("НаименованиеФоновогоЗадания", "ПолучитьСообщенияЧатботаТест");
ПараметрыВыполнения.Вставить("КлючФоновогоЗадания", "");
ПараметрыВыполнения.Вставить("ЗапуститьНеВФоне", Истина);
ПараметрыВыполнения.Вставить("ЗапуститьВФоне", Ложь);
ПараметрыВыполнения.Вставить("БезРасширений", Ложь);
ЧатботСервер.ПолучитьСообщенияЧатботаТест();
КонецПроцедуры
Показать
(7) угу. Еще нужно посмотреть за что отвечают ПараметрыВыполнения в ПолучитьСообщенияЧатботаТест(). Выше я поменял ЗапуститьНеВФоне и ЗапуститьВФоне. Ну и конечно разместить ПолучениеСообщенийЧатБота() в общем модуле и создать рег. задание с вызовом этой процедуры.
(7) можно сделать все во внешней обработке, но это чуть сложнее. Зато не нужны никакие расширения
https://help1c.by/zapusk-vneshney-obrabotki-po-raspisaniyu-v-ut-11/
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот