私の知る限り、タイムシートを代用できる魔法の方法はありません。他のユーザーに代わって QueueUpdateTimesheet のメソッドを使用できるようにするには、DataSet を少し「ハック」する必要があります。
ユーザーを偽装するには、前提条件を実行する必要があることに注意してください ( http://msdn.microsoft.com/en-us/library/aa974413.aspx )。すべてが完了したら、続行できます;)
まず、timesheetRow を取得します。
Proxy.TimesheetListDataSet.TimesheetsRow tsFound = null;
foreach (Proxy.TimesheetListDataSet.TimesheetsRow ts in ds.Timesheets)
{
if (ts.WPRD_START_DATE <= day.Date && ts.WPRD_FINISH_DATE > day.Date)
{
tsFound = ts;
break;
}
}
次に、タイムシート データセットを取得します。
Proxy.TimesheetDataSet tds = timesheetSvc.ReadTimesheet(tsFound.TS_UID);
次に、これを実行して代理を有効にします。
if (Boolean.Parse(tds.Headers.Rows[0]["TS_IS_CONTROLLED_BY_OWNER"].ToString()) == true)
{
tds.Headers.Rows[0]["TS_IS_CONTROLLED_BY_OWNER"] = false;
tds.Headers.Rows[0]["TS_CREATOR_RES_UID"] = "[SUPER USER GUID]"
}
最後に、更新されたデータセットをプッシュします。
timesheetSvc.QueueUpdateTimesheet(Guid.NewGuid(), tsFound.TS_UID, updatedTimesheetDataSet);
それが役に立てば幸い!
さようなら