Если совсем по-быстрому отвечать, то могу предложить копипаст кода для 1С (по-русски, правда... но такова 1С... как раз отчет по КТ делался - должно быть понятно для программера)
Сначала заполнялась таблица ТС (всех ТС по всем группам):
PHP код:
|
Процедура ЗаполнитьТаблицуТС() AG=СоздатьОбъект("AutoGRAPH.AutoGRAPHAutomation"); // Создаем COM-объект ddd=AG.WaitForInitializing(); // Ждем окончания инициализации объекта НепройденныеКТ = 1; // Устанавливаем чекбокс "Показывать отчет с непройденными КТ" в положение "Да" ВыбНачПериода = ТекущаяДата(); // Устанавливаем начальную дату отчета на начало текущего дня ВыбКонПериода = ТекущаяДата(); // Устанавливаем конечную дату отчета на конец текущего дня // Инициализируем таблицу групп ТС ТабГрупп.УдалитьСтроки(); // Инициализируем таблицу ТС ТабТС.УдалитьСтроки(); ЧислоГрупп=AG.GroupsNum; //Определяем число групп ТС Если ЧислоГрупп>0 Тогда Для х = 1 По ЧислоГрупп Цикл AG.GroupIndex = х; //Передаем индекс (номер) группы в АГ ГрЧислоТС = AG.GroupCarsNum; //Определяем число ТС в группе Если ГрЧислоТС > 0 Тогда //Если кол-во ТС в текущей группе > 0 тогда выводим ТС группы, пустую группу - не выводим ТабГрупп.НоваяСтрока(); ТабГрупп.Группа = AG.GroupName; //Название группы ТС Для хх = 1 По ГрЧислоТС Цикл AG.CarIndex = хх; //Передаем индекс (номер) ТС внутри группы в АГ ТабТС.НоваяСтрока(); ТабТС.Метка = ""; //Метка выбора - снята ТабТС.Группа = AG.GroupName; //Название группы ТС ТабТС.СерНом = AG.CarDevice; //Сер. номер контроллера ТабТС.Марка = AG.CarModel; //Марка ТС ТабТС.НомерТС = AG.CarNumber; //Гос. номер ТС ТабТС.ГрФайл = AG.GroupFileName; //Файл группы ТС (нужен для расчета) КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры // ЗаполнитьТаблицуТС()
|
Потом, для каждого нужного ТС из этой таблицы, исполняется такой код:
PHP код:
|
//ВыбНачПериода и ВыбКонПериода - DataPicker-ы на форме ТСПериодНач=Формат(ДатаЧисло(ВыбНачПериода),"Ч(0)2.0")+"."+Формат(ДатаМесяц(ВыбНачПериода),"Ч(0)2.0")+"."+Строка(ДатаГод(ВыбНачПериода))+" 00:00:00"; ТСПериодКон=Формат(ДатаЧисло(ВыбКонПериода),"Ч(0)2.0")+"."+Формат(ДатаМесяц(ВыбКонПериода),"Ч(0)2.0")+"."+Строка(ДатаГод(ВыбКонПериода))+" 23:59:59"; AG.SetGroupIndexByFileName(ТабТС.ГрФайл); AG.SetCarIndexByDevice(ТабТС.СерНом); AG.WaitForComputing(ТабТС.ГрФайл,ТабТС.СерНом,ТСПериодНач,ТСПериодКон,"GSM",1); ОбработаноТС=ОбработаноТС+1; Форма.Проц.Заголовок(Строка(Окр(100/ВсегоТС*ОбработаноТС,0))+" %"); КолРейсов = AG.TripsNum; ФайлКТ = AG.CarCheckPointsFile; Таб.ВывестиСекцию("ШапкаТС"); Если КолРейсов=0 Тогда //Предупреждение("Рейсов не обнаружено"); Иначе Для х = 1 По КолРейсов Цикл AG.TripIndex = х; AG.TripEntriesListTypeName="checkpoints"; AG.TripEntriesListKindName="points"; КолКТ = AG.TripEntriesNum; Если КолКТ > 0 Тогда Для хх = 1 По КолКТ Цикл AG.EntryIndex = хх; ТабКТ.НоваяСтрока(); ТабКТ.КТИД = AG.EntryID; ТабКТ.КТИмя = AG.EntryStartName; ТабКТ.КТАдрес = AG.EntryStartAddress; ТабКТ.КТИДП = AG.EntryStartIDP; ТабКТ.КТПриб = AG.EntryStartRealTime; ТабКТ.КТОтпр = AG.EntryEndRealTime; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли;
|