ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (http://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (http://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   API. ошибка при вызове WaitForComputing (http://forum.tk-chel.ru/showthread.php?t=681)

OBerezhinskiy 19.05.2011 04:53

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

Причем приложение открывается, а потом из кома вылетает эта ошибка.
Я не вижу разницы настроек у меня на винде и у клиента.

Подскажите, что нужно настроить в операционной системе, чтобы заработало?

storm 19.05.2011 05:42

пример кода сбросьте, возможно что-то не так вызываете

Добавлено через 46 секунд
и версии программы АвтоГРАФ на обоих компьютерах одинаковые?

paul310 19.05.2011 05:50

Отвечу как клиент
 
Версии - одинаковые (3.4.0)

plex 19.05.2011 05:54

paul310,справка о программе , там написан билд, могут отличаться, но врят-ли это причина ошибка

storm 19.05.2011 07:03

тогда пример кода напишите

особенно интересует строка 482 в файле, но лучше весь проект, можете в личку сбросить или на почту storm@tk-chel.ru
Цитата:

Сообщение от OBerezhinskiy (Сообщение 9092)
C:\Work\PE_KSGOK\DEV\ProductionReporting.AutoGRAPH Loader.Business\Loader.cs:line 482


OBerezhinskiy 19.05.2011 08:09

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

storm 19.05.2011 08:57

по коду вроде все нормально, единственный совет пока могу дать, сохраните или выведите значения всех параметров перед выводом этой функции и потом смотрите, что может быть не так
но скорее всего ошибка все таки связана с версиями программы АвтоГРАФ и ее оле-интерфейсом
попробуйте очистить реестр у клиента от ОЛЕ программы АвтоГРАФ с помощью reg-файла
http://www.tk-chel.ru/download/AG_OLE_UNREG.REG
а потом снова ее зарегистрировать - запустив с правами администратора

paul310 19.05.2011 09:41

Засада оказалась в настройках отображения времени на локальной машине. Поменял на 24-часовой формат - всхорошело.

Алекс 24.05.2018 13:47

Была такая проблема, ушла когда и на сервере 1с для пользователя под которым он запускается установили 24 часовой формат и перегрузили сервер.:menty:


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

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