Мониторинг агентов на компьютере с неправильной датой

Данная доработка актуальна в случае когда на компьютере установлена дата отличающаяся от текущей (календарной) даты. Для того? что бы в этом случае корректно заработал отчет "Где сейчас агенты?" необходима доработка модуля интеграции Моби-С. Ниже будет пример доработки модуля интеграции Моби-С для конфигураций на базе Управление торговлей 10.3. Стандартная схема работы отчета предполагает, что дата на компьютере совпадает с датой на мобильном устройстве. Координаты которые не соответствуют текущей дате будут проигнорированы.

1) ФормаОсновная.СохранитьТекущиеКоординатыАгентов Перед циклом

Для Н=НачСтр По КолСтр Цикл

добавляем границы, в которые должна попадать дата* снятия координат, чтобы координата считалась корректной

ТекВремяC = ТекущаяДата() - 8*60*60;
ТекВремяПО = ТекущаяДата() + 8*60*60;

При необходимости смещаем вперед/назад на необходимое количество дней.

После проверки координат

Если Долгота=0 или Широта=0 Тогда
	Продолжить;
КонецЕсли;

Необходимо добавить контроль по дате снятия координат

датаВремя = КонвертироватьUTCВремяВЛокальное(ДатаВремя,ЧасовойПояс);
Если ТекВремяПО <= датаВремя
		ИЛИ датаВремя <= ТекВремяC Тогда
	Продолжить;
КонецЕсли;

Ниже в сохранении координаты

//конвертировать время в локальное
стрТЗ.ДатаВремя =КонвертироватьUTCВремяВЛокальное(ДатаВремя,ЧасовойПояс);

Заменяем на

//конвертировать время в локальное
стрТЗ.ДатаВремя = датаВремя;

2) ФормаОсновная.СохранитьТекущиеКоординатыАгентовВБазу Перед циклом

для каждого стр из таблКоординаты Цикл

добавляем границы, в которые должна попадать дата* снятия координат, чтобы координата считалась корректной

ТекВремяC = ТекущаяДата() - 8*60*60;
ТекВремяПО = ТекущаяДата() + 8*60*60;

и удяляем

ТекВремя = ТекущаяДата() - 8*60*60;

В цикле

для каждого стр из таблКоординаты Цикл

Заменяем условие Если

Если ТекВремя <= Стр.ДатаВремя Тогда

на

Если ТекВремяC <= Стр.ДатаВремя 
	И Стр.ДатаВремя <= ТекВремяПО Тогда

Заменяем условие Если

Если стрТЗ[0].ДатаВремя < стр.ДатаВремя Тогда

на

Если стрТЗ[0].ДатаВремя < стр.ДатаВремя
	ИЛИ (ТекВремяПО <= стрТЗ[0].ДатаВремя 
		ИЛИ стрТЗ[0].ДатаВремя <= ТекВремяC) Тогда

3) Карта.ПолучитьТаблАгентов()

Перед циклом

Для Каждого Стр Из ТаблАгентов Цикл

добавляем границы, в которые должна попадать дата* снятия координат, чтобы координата считалась корректной

ТекВремяС = ТекущаяДата() - 8*60*60;
ТекВремяПО = ТекущаяДата() + 8*60*60;

и удяляем

ТекВремя = ТекущаяДата() - 9*60*60;

В цикле

Для Каждого Стр Из ТаблАгентов Цикл

Заменяем условие Если

Если ТекВремя > Стр.ДатаВремя Тогда

на

Если ТекВремяПО < Стр.ДатаВремя
	ИЛИ Стр.ДатаВремя < ТекВремяС  Тогда

*) под датой координат понимается дата и время фиксации координаты на КПК агента и последующей корректировкой с учетом часового пояса из настроек агента.