2009-03-21 6 views
0

상황은 다음과 같습니다. 다른 사용자 대신 시간을 입력 할 수있는 사용자를 원합니다 (프로그래밍 방식).ms 프로젝트 서버에서 updateTimeSheet하는 방법

내가 ms 프로젝트 서버의 웹 서비스를 QueueUpdateTimeSheet 할 때, 다른 시간을 입력하려고하면 작동하지 않습니다.

나는 가장을 시도하지만 나는 가장하고 싶은 사람의 사용자 이름과 암호를 알아야합니다. 나는 그 정보를 가질 수는 있지만 그것을 관리하고 싶지는 않습니다.

대리인 출퇴근 시간 기록 용지를보기 시작합니다. 이것이 내 문제에 대한 반응이 될지 모르겠습니다.

은 아무도

답변

2

는 내가 아는 한 작업 표를 대리 할 수 ​​있습니다 마술 방법이 없어 ... 나에게 도움이 될 수 있습니다. 다른 사용자 대신 QueueUpdateTimesheet의 메소드를 사용할 수있게하려면 DataSet을 "해킹"해야합니다.

사용자를 가장하려면 선행 조건을 수행해야합니다 (http://msdn.microsoft.com/en-us/library/aa974413.aspx).

Proxy.TimesheetDataSet tds = timesheetSvc.ReadTimesheet(tsFound.TS_UID); 

그런 다음이를 대리를 활성화하기 위해 수행 :

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

그런 다음 작업 표 데이터 세트를 검색 :;의 모든 당신이 진행할 수 있습니다 완료되면 모든

으로), 당신의 timesheetRow을 retreive

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

희망 하시겠습니까?

작별 인사

관련 문제