06.02.2013, 08:57
|
| »»» |
#1
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
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
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
Леонид Борисович, а почему через файл ? Эти данные легко и гораздо быстрее можно напрямки через массив получить.
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
06.02.2013, 09:31
|
| »»» |
#3
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
Через массив ни разу не делали. Только через файл.
Подскажите пример пожалуйста.
Добавлено через 2 минуты
Как я понял, должно быть тоже самое, только заместо параметра
AG.ExportDataToFile(
ставим то что указали с нужными параметрами?
|
|
|
|
06.02.2013, 09:44
|
| »»» |
#4
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
Отчет по заправкам и сливам:
Нажмите для просмотра содержимого...
Код:
|
//************************************************************************************************************************************************************************
// Процедура ОтчетПоЗИС() - по заправкам и сливам
//************************************************************************************************************************************************************************
Процедура ОтчетПоЗИС()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ОтчетЗИС");
Таб.Опции(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);
Таб.Показать("ОтчетЗИС","");
КонецПроцедуры //ОтчетПоЗИС() - по заправкам и сливам |
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
06.02.2013, 14:15
|
| »»» |
#5
|
Начинающий
Екатеринбург, ООО ЕСК
Регистрация: 18.09.2012
Сообщений: 38
|
Отличный ответ, большое спасибо.
|
|
|
|
16.04.2013, 16:31
|
| »»» |
#6
|
Начинающий
Новороссийск, Краснодарский край, Южная Транспортная Компания
Регистрация: 16.04.2013
Сообщений: 46
|
А как можно подтянуть котрольные точки, через которые прошло ТС?
|
|
|
|
16.04.2013, 20:05
|
| »»» |
#7
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
Сообщение от Zircool
|
А как можно подтянуть котрольные точки, через которые прошло ТС?
|
К чему подтянуть ?
Тремя постами выше - вложен пример отчетов для 1С - там есть и отчет по КТ, причем и просто по пройденным и по пройденным и непройденным...
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
17.04.2013, 12:32
|
| »»» |
#8
|
Начинающий
Новороссийск, Краснодарский край, Южная Транспортная Компания
Регистрация: 16.04.2013
Сообщений: 46
|
Спасибо! Посмотрел разобрался.
SK подскажите еще а есть ли возможность создавать рейсы в автографе через OLE если у нас в 1с создаются путевки, можно прописать на обработку при записи связь с автографом и создание рейса.
|
|
|
|
18.04.2013, 06:15
|
| »»» |
#9
|
Администратор
Регистрация: 27.05.2010
Сообщений: 29,956
|
Что значит "создавать рейсы" ? Рейсы не создаются, деление на рейсы делается согласно установленным признакам начала нового рейса.
Если надо что-то нестандартное или динамическое, Вы можете самостоятельно делить на рейсы как хотите, а потом в цикле подставлять полученные временные интервалы при формировании отчетов и получении данных в 1С.
У Вас по каким признакам начинается и заканчивается рейс ?
Имхо, сначала нужно поставить задачу - как правило все можно решить и без лишних кастомных телодвижений.
ООО «ТехноКом», г. Челябинск
Самцов Константин Юрьевич - зам. директора по коммерческой деятельности
|
|
|
|
25.06.2013, 06:27
|
| »»» |
#10
|
Пользователь
Челябинск
Регистрация: 05.02.2012
Сообщений: 171
|
[QUOTE=Леонид Борисович;49291]Добрый день!
Задача такая... Необходимо получить данные запросом из 1с через оле в автограф по заправкам за период. Начало заправки, окончание, количество литров заправки.
Подскажите, а у Вас на машинах Дуты стоят? если да, то какая их точность?
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 14:45. Часовой пояс GMT.
|
|