ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (http://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: 1С + АвтоГРАФ (http://forum.tk-chel.ru/forumdisplay.php?f=112)
-   -   Проблема: Как запросом в автограф из 1с 8.1 через оле получить по конкретной машине пробег ? (http://forum.tk-chel.ru/showthread.php?t=4950)

Леонид Борисович 25.08.2015 09:15

Как запросом в автограф из 1с 8.1 через оле получить по конкретной машине пробег ?
 
Добрый день!

Наверно этот вопрос к 'SK'.

Как запросом в автограф из 1с8.1 через оле получить пробег по машине?

Вычисляем промежутки времени, когда у машины была скорость > 0.

Какой параметр ставить в процедуре :

AG.WaitForComputing(ТабТС.ГрФайл,Таб ТС.СерНом,ТСПериодНач,ТСПе иодКон,"GSM",1);

КолРейсов = AG.TripsNum;

Если КолРейсов=0 Тогда
//Предупреждение("Рейсов не обнаружено");
Иначе
Для х = 1 По КолРейсов Цикл
AG.TripIndex = х;
AG.TripEntriesListTypeName="sensor_on";
AG.TripEntriesListKindName="num2";
КолСобытий = AG.TripEntriesNum;
Если КолСобытий > 0 Тогда
Для хх = 1 По КолСобытий Цикл
AG.EntryIndex = хх;

МЧДвиг1 = AG.EntryMotor1Hours;
РасходДвиг1 = AG.EntryMotor1Fuel;

КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Эта процедура взята из предъидущего вопроса по расходу топлива в разрезе моточасов.
Смотрел никак не могу понять, что "ловить" тут...
какой параметр подставлять?

AG.TripEntriesListTypeName="sensor_on";
AG.TripEntriesListKindName="num1";

Нашел в свойствах рейса параметр TripDistance , но это общий пробег.


Я так понял это процедура универсальная, только разные переменные подставлять и ловить через события - конкретные значения переменных.

SK 25.08.2015 12:59

Не-не-не... это к нашему штатному 1С-нику - Шпарову Александру.
В принципе - сам код ничем не отличается от 7.7 - можно подсмотреть в примерах для 7.7

SK 25.08.2015 13:00

Цитата:

Сообщение от Леонид Борисович (Сообщение 113291)
Вычисляем промежутки времени, когда у машины была скорость > 0.

Их можно получить из списка остановок.

Леонид Борисович 26.08.2015 06:46

добрый день!
интервалы когда машина едет я вычислил.
Вы написали, что в примерах 1с 77 есть кусок кода, где это можно посмотреть?

SK 26.08.2015 08:40

ERT для 7.7

Леонид Борисович 26.08.2015 09:32

Да, все разобрались... Если кому надо, вот обработчик, который вычисляет пробег за период, когда скорость >0.

Код:

для каждого стр из  ТабТС цикл
                Если стр.Метка = ложь Тогда Продолжить; КонецЕсли;
                ТСПериодНач=(НачПериода111) ;
                ТСПериодКон=(КонПериода111) ;
                AG.SetGroupIndexByFileName(стр.ГрФайл);
                AG.SetCarIndexByDevice(стр.СерНом);
                AG.WaitForComputing(стр.ГрФайл,стр.СерНом,ТСПериодНач,ТСПериодКон,"GSM",1);
                КолРейсов = AG.TripsNum;
                Если КолРейсов=0 Тогда
                        //Предупреждение("Рейсов не обнаружено");
                Иначе
                        Для х = 1 По КолРейсов Цикл
                                AG.TripIndex = х;
                                AG.TripEntriesListTypeName="sensor_on";
                                AG.TripEntriesListKindName="num1";
                                КолСобытий = AG.TripEntriesNum;
                                Если КолСобытий > 0 Тогда
                                        Для хх = 1 По КолСобытий Цикл
                                                AG.EntryIndex = хх;
                                                Пробегг = Пробегг + AG.TripDistance/1000;
                                                Расходд = Расходд + AG.TripMotor1Fuel ;
                                        КонецЦикла;
                                КонецЕсли;
                        КонецЦикла;
                КонецЕсли;
        КонецЦикла;

Спасибо!

:temazakryta:

SK 26.08.2015 09:43

Леонид Борисович, у меня сложилось впечатление, что Вы пошли затратным по времени путем: у вас сначала вычисляются периоды движения, а потом по каждому рассчитывается рейс.
Есть подозрение, что всё это можно сделать на порядок быстрее.
Для этого надо посмотреть Ваш код, где Вы получаете периоды движения.

Леонид Борисович 26.08.2015 10:56

Дело в том, что сначала получаем все данные точные с точностью до минуты, потом в зависимости от интервала берем выборки в 5, 10, 15 минут уже из общей таблицы. Так минутный интервал 1с в принципе не строит в диаграммах. Данных слишком много и вылетает, пишет какие то ошибки связанные с памятью. Графики от 5 минут и более диаграмма стоится. Поэтому приходится придумывать всякие выкрутасы.

Добавлено через 15 минут
Интервалы для анализа берем от 1 месяца и более. Поэтому чуть подрезаем точность, зато 1с строит диаграммы и не ругается на память, ее хватает.

Добавлено через 4 минуты
заправки машин по продолжительности от 10 и более минут, скачки уровня топлива ловим всегда. Да еще на графике диаграмм строим расчетные данные, которые задает для крана завод изготовитель. Расход во время движения, расход на холостом ходу, расход по моточасам, когда работает крановая установка. Чертим фактический расход и расчетный. вот такие задачки решаем...

SK 26.08.2015 13:38

Леонид Борисович, я просто хотел сказать, что на интервальных данных, как правило, тоже пробеги есть и дополнительный расчет не требуется - их можно сразу взять.

Леонид Борисович 27.08.2015 13:24

Спасибо. :temazakryta:


Текущее время: 18:18. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot