Äëÿ çàïóñêà äàííîãî ìàêðîñà íåîáõîäèìî âîéòè â ðåæèì

 

«Ïðîèçâîäñòâî» - «Ïðîèçâîäñòâåííûå ñïåöèôèêàöèè»,

 

è ñïîçèöèîíèðîâàòüñÿ íà íåîáõîäèìóþ ÏÑï.

 

Ìàêðîñ «Ñîçäàíèå ðàñ÷åòíîãî äîêóìåíòà äëÿ âûäåëåííûõ ïîçèöèé ñîñòàâà ÏÑï». Ïîçâîëÿåò ïåðåéòè â ñîñòàâ òåêóùåé ÏÑï, âûäåëèòü â íåì ïîçèöèè è ñôîðìèðîâàòü äëÿ íèõ ðàñ÷åòíûé äîêóìåíò.

 

 

Sub FormMacro_PspCalcDoc3(TCSActiveModule)                         
 
'Ñîçäàíèå ðàñ÷åòíîãî äîêóìåíòà èç òåêóùåé ÏÑï
'äëÿ âûäåëåííûõ ïîçèöèé
 
Dim CalcDocs  'îáúåêò "Ðàñ÷åòíûå äîêóìåíòû" 
Dim Order     'îáúåêò "Çàêàçû"  
Dim PspSpecs  'îáúåêò "Ïðîèçâîäñòâåííûå ñïåöèôèêàöèè"
Dim CalcDocPsp 'ññûëêà â ÏÑï íà ðàññ÷åòíûé äîêóìåíò 
Dim CalcDoc   'ýêçåìïëÿð ðàñ÷åòíîãî äîêóìåíòà
Dim CalcDocSpc 'åãî ñïåöèôèêàöèÿ
Dim DocNumber 'íîìåð ðàñ÷åòíîãî äîêóìåíòà
Dim DocName   'íàèìåíîâàíèå ðàñ÷åòíîãî äîêóìåíòà
Dim DocDate   'äàòà ðàñ÷åòíîãî äîêóìåíòà
Dim DocRem    'êîììåíòàðèé ê ðàñ÷åòíîìó äîêóìåíòó
Dim DocTypeID 'èäåíòèôèêàòîð ðàñ÷åòíîãî äîêóìåíòà
Dim CehaID    'èäåíòèôèêàòîð ïîäðàçäåëåíèÿ  
Dim CounteragentID'èäåíòèôèêàòîð êîíòðàãåíòà
Dim ShowDialog'ðåæèì îêíà äèàëîãà: 0-íå ïîêàçûâàòü, 1-ñî âñåìè çàêëàäêàìè, 2-òîëüêî "Îñíîâíûå"
Dim DialogCaption 'çàãîëîâîê îêíà äèàëîãà
Dim BM        'òåêóùàÿ ïîçèöèÿ êóðñîðà
Dim pbStr     'ïðîãðåñáàð
Dim I         'ñëóæåáíàÿ ïåðåìåííàÿ
Dim PSpID     'èäåíòèôèêàòîð ïðîèçâîäñòâåííîé ñïåöèôèêàöèè
       
    If TCSApp.Inventory.CalculateDocumentTypes.RunModuleForSelect("Âûáåðèòå òèï ðàñ÷åòíîãî äîêóìåíòà", False) Then 'Âûáîð òèïà ðàñ÷åòíîãî äîêóìåíòà
        If TCSApp.PlantDepartments.RunModuleForSelect("Âûáåðèòå öåõ/ó÷àñòîê", False) Then  'Âûáîð ïîäðàçäåëåíèÿ, ãäå áóäåò ôîðìèðîâàòüñÿ äîêóìåíò
                                                                                           '
            Set CalcDocs = TCSApp.Inventory.CalculateDocuments                             'îáúåêò "Ðàñ÷åòíûå äîêóìåíòû"
                                                                                           '          
            DocNumber = ""                                                                 'Íîìåð äîêóìåíòà (áóäåò
            DocName="Äîêóìåíò äëÿ çàêàçà"                                                  'Íàèìåíîâàíèå äîêóìåíòà
            Set Order = TCSApp.Manufacturing.Orders                                        'Âçÿòü çàêàçû
            If Order.Locate("ID",TCSActiveModule.Properties( "OrderId" ).Value,0) Then     'Íàéòè â íèõ çàêàç, ê êîòîðîìó îòíîñèòñÿ ÏÑï
                DocName=DocName & " " &  Order.Properties( "NAME" ).Value                  'c óêàçàíèåì çàêàçà
            End If    
            Set Order = Nothing                                                             'Îñâîáîäèòü "Çàêàçû" 
            DocDate = Date()                                                               'Äàòà ñçäàíèÿ
            DocRem = "Íà îñíîâàíèè ÏÑï "&  TCSActiveModule.Properties( "NOTE" ).Value'Êîììåíòàðèé ê äîêóìåíòó 
            DocTypeID = TCSApp.Inventory.CalculateDocumentTypes.Properties("ID").AsInteger 'Òèï äîêóìåíòà 
            CehaID = TCSApp.PlantDepartments.Properties("ID").AsInteger                    'Ïîäðàçäåëåíèå
            CounteragentID=0                                                               'Ïîêà íå óêàçûâàòü êîíòðàãåíòà
            ShowDialog=0                                                                   'Ïðè äîáàâëåíèè íå ïîêàçûâàòü çàêëàäêó "Îñíîâíûå" 
            If TCSApp.Inventory.CalculateDocumentTypes.Properties("COUNTERAGENT_NEED").AsBoolean Then 'Åñëè íóæíî óêàçûâàòü êîíòðàãåíòà, òî
            ShowDialog=2                                                                   'Ïðè äîáàâëåíèè ïîêàçàòü çàêëàäêó "Îñíîâíûå"
            DialogCaption = "Óêàæèòå êîíòðàãåíòà"                                          'Ïîêàçàòü íàèìåíîâàíèå îêíà
            End If
            PSpID=TCSActiveModule.Properties("ID").AsInteger               'Íàéòè èäåíòèôèêàòîð ïðîèçâîäñòâåííîé ñïåöèôèêàöèè
            CalcDoc = CalcDocs.AddCalculateDocument(DocNumber,DocName,DocDate,DocRem,DocTypeID,CehaID,CounteragentID,PSpID,ShowDialog,DialogCaption)'Ñîçäàòü äîêóìåíò
          If CalcDoc <> -1 Then                                            'Åñëè äîêóìåíò óñïåøíî ñîçäàëñÿ
            Set CalcDocSpc = CalcDocs.Properties("CalculateDocumentSpecification").AsIDispatch'Ñïåöèôèêàöèÿ
                    
         pbStr = CSDN_VIS_Library.constProgressBarStr                      'Âçÿòü ñòðîêó ïðîãðåññáàðà
         BM = TCSActiveModule.GetBookmark                                  'Çàïîìíèòü ïîëæåíèå êóðñîðà   
                                                                           '
         Set PspSpecs = TCSActiveModule.ChildModules.ModuleByName( "OrderStruct").AsIDispatch'Âçÿòü ñïåöèôèêàöèþ
        If PspSpecs.RunModuleForSelect("Âûáåðèòå çàïèñè", True)  Then      'Åñëè åñòü âûäåëåííûå çàïèñè
           For I = 0 To PspSpecs.SelectedRowsCount - 1                     'Ïåðåáèðàåì âûäåëåííûå çàïèñè ñï
                pbStr = CSDN_VIS_Library.ShowProgressBar(pbStr)            'Äâèãàåì ïðîãðåññáàð
                                                                           '
                  If PspSpecs.GotoSelectedRow(I) Then                      'Ïîçèöèîíèðîâàíèå íà î÷åðåäíóþ âûäåëåííóþ çàïèñü                                                                           ' 
                    If CalcDocSpc.Locate("NMK_ID", PspSpecs.Properties("NMK_ID").Value, 0) Then'Åñëè òàêàÿ íîìåíêëàòóðà óæå äîáàëåíà 
                       CalcDocSpc.Edit                                                         'Áåðåì åå íà ðåäàêòèðîâàíèå è ñêëàäûâàåì êîëè÷åñòâî
                       CalcDocSpc.Properties("QUANTITY").Value = CalcDocSpc.Properties("QUANTITY").Value + PspSpecs.Properties("N_ORDTREE_QUAN").Value
                    Else                                                                       'Åñëè òàêîé íîìåíêëàòóðû åùå íåò
                       CalcDocSpc.CreateNew                                                    'Ñîçäàåì íîâóþ çàïèñü
                       CalcDocSpc.Properties("NMK_ID").Value = PspSpecs.Properties("NMK_ID").Value          'ID Íîìåíêëàòóðû
                       CalcDocSpc.Properties("QUANTITY").Value = PspSpecs.Properties("N_ORDTREE_QUAN").Value'Êîëè÷åñòâî
                       CalcDocSpc.Properties("COEFF").Value = PspSpecs.Properties("N_ORDTREE_COEFF").Value  'Êîýôôèöèåíò ïåðåñ÷åòà
                       CalcDocSpc.Properties("MESUR_ID").Value = PspSpecs.Properties("MESUR_ID").Value      'ID Åäèíèöû èçìåðåíèÿ
                    End If
                    On Error Resume Next                           ' ñëó÷àå îøèáêè ïîäîëæèòü öèêë
                    CalcDocSpc.SaveChanges                         'Ñîõðàíèì ðàñ÷åòíûé äîêóìåíò, è åñëè ïðîèçîøëà
                    CalcDocSpc.CancelChanges                       'îøèáêà, îòìåíèì âñå èçìåíåíèÿ  
                   End If                                          '
           Next                                                    'Êîíåö öèêëà ïî ñïåöèôèêàöèè ÏÑï 
            Call TCSApp.HideProgressMessage                        'Âûêëþ÷èòü ïðîãðåññáàð
            Call TCSActiveModule.GotoBookmark(BM)                  'Âåðíóòü êóðñîð â èñõîäíîå ïîëîæåíèå
            CalcDocs.EditAction.Execute                            'Äàòü äîêóìåíò äëÿ ðó÷íîãî ðåäàêòèðîâàíèÿ 
          Else                                                     'Åñëè â ñïåöèôèêàöè íåò âûäåëåííûõ çàïèñåé
            Call TCSApp.HideProgressMessage                        'Âûêëþ÷èòü ïðîãðåññáàð
            Call TCSActiveModule.GotoBookmark(BM)                  'Âåðíóòü êóðñîð â èñõîäíîå ïîëîæåíèå
            Set CalcDocs = Nothing                                 'Îñâîáîäèòü "Ðàñ÷åòíûå äîêóìåíòû"   
            Call TCSApp.ShowMessageBox("Ñîîáùåíèå", "Âûäåëèòå çàïèñè â ñïåöèôèêàöèè!")
          End If    
          Else                                                     'Åñëè äîêóìåíò ñîçäàòü íå óäàëîñü
            Call TCSApp.ShowErrorMessage("Äîêóìåíò íå ñîçäàí!")    'Òî âûâåñòè ñîîáùåíèå îá îøèáêå
          End If                                                   '
            Set CalcDocSpc=Nothing                                 'Îñâîáîäèòü "Ñïåöèôèêàöèþ"
            Set CalcDocs = Nothing                                 'Îñâîáîäèòü "Ðàñ÷åòíûå äîêóìåíòû"
        End If                                                     'Åñëè âûáðàí öåõ/ó÷àñòîê
    End If                                                         'Åñëè âûáðàí òèï ðàñ÷åòíîãî äîêóìåíòà
End Sub     

   

! Ñì. òàêæå:

18.1 Â ðåæèìå «Ïðîèçâîäñòâåííûå ñïåöèôèêàöèè»