D365O 1611
X++:
driverLog = TMSDriverLog::find(appt.ApptId, true);
driverLog.ActualStartUTCDateTime = DateTimeUtil::utcNow();
driverLog.updateDates();
driverLog.update();
Зачем проверять что файнд что-то вернул ? Лучше покажем пользователю что запись никогда не была выбрана
И второй момент, на демо данных у LoadId и TMSApptId одна и та же номерная серия, поэтому вводя аппоинтмент АХ всегда находит сушествующий лоад который никакого отношения к делу не имееет, хотя хотелось бы аппоинтмент
X++:
case #CheckInOutId:
if (mode == WHSWorkExecuteMode::DriverCheckIn || mode == WHSWorkExecuteMode::DriverCheckOut)
{
if (WHSLoadTable::exist(_data))
{
fieldValues.insert(#CheckInOutId, _data);
fieldValues.insert(#LoadId, _data);
}
else if (WHSShipmentTable::exist(_data))
{
fieldValues.insert(#CheckInOutId, _data);
fieldValues.insert(#LoadId, WHSShipmentTable::find(_data).LoadId);
}
else if (TMSAppointment::exist(_data) && TMSAppointment::find(_data).ApptRefType == TMSApptRefType::Load)
{
fieldValues.insert(#CheckInOutId, _data);
fieldValues.insert(#LoadId, TMSAppointment::find(_data).ApptRefNum);
}
else
{
errorMessage = "@WAX1081";
hasError = true;
break;
}
if (WHSLoadTable::exist(fieldValues.lookup(#LoadId)))
{
hasError = this.validateLoadIdCheckOut(fieldValues.lookup(#LoadId));
}
else
{
errorMessage = "@WAX3626";
hasError = true;
}
}
break;