Мониторинг агентов на компьютере с неправильной датой
Данная доработка актуальна в случае когда на компьютере установлена дата отличающаяся от текущей (календарной) даты. Для того? что бы в этом случае корректно заработал отчет "Где сейчас агенты?" необходима доработка модуля интеграции Моби-С. Ниже будет пример доработки модуля интеграции Моби-С для конфигураций на базе Управление торговлей 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;
В цикле
Для Каждого Стр Из ТаблАгентов Цикл
Заменяем условие Если
Если ТекВремя > Стр.ДатаВремя Тогда
на
Если ТекВремяПО < Стр.ДатаВремя ИЛИ Стр.ДатаВремя < ТекВремяС Тогда
*) под датой координат понимается дата и время фиксации координаты на КПК агента и последующей корректировкой с учетом часового пояса из настроек агента.