Вот, в качестве примера, макрос по добавлению переходов в документ из заданного способа обработки.
Макрос немного сырой, в нем нет копирования подписей и обязательных действий.
Необходимо подправить идентификаторы вида документа и способа обработки.
Запускается из режима "Документооборот - Архив"
Sub FormMacro_Add_WorkFlows(TCSActiveModule) ' Добавление переходов
Const TYPE_ID = 26 ' ИД вида документа
Const SEL_WF = 16 ' ИД способа обработки из которого копируем переходы
Dim WorkFlowTypes ' Справочник "Способы обработки"
Dim SelWFlow ' Переходы требуемого способа обработки
Dim CurDocWFlows ' Переходы текущего документа
' Подключаемся к справочнику способов обработки
Set WorkFlowTypes = TCSApp.WorkFlowTypes
If WorkFlowTypes Is Nothing Then
Exit Sub
End If
' Находим требуемый способ обработки
If WorkFlowTypes.Locate("ID", SEL_WF, 0) Then
Set SelWFlow = WorkFlowTypes.Properties("ITEMS").AsIDispatch
If SelWFlow Is Nothing Then
Exit Sub
End If
SelWFlow.UserModuleName = SelWFlow.UniqueUserModuleName
Else
Exit Sub
End If
' Проходим по всем документам текужщего модуля архива
TCSActiveModule.First
Do While Not TCSActiveModule.Eof
If TCSActiveModule.Properties("TYPE_ID").AsSafeInteger = TYPE_ID Then
Set SingleDoc = TCSApp.SingleDoc(CSDN_Consts.dspSearchDocByDocID, TCSActiveModule.Properties("ID").AsSafeInteger)
If Not SingleDoc Is Nothing Then
Call CSU_Common.CreateModule(SingleDoc)
Call GDO_Archive.DeleteAllWFlows(SingleDoc)
Call CSU_Common.DeleteModule(SingleDoc)
End If
Set SingleDoc = Nothing
' Если у документа способ обрапботки такой, как нам надо...
If TCSActiveModule.Properties("ROUTING_ID").AsInteger = SEL_WF
' Получаем переходы текущего документа
Set CurDocWFlows = TCSActiveModule.Properties("WORKFLOW_ITEMS").AsIDispatch
If Not CurDocWFlows Is Nothing Then
SelWFlow.First
Do While Not SelWFlow.Eof
' Добавляем требуемые переходы
Call CurDocWFlows.CreateNew
CurDocWFlows.Properties("NAME").Value = SelWFlow.Properties("NAME").Value
CurDocWFlows.Properties("VERSTATE_BEFORE").Value = SelWFlow.Properties("VER_STATE_BEFORE").Value
CurDocWFlows.Properties("VERSTATE_AFTER").Value = SelWFlow.Properties("VER_STATE_AFTER").Value
CurDocWFlows.Properties("OFFICER_ID").Value = SelWFlow.Properties("OFFICER_ID").Value
On Error Resume Next
Call CurDocWFlows.SaveChanges
Call CurDocWFlows.CancelChanges
SelWFlow.Next
Loop
End if
End If
End If
TCSActiveModule.Next
Loop
Call TCSApp.DeleteModuleByUserModuleName(SelWFlow.UserModuleName)
Set WorkFlowTypes = Nothing
End Sub