Подниму тему.
Не получается снимать координаты в фоне на мобильном приложении.
При старте системы запускаю обработчик ожидания, который запускает уже фоновое задание.
Но! Фоновое задание работает только на сервере, а ОбновитьМестоположение и ПолучитьПоследнееМестоположение работают только на клиенте.
Вынес определение координат на клиент.
Код такой:
//модуль управляемого приложения
Процедура ПриНачалеРаботыСистемы()
ЗапуститьМониторинг();
КонецПроцедуры
Процедура ЗапуститьМониторинг() Экспорт
ИнтервалОпределенияКоординатВСекундах = ОбменДанными.ПолучитьЧастотуСнятияКоординат();
Если НЕ ЗначениеЗаполнено(ИнтервалОпределенияКоординатВСекундах) Тогда
ИнтервалОпределенияКоординатВСекундах = 10;
КонецЕсли;
ПодключитьОбработчикОжидания("ОпределитьТекущиеКоординаты",ИнтервалОпределенияКоординатВСекундах,Ложь);
КонецПроцедуры
Процедура ОпределитьТекущиеКоординаты() Экспорт
#Если МобильноеПриложениеКлиент Тогда
ОбменДанными.ВыполнитьФоновоеСнятиеКоординат();
#КонецЕсли
КонецПроцедуры
// общий модуль ОбменДанными (сервер, вызов сервера)
&НаСервере
Процедура ВыполнитьФоновоеСнятиеКоординат() Экспорт
Задание = ФоновыеЗадания.Выполнить("ОбменДанными.ОпределитьТекущиеКоординатыСервер");
Задание.ОжидатьЗавершения();
КонецПроцедуры
&НаСервере
Процедура ОпределитьТекущиеКоординатыСервер() Экспорт
ТекущийПровайдер = "gps";
Попытка
ДМ = ОбменДанными.сгПолучитьПоследнееМестоположение(ТекущийПровайдер);
Исключение
ДМ = Неопределено;
КонецПопытки;
Если ДМ = Неопределено Тогда
ОбменДанными.сгОбновитьМестоположение(ТекущийПровайдер);
ДМ = ОбменДанными.сгПолучитьПоследнееМестоположение(ТекущийПровайдер);
КонецЕсли;
Если ДМ = Неопределено Тогда
ТекущийПровайдер = "network";
Попытка
ДМ = ОбменДанными.сгПолучитьПоследнееМестоположение(ТекущийПровайдер);
Исключение
ДМ = Неопределено;
КонецПопытки;
КонецЕсли;
Если ДМ = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущаяДата() - МестноеВремя(ДМ.Дата) > 5 Тогда
ОбменДанными.сгОбновитьМестоположение(ТекущийПровайдер);
ДМ = ОбменДанными.сгПолучитьПоследнееМестоположение(ТекущийПровайдер);
КонецЕсли;
Если ДМ = Неопределено Тогда
Возврат;
Иначе
ОбщийМодульСервер.ЗаписатьДанныеТрека(ДМ,ТекущийПровайдер);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция сгПолучитьПоследнееМестоположение(Провайдер) Экспорт
Возврат СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(Провайдер)
КонецФункции
&НаКлиенте
Процедура сгОбновитьМестоположение(Провайдер) Экспорт
СредстваГеопозиционирования.ОбновитьМестоположение(Провайдер, 30);
КонецПроцедуры
Показать
Пишет что задание выполняется, захожу в регистр, данных нет.
Подскажите как правильно снимать координаты в фоне?