Ответ
 
Опции темы
Старый 06.02.2013, 08:57    | »»» |  #1
Леонид Борисович
Начинающий
 
Аватар для Леонид Борисович
 
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
Леонид Борисович is on a distinguished road
По умолчанию 1c (оле) <=> Автограф, запрос по заправкам топлива

Добрый день!

Задача такая... Необходимо получить данные запросом из 1с через оле в автограф по заправкам за период. Начало заправки, окончание, количество литров заправки.
Вроде все просто и понятно, но... Смотрим в описание полей dbf...
Для запроса через

AG.ExportDataToFile(ИмяФайлаБазыDBF,Р еквизитЗапроса,1);


Тип: 0 – координаты;
1 – аналоговые данные;
2 – счётчики 1-2;
3 – счётчики 3-4;
4 – характеристика движения;
5 – событие;
6 – 1-wire ID водителя;
7 – 1-wire температура 1-4;
8 – 1-wire температура 5-8;
9 – RS-485: датчики LLS 1-4;
10 – RS-485: датчики LLS 5-8;
11 – CAN1: скор., упр,. расход;
12 – CAN2: уровни топлива;
13 – CAN3: обороты, моточасы;
14 – CAN4: температура;
15 – CAN5: пробеги общ. и сут.;
16 – CAN6: нагрузка на колёса;
17 – CAN7: записи пользователя;
18 – счётчики 5-6;
19 – счётчики 7-8;
20 – RS-485: объём заправки;
21 – RS-485: расход топлива;
22 – RS-485: прод.-сть. заправки;
23 – RS-485: расширитель входов;
24 – RS-485: пассажиропоток;
25 – RS-485: вес (уровень);
26 – CAN: коды ошибок;
27 – CAN: калькулированный расход

Тут вроде ясно, строчка 22 – RS-485: прод.-сть. заправки, она нам и нужна.

т.е. в нашем случае AG.ExportDataToFile(ИмяФайлаБазыDBF,22 ,1); - это для продолжительности заправки,
для объема заправки ставим соответственно:
AG.ExportDataToFile(ИмяФайлаБазыDBF,20 ,1);

Далее делаем запрос в 1с ке

ДанныеОбработеКрановойУст ановки.Очистить();
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= строка("D:\kran.dbf");
Попытка
AG.ExportDataToFile(ИмяФайлаБазыDBF,22 ,1);
Исключение
AG.PropertyName = "Last_Error";
Сообщить(AG.PropertyValue);
Сообщить("Не удалось экспортировать данные: "+ОписаниеОшибки());
КонецПопытки;


Далее должен сформироваться файл dbf в него заходим и перебираем, берем что нам надо.
Но то что надо нам, нет.
Похоже что ExportDataToFile не воспринимает параметр 22.

Подскажите пожалуйста в чем засада?!
Может где то какой то параметр надо поставить?!

Добавлено через 51 минуту
система почему то обрезает сообщение. Чтобы посмотреть все, нажмите на расширенный режим...
Леонид Борисович вне форума   Ответить с цитированием
Старый 06.02.2013, 09:15    | »»» |  #2
SK
Администратор
 
Аватар для SK
 
Регистрация: 27.05.2010
Сообщений: 29,956
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™
По умолчанию

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


ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
SK вне форума   Ответить с цитированием
Старый 06.02.2013, 09:31    | »»» |  #3
Леонид Борисович
Начинающий
 
Аватар для Леонид Борисович
 
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
Леонид Борисович is on a distinguished road
По умолчанию

Через массив ни разу не делали. Только через файл.
Подскажите пример пожалуйста.

Добавлено через 2 минуты
Как я понял, должно быть тоже самое, только заместо параметра

