Мобильное приложение. Фоновые задания нормально работают?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) flyer, как-то так:
В процедуре ВыполнитьОбменДанными, выполняется http запрос к основной базе и в цикле пишутся данные.
В этом же цикле заполняется СообщениеПользователю:
Процедура ОбновитьОстаткиИЦеныНаСервере(Товар, ИмяПроцедуры, УИДЗадания)
ТекстОшибки = "";
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(ТекстОшибки);
МассивПараметров.Добавить(Товар);
ФоновыеЗадания.Выполнить(ИмяПроцедуры, МассивПараметров, УИДЗадания, "Получение данных через фоновое задание");
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьОстаткиИЦены(Команда)
Сообщить("Обновление данных по группе " + Элементы.ТоварыГруппы.ТекущаяСтрока);
ИмяПроцедуры = "Общий.ВыполнитьОбменДанными";
УИДЗадания = Новый УникальныйИдентификатор;
ПодключитьОбработчикОжидания("ОбработчикОжидания_СообщенияПользователю", 1, Ложь);
ОбновитьОстаткиИЦеныНаСервере(Элементы.ТоварыГруппы.ТекущаяСтрока, ИмяПроцедуры, УИДЗадания);
КонецПроцедуры
&НаСервере
Функция ПолучитьСообщенияИзФоновогоЗадания()
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ИмяМетода", Параметры.ИмяПроцедуры);
СтруктураОтбора.Вставить("Ключ", Параметры.УИДЗадания);
МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(СтруктураОтбора);
Если МассивЗаданий.Количество() Тогда
ТекЗадание = МассивЗаданий[0];
Ответ = Новый Структура;
Если Не ТекЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
Ответ.Вставить("Результат", "финиш");
Иначе
Ответ.Вставить("Результат", "Сообщение");
КонецЕсли;
ТекСообщение = ТекЗадание.ПолучитьСообщенияПользователю(Истина);
Ответ.Вставить("Сообщение", ТекСообщение);
Возврат Ответ;
КонецЕсли;
КонецФункции
// Обработчик загрузки данных
&НаКлиенте
Процедура ОбработчикОжидания_СообщенияПользователю() Экспорт
Ответ = ПолучитьСообщенияИзФоновогоЗадания();
МассивСообщений = Ответ.Сообщение;
Если МассивСообщений.Количество() > 0 Тогда
ОчиститьСообщения();
ТекстСообщения = "Загрузка данных";
ТекстСообщения = ТекстСообщения + Символы.ПС + МассивСообщений[МассивСообщений.Количество() - 1].Текст;
Сообщить(ТекстСообщения);
КонецЕсли;
Если Ответ.Результат = "финиш" Тогда
ОчиститьСообщения();
Сообщить("Загрузка данных завершена");
ОтключитьОбработчикОжидания("ОбработчикОжидания_СообщенияПользователю");
КонецЕсли;
КонецПроцедуры // ОбработчикОжидания_СообщенияПользователю
ПоказатьВ процедуре ВыполнитьОбменДанными, выполняется http запрос к основной базе и в цикле пишутся данные.
В этом же цикле заполняется СообщениеПользователю:
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = "Загружено " + ПроцентЗагрузки + " процентов";
СообщениеПользователю.Сообщить();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот