API. ошибка при вызове WaitForComputing
Добрый день,
У меня проблема c интеграцией с Системой "Автограф". Я написал приложение (C#, . net), которое через предоставляемое API(AutoGRAPH Library) забиарает сведения о маршрутах и прочих показателях из системы. Все чудесно работает у меня на стендах, но у клиента на win XP возникает ошибка при вызове метода WaitForComputing. System.Runtime.InteropServices.COMException (0x80020009): Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION)) at AutoGRAPH.AutoGRAPHAutomationClass.WaitForComputin g(String GroupFileName, Int32 CarDevice, String FirstTime, String LastTime, String DataSource, Int32 TakeTripsSetup) at ProductionReporting.AutoGRAPHLoader.Loader.Fill(Da teTime date, Int32 sn, Boolean isProblem) in C:\Work\PE_KSGOK\DEV\ProductionReporting.AutoGRAPH Loader.Business\Loader.cs:line 482 Причем приложение открывается, а потом из кома вылетает эта ошибка. Я не вижу разницы настроек у меня на винде и у клиента. Подскажите, что нужно настроить в операционной системе, чтобы заработало? |
пример кода сбросьте, возможно что-то не так вызываете
Добавлено через 46 секунд и версии программы АвтоГРАФ на обоих компьютерах одинаковые? |
Отвечу как клиент
Версии - одинаковые (3.4.0)
|
paul310,справка о программе , там написан билд, могут отличаться, но врят-ли это причина ошибка
|
тогда пример кода напишите
особенно интересует строка 482 в файле, но лучше весь проект, можете в личку сбросить или на почту storm@tk-chel.ru Цитата:
|
public static void Fill(DateTime date, int sn, bool isProblem)
{ XPCollection<ReportHead> c = new XPCollection<ReportHead>(Context.MainUnitOfWork); XPCollection<QuestionableVehicles> q = new XPCollection<QuestionableVehicles>(Context.MainUni tOfWork); rh = c.Where(t => !t.IsD && t.ReportDate.Date == date.Date && t.ShiftNo == sn).First(); DateTime s; DateTime e; if (rh.ShiftNo == 1) { s = new DateTime(rh.ReportDate.Year, rh.ReportDate.Month, rh.ReportDate.Day, 8, 0, 0); e = new DateTime(rh.ReportDate.Year, rh.ReportDate.Month, rh.ReportDate.Day, 20, 0, 0); } else { s = new DateTime(rh.ReportDate.Year, rh.ReportDate.Month, rh.ReportDate.Day, 20, 0, 0); e = new DateTime(rh.ReportDate.AddDays(1).Year, rh.ReportDate.AddDays(1).Month, rh.ReportDate.AddDays(1).Day, 8, 0, 0); } //s = new DateTime(10, 4, 26, 0, 0, 0); //e = new DateTime(10, 4, 27, 8, 0, 0); ; ag = new AutoGRAPHAutomationClass(); ag.EnterPassword(ProductionReporting.AutoGRAPHLoad er.Business.Properties.Settings.Default.AutoGraph) ; List<string> log = new List<string>(); for (int i = 1; i <= ag.GroupsNum; i++) { ag.GroupIndex = i; for (int i0 = 1; i0 <= ag.GroupCarsNum; i0++) { ag.CarIndex = i0; var vl = rh.VehicleLine.Where(t => t.VehicleId.AutoGRAPHId == ag.CarDevice.ToString()).FirstOrDefault(); if (vl == null || ( isProblem && q.FirstOrDefault(t=>vl.VehicleId == t.VehicleId && rh == t.ReportHeadId)!=null)) continue; //валится тут!!!!!!!! ag.WaitForComputing( ag.GroupFileName, ag.CarDevice, s.ToString("dd.MM.yy HH:mm:ss"), e.ToString("dd.MM.yy HH:mm:ss"), "GSM", 1); for (int i1 = 1; i1 <= ag.TripsNum; i1++) { ag.TripIndex = i1; ag.TripEntriesListTypeName = "parks"; // Тип списка записей //ag.TripEntriesListKindName = "points"; // Вид списка записей try { for (int i2 = 1; i2 <= ag.TripEntriesNum; i2++) { ag.EntryIndex = i2; AGPoints p = new AGPoints(); p.Vehicle = vl; // if (p.Vehicle == null) continue; p.EntryEndRealTime = DateTime.Parse(ag.EntryEndRealTime); p.EntryDistance = Convert.ToDecimal(ag.EntryDistance); p.EntryMotor1Fuel = Convert.ToDecimal(ag.EntryMotor1Fuel); p.EntryMotor1Hours = Convert.ToDecimal(ag.EntryMotor1Hours); p.EntryMotor1ParkHours = Convert.ToDecimal(ag.EntryMotor1ParkHours); p.EntryTank1EndLevel = Convert.ToDecimal(ag.EntryTank1EndLevel); p.EntryTank1StartLevel = Convert.ToDecimal(ag.EntryTank1StartLevel); p.Longitude = ag.EntryStartLongitude; p.Latitude = ag.EntryStartLatitude; p.IDP = ag.EntryStartIDP; p.IDName = ag.EntryStartName; p.CarDevice = ag.CarDevice; if (p.IDP != null) { XPCollection<CheckPoints> cc = new XPCollection<CheckPoints>(Context.MainUnitOfWork, new BinaryOperator("AutoGRAPHId", p.IDP, BinaryOperatorType.Equal)); p.JobName = cc.Count > 0 && cc.First().JobId != null ? cc.First().JobId.Name : null; p.JobId = cc.Count > 0 && cc.First().JobId != null ? (int?)cc.First().JobId.IdN : null; } aglist.Add(p); } } catch (Exception exp) { //EventLog.WriteEntry("PR.AutoGRAPH", exp.ToString()); if (DevExpress.XtraEditors.XtraMessageBox.Show( string.Format(@"Смена №{0} - {1}; Техника {2}; {3}", sn, date.ToShortDateString(), ag.CarDevice, exp.ToString()), "Ошибка", System.Windows.Forms.MessageBoxButtons.OKCancel) != System.Windows.Forms.DialogResult.OK) return; } } } } DevExpress.XtraEditors.XtraMessageBox.Show( string.Format(@"Загрузка данных смены №{0} - {1} завершена. Загружено {2} записей.", sn, date.ToShortDateString(), aglist.Count), "Собщение"); } public static Jobs OtherJob { get { XPCollection<Jobs> job = new XPCollection<Jobs>(Context.MainUnitOfWork, new BinaryOperator("Name", "Прочее")); return job.FirstOrDefault(); } } Добавлено через 42 минуты Входные параметры в функцию WaitForComputing: "Горнообогатительный.ini", 101448, "15.10.10 08:00:00", "15.10.10 20:00:00", "GSM", 1 |
по коду вроде все нормально, единственный совет пока могу дать, сохраните или выведите значения всех параметров перед выводом этой функции и потом смотрите, что может быть не так
но скорее всего ошибка все таки связана с версиями программы АвтоГРАФ и ее оле-интерфейсом попробуйте очистить реестр у клиента от ОЛЕ программы АвтоГРАФ с помощью reg-файла http://www.tk-chel.ru/download/AG_OLE_UNREG.REG а потом снова ее зарегистрировать - запустив с правами администратора |
Засада оказалась в настройках отображения времени на локальной машине. Поменял на 24-часовой формат - всхорошело.
|
Была такая проблема, ушла когда и на сервере 1с для пользователя под которым он запускается установили 24 часовой формат и перегрузили сервер.:menty:
|
Текущее время: 01:51. Часовой пояс GMT. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot