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

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

Леонид Борисович 22.07.2015 15:55

Как посчитать расход топлива по разрезе моточасов? Как сделать такой запрос из 1с 8.2?
 
добрый день!

Как посчитать расход топлива по разрезе моточасов? Как сделать такой запрос из 1с 8.2? Обычно делаю так...
AG=Новый COMОбъект("AutoGRAPH.AutoGRAPHAutomation"); // Создаем COM-объект
ddd=AG.WaitForInitializing(); // Ждем окончания инициализации объекта
НепройденныеКТ = 1; // Устанавливаем чекбокс "Показывать отчет с непройденными КТ" в положение "Да"
ТабГрупп.очистить();
ТабКТ.очистить();
Кран_ = Кран ;

ЗаполнитьТаблицуТС(Кран_);



AG.SetGroupIndexByFileName(стр.ГрФайл);
AG.SetCarIndexByDevice(стр.СерНом);
AG.WaitForComputing(стр.ГрФайл,стр.С рНом,ТСПериодНач,ТСПериод он,"GSM",1);
КолРейсов = AG.TripsNum;
ФайлКТ = AG.CarCheckPointsFile;

если КолРейсов > 0 тогда
AG.TripIndex = 1;
конецесли ;

СерийныйНомерКрана = стр.Серном ;
ИмяФайлаБазыDBF= строка("C:\kran.dbf");
Попытка
AG.ExportDataToFile(ИмяФайлаБазыDBF,Р еквизитЗапроса,1);
Исключение
AG.PropertyName = "Last_Error";
Сообщить(AG.PropertyValue);
Сообщить("Не удалось экспортировать данные: "+ОписаниеОшибки());
КонецПопытки;
выгружаем все в файлик dbf и крутим его...

Менял параметр РеквизитЗапроса... но не нашел...
Или другой путь нужен?

SK 22.07.2015 17:11

Леонид Борисович, что означает "в разрезе моточасов" ? Термин "в разрезе" означает, что "величина в разрезе которой что-то выводится" может принимать альтернативные значения: в разрезе контрагентов, в разрезе статуса движения (движение / остановка), в разрезе рейсов, в разрезе геозон и т.п. Моточасы (время работы двигателя) - это же накопительная величина...
Поясните: что именно Вы хотите получить ?
Сколько в среднем тратилось топлива на 1 моточас (1 час работы двигателя) на каком-то периоде ? Или что-то другое ?
И зачем Вам непройденные КТ в плане расхода топлива и моточасов ?

Леонид Борисович 22.07.2015 18:06

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

Добавлено через 5 минут
В автографе есть 2 раздела, ком1 это работа двигателя и ком2 это крановая установка. надо как то найти через оле запрос отдельно по каждой. интервалы я нахожу, это несложно, а разделить не пойму как...

Добавлено через 2 минуты
разделить, значит вычислить моточасы и расход отдельно и по ком1 и по ком2. не могу понять пока как!

Добавлено через 3 минуты


Добавлено через 1 минуту
https://yadi.sk/i/F04JUq8Qi33gb

Добавлено через 54 секунды
время 1 на рисунке нахожу, не могу понять как найти 2 и 3.

Добавлено через 6 минут
по поводу ... "И зачем Вам непройденные КТ в плане расхода топлива и моточасов ?" я как то давно подключился 1с кой через оле к автографу, так и использую эту методику в дальнейшем... Если честно до конца все тонкости взаимодействия 1с и автографом не знаю.

NickolaDed 22.07.2015 18:20

Для того, чтобы разделить, вам надо зафиксировать работу крана

SK 22.07.2015 18:23

Леонид Борисович, Вы меня совсем запутали... Level - это уровень...
У Вас когда работает крановая установка, двигатель выключен или как ? Нет перекрытий работы датчиков 1 и 2 ???

Если просто делать то, что Вы просите, то Вам нужен отчет по датчику 2.

Что-то типа:
Код:

                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;
                                               
                                        КонецЦикла;
                                КонецЕсли;
                        КонецЦикла;
                КонецЕсли;

Т.е. Вы сначала внутри рейса выбираете список событий типа "Включение датчика 2"

Затем перебирая индекс списка по каждому событию (включению датчика 2) получаете за период события нужные параметры - МЧ, расходы и т.п.:

Леонид Борисович 23.07.2015 05:48

добрый день! ну вот теперь понятно какие "педали нажимать"... спасибо. будем "крутить"...:zaboy:

Добавлено через 23 минуты
:temazakryta: спасибо.


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

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