Поскольку для задачи установлено значение «Фиксированная работа», при добавлении назначения ресурса общая работа для задачи будет оставаться неизменной.Проблема возникает, когда вы хотите добавить ресурс и увеличить общий объем работы для задачи.
Что происходит в этом случае, так это то, что общая работа составила 56 часов.Вы добавляете назначение, и общая работа все еще 56h.Соотношение работы такое же: 40%, 100% и 100%, что составляет 9,33, 23,33 и 23,33 часа.Затем работа для последнего назначения увеличивается до 80 часов, а общая работа для задачи теперь составляет 112,67 часа.
Причина, по которой вы работаете так, как задумано в пользовательском интерфейсе, заключается в том, что вы не просто добавляете новыйназначение и настройка его работы, но с точки зрения MS Project вы также (пере) настраиваете работу на существующих ресурсах.
Решение для выполнения этого в VBA состоит в том, чтобы эмулировать именно то, что происходит вПользовательский интерфейс - который включает в себя сброс работы для существующих ресурсов:
Sub AddAssignment()
Dim tskTask As Task
Dim rsResource As Resource
Dim asAssignment As Assignment
Dim colAssn As Collection
Dim iIdx As Integer
Set tskTask = ActiveProject.Tasks(7)
Set rsResource = ActiveProject.Resources("Baz")
Set colAssn = New Collection
For Each asAssignment In tskTask.Assignments
colAssn.Add asAssignment.Work
Next asAssignment
Set asAssignment = tskTask.Assignments.Add(tskTask.ID, rsResource.ID)
colAssn.Add 10 * 8 * 60 ' work is stored as minutes
For iIdx = 1 To colAssn.Count
tskTask.Assignments(iIdx).Work = colAssn(iIdx)
Next iIdx
End Sub