Как обновить TimeSheet в MS Project Server - PullRequest
0 голосов
/ 21 марта 2009

Вот ситуация, я хочу иметь пользователя, который может вводить время от имени другого (программно).

Когда я делаю QueueUpdateTimeSheet веб-службой сервера проекта ms, она не работает, если я пытаюсь ввести время для другого.

Я пытаюсь олицетворять, но мне нужно знать имя пользователя и пароль человека, которого я хочу выдать. Я мог бы получить эту информацию, но я не хочу ею управлять.

Я начинаю смотреть на суррогатное расписание. Я не знаю, ответит ли это на мою проблему.

Кто-нибудь может мне помочь ...

1 Ответ

2 голосов
/ 27 марта 2009

Насколько я знаю, не существует магического метода, который позволял бы вам заменять расписание. Если вы хотите иметь возможность использовать метод QueueUpdateTimesheet от имени других пользователей, вам придется немного взломать свой DataSet.

Помните, что вам необходимо выполнить предварительное условие для олицетворения пользователя (http://msdn.microsoft.com/en-us/library/aa974413.aspx). Как только все будет готово, вы можете продолжить;)

Прежде всего, получите ваше расписаниеСтрока:

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

Надеюсь, это поможет!

Прощай

...