19.1.1 Â îêíå ñïèñîê ÏÑï |
Äëÿ çàïóñêà äàííîãî ìàêðîñà íåîáõîäèìî âîéòè â ðåæèì:
«Ïðîèçâîäñòâî» - «Ïðîèçâîäñòâåííûå ñïåöèôèêàöèè»,
è ñïîçèöèîíèðîâàòüñÿ íà íåîáõîäèìóþ ÏÑï.
Ìàêðîñ «Ñîçäàíèå ðàñ÷åòíîãî äîêóìåíòà äëÿ âûäåëåííûõ ïîçèöèé ñîñòàâà ÏÑï». Ïîçâîëÿåò ïåðåéòè â ñîñòàâ òåêóùåé ÏÑï, âûäåëèòü â íåì ïîçèöèè è ñôîðìèðîâàòü äëÿ íèõ ðàñ÷åòíûé äîêóìåíò.
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
Ñì. òàêæå: