2009-03-21 4 views
0

ここで状況は、私は他の(programmaticaly)のために時間を入力することができますユーザーを持っているしたい。msプロジェクトサーバーでupdateTimeSheetを開く方法

私はmsプロジェクトサーバーのWebサービスをQueueUpdateTimeSheetしますが、他の時間を入力しようとすると機能しません。

私は偽装を試みますが、私は偽装したい人のユーザー名とパスワードを知る必要があります。私はそれらの情報を持つことができましたが、私はそれを管理したくありません。

私は代理タイムシートを見始めます。これが私の問題に対応するかどうかは分かりません。

誰もが...

答えて

2

を手伝ってくれる私の知る限りではあなたの代理タイムシートをすることができます魔法の方法はありません。他のユーザーの代わりに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); 

その後surrogatingを有効にするには、これを実行します。

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); 

希望すると助かります!

お別れ

関連する問題