Показать сообщение отдельно
Старый 22.11.2012, 17:22    | »»» |  #4
SK
Администратор
 
Аватар для SK
 
Регистрация: 27.05.2010
Сообщений: 29,977
SK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud ofSK has much to be proud of
Отправить сообщение для SK с помощью Skype™
По умолчанию

Если совсем по-быстрому отвечать, то могу предложить копипаст кода для 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;
 
     
КонецЦикла;
    
КонецЕсли;
   
КонецЦикла;
  
КонецЕсли

ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
SK вне форума   Ответить с цитированием