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

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

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

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

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    

 

Ñì. òàêæå:

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