AG.ExportDataToFile(
ставим то что указали с нужными параметрами?
Леонид Борисович вне форума   Ответить с цитированием
Старый 06.02.2013, 09:44    | »»» |  #4
SK
Администратор
 
Аватар для SK
 
Регистрация: 27.05.2010
Сообщений: 29,956
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™
По умолчанию

Отчет по заправкам и сливам:

Нажмите для просмотра содержимого...
Код:
//************************************************************************************************************************************************************************
// Процедура ОтчетПоЗИС() - по заправкам и сливам
//************************************************************************************************************************************************************************
Процедура ОтчетПоЗИС()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ОтчетЗИС");
Таб.Опции(0,0,0,0);
Таб.ВывестиСекцию("Шапка");
ТабТС.ВыбратьСтроки();
ПроцВсе=0;
ВсегоТС=0;
ОбработаноТС=0;
ТабТС.ВыбратьСтроки();
Пока ТабТС.ПолучитьСтроку() = 1 Цикл
 Если ТабТС.Метка = "+" Тогда ВсегоТС = ВсегоТС + 1; КонецЕсли;
КонецЦикла;
ТабТС.ВыбратьСтроки();
Пока ТабТС.ПолучитьСтроку() > 0 Цикл
 Если ТабТС.Метка = "" Тогда Продолжить; КонецЕсли;
 ТСПериодНач=Формат(ДатаЧисло(ВыбНачПериода),"Ч(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;
 Таб.ВывестиСекцию("ШапкаТС");
    Если КолРейсов=0 Тогда 
  //Предупреждение("Рейсов не обнаружено"); 
 Иначе
  Для х = 1 По КолРейсов Цикл
   AG.TripIndex = х;
    НомРейса = х;
    НачРейса = AG.TripStartRealTime;
    КонРейса = AG.TripEndRealTime;
   AG.TripEntriesListTypeName="tank";
   AG.TripEntriesListKindName="num1"; // ДЛЯ БАКА 1 !!!
   КолЗИС = AG.TripEntriesNum;
   Если КолЗИС > 0 Тогда
    Таб.ВывестиСекцию("РЕЙС"); //После проверки КолЗИС, т.к. заголовки рейсов без заправок или сливов не выводим
    Для хх = 1 По КолЗИС Цикл
     AG.EntryIndex = хх;
     Уровень1Нач = Окр (AG.EntryTank1StartLevel,2);
     Уровень1Кон = Окр (AG.EntryTank1EndLevel,2);
     ЗИС_Адрес  = AG.EntryStartAddress;
     ЗИС_Нач   = AG.EntryStartRealTime;
     ЗИС_Кон   = AG.EntryEndRealTime;
     ЗИС_Длит = AG.EntryRealCont;
     Если Уровень1Нач > Уровень1Кон Тогда
      ЗИС = "СЛИВ";
      ЗИС_Кол = Уровень1Нач - Уровень1Кон;
     Иначе
      ЗИС = "ЗАПРАВКА";
      ЗИС_Кол = Уровень1Кон - Уровень1Нач;
     КонецЕсли;
     Если ЗИС = "СЛИВ" Тогда
      Таб.ВывестиСекцию("СЛИВ");
     Иначе
      Таб.ВывестиСекцию("ЗАПРАВКА");
     КонецЕсли;
    КонецЦикла;
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;
 Таб.ВывестиСекцию("Подвал");
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать("ОтчетЗИС","");
КонецПроцедуры //ОтчетПоЗИС() - по заправкам и сливам
Вложения:
Тип файла: zip AG_TEST_OLE_1C_77_2012-11-22.ZIP (11.4 Кб, 100 просмотров)

ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
SK вне форума   Ответить с цитированием
Старый 06.02.2013, 14:15    | »»» |  #5
Леонид Борисович
Начинающий
 
Аватар для Леонид Борисович
 
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
Леонид Борисович is on a distinguished road
По умолчанию

Отличный ответ, большое спасибо.
Леонид Борисович вне форума   Ответить с цитированием
Старый 16.04.2013, 16:31    | »»» |  #6
Zircool
Начинающий
 
Аватар для Zircool
 
Новороссийск, Краснодарский край, Южная Транспортная Компания
Регистрация: 16.04.2013
Сообщений: 46
Zircool is on a distinguished road
Отправить сообщение для Zircool с помощью ICQ Отправить сообщение для Zircool с помощью Skype™
По умолчанию

А как можно подтянуть котрольные точки, через которые прошло ТС?
Zircool вне форума   Ответить с цитированием
Старый 16.04.2013, 20:05    | »»» |  #7
SK
Администратор
 
Аватар для SK
 
Регистрация: 27.05.2010
Сообщений: 29,956
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™
По умолчанию

Сообщение от Zircool Посмотреть сообщение
А как можно подтянуть котрольные точки, через которые прошло ТС?
К чему подтянуть ?
Тремя постами выше - вложен пример отчетов для 1С - там есть и отчет по КТ, причем и просто по пройденным и по пройденным и непройденным...

ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
SK вне форума   Ответить с цитированием
Старый 17.04.2013, 12:32    | »»» |  #8
Zircool
Начинающий
 
Аватар для Zircool
 
Новороссийск, Краснодарский край, Южная Транспортная Компания
Регистрация: 16.04.2013
Сообщений: 46
Zircool is on a distinguished road
Отправить сообщение для Zircool с помощью ICQ Отправить сообщение для Zircool с помощью Skype™
По умолчанию

Спасибо! Посмотрел разобрался.

SK подскажите еще а есть ли возможность создавать рейсы в автографе через OLE если у нас в 1с создаются путевки, можно прописать на обработку при записи связь с автографом и создание рейса.
Zircool вне форума   Ответить с цитированием
Старый 18.04.2013, 06:15    | »»» |  #9
SK
Администратор
 
Аватар для SK
 
Регистрация: 27.05.2010
Сообщений: 29,956
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С.

У Вас по каким признакам начинается и заканчивается рейс ?
Имхо, сначала нужно поставить задачу - как правило все можно решить и без лишних кастомных телодвижений.

ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
SK вне форума   Ответить с цитированием
Старый 25.06.2013, 06:27    | »»» |  #10
olegg72
Пользователь
 
Аватар для olegg72
 
Челябинск
Регистрация: 05.02.2012
Сообщений: 171
olegg72 is on a distinguished road
По умолчанию

[QUOTE=Леонид Борисович;49291]Добрый день!

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

Подскажите, а у Вас на машинах Дуты стоят? если да, то какая их точность?
olegg72 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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


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