Тема: Переходы способа обработки

Доброго дня.

Нет возможности скопом выделить переходы способа обработки.
Скопировать и добавить в документ.
Ну хотябы выделить....
А хотелось бы.

Для чего нужно?
После изменения способа обработки (добавлены переходы), необходимо провести изменения во всех, мной выбранных, документах

Re: Переходы способа обработки

вы их через АПИ сами копируете?

Re: Переходы способа обработки

Олег Зырянов пишет:

вы их через АПИ сами копируете?

да, хотел.

хорошо было бы как копирование переходов и т.д.

Re: Переходы способа обработки

Вот, в качестве примера, макрос по добавлению переходов в документ из заданного способа обработки.
Макрос немного сырой, в нем нет копирования подписей и обязательных действий.

Необходимо подправить идентификаторы вида документа и способа обработки.

Запускается из режима "Документооборот - Архив"

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