Функции получения справочных данных
Получение наименования класса по ID
Function GetNmkClassNAME( NmkClassID )
Dim NmkClasses
Set NmkClasses = TCSApp.NmkClasses
If Not ( NmkClasses Is Nothing ) Then
NmkClasses.UserModuleName = NmkClasses.UniqueUserModuleName
If NmkClasses.Locate( "ID", NmkClassID, 0 ) Then
GetNmkClassNAME = NmkClasses.Properties( "NAME" ).DisplayText
Else
GetNmkClassNAME = ""
End If
Call TCSapp.DeleteModuleByUserModuleName( NmkClasses.UserModuleName )
Else
GetNmkClassNAME = ""
End If
End Function
Получение ID справочника по ID номенклатуры
Function GetNmkClassId( NmkID )
Dim Result : Result = -1
Dim ISingleNmk : Set ISingleNmk = TCSApp.SingleNmkFromId( NmkID )
If Not ISingleNmk Is Nothing Then
ISingleNmk.UserModuleName = ISingleNmk.UniqueUserModuleName
Result = ISingleNmk.Properties( "NMK_CLASSIF_TYPE_REF" ).AsSafeInteger
Call TCSapp.DeleteModuleByUserModuleName( ISingleNmk.UserModuleName )
End if
GetNmkClassId = Result
End Function
Получение полного наименования номенклатуры по ID номенклатуры
Function GetNmkFullName( NmkID )
Dim Result : Result = ""
Dim ISingleNmk
Set ISingleNmk = TCSApp.SingleNmkFromId( NmkID )
If Not ISingleNmk Is Nothing Then
ISingleNmk.UserModuleName = ISingleNmk.UniqueUserModuleName
Result = Trim(ISingleNmk.Properties( "NOTE" ).DisplayText & " " & ISingleNmk.Properties( "NAME" ).DisplayText & Replace(" (" & ISingleNmk.Properties( "NMK_CODE" ).DisplayText & ")", "()", "" ))
Call TCSapp.DeleteModuleByUserModuleName( ISingleNmk.UserModuleName )
End if
GetNmkFullName = Result
End Function
Получение ID единицы измерения по наименованию
Function GetMesurID( MesurNote )
Dim ResultFunction : ResultFunction = Null
Dim IMesuriments
TCSApp.ShowOneTreeNodeData = False
Set IMesuriments = TCSApp.Mesuriments
If Not IMesuriments Is Nothing Then
IMesuriments.UserModuleName = IMesuriments.UniqueUserModuleName
If IMesuriments.Locate( "NOTE", MesurNote, 0 ) Then
ResultFunction = IMesuriments.Properties( "ID" ).AsSafeInteger
End If
Call TCSapp.DeleteModuleByUserModuleName( IMesuriments.UserModuleName )
End if
GetMesurID = ResultFunction
End Function
Применяемость номенклатуры как конструктоский материал
Sub FormMacro_Nmk_VH_Par(TCSActiveModule)
Set Par = TCSApp.Parameters
If Par.Locate("PAR_CODE","KM00000001",0) Then
Set Par_Vh = Par.ChildModules.ModuleByName("WhereUsed_parametres").AsIDispatch
Set Par_Vh_NMK = Par_Vh.ChildModules.ModuleByName("WhereUsed_parametres_in_nomenklature").AsIDispatch
Call Par_Vh_NMK.Filter.ClearFilter
Call Par_Vh_NMK.Filter.NewFilterItem( Par_Vh_NMK.Properties( "NMK_ID_1" ), CSDN_Const.fkEQ, TCSActiveModule.Properties("ID").Value)
Call Par_Vh_NMK.Filter.ApplyFilter
Id = Par_Vh_NMK.ShowModal("Входимость как конструкторский материал - " + TCSActiveModule.Properties("NOTE").DisplayText + " " + TCSActiveModule.Properties("NAME").DisplayText)
End If
End Sub
Функция выдает ID ветки дерева по её полному наименованию (используется в дереве архива)
Function ID_BY_NODE(DTree, Node)
' DTree - дерево, в котором надо искать
' Node - полное наименование ветки - строка
Dim Node_Id_Master
Node_Id_Master = 0
For i = 0 To DTree.RootNodes.Count-1
Call FullReadNode1(DTree.RootNodes.Item(i),Node,Node_Id_Master)
ID_BY_NODE = Node_Id_Master
Next
End Function
Процедура чтения дерева
Sub FullReadNode1 (DNode, Node, Node_Id)
If Not (Node_Id = 0) Then
Exit Sub
Elseif DNode.FullPath("\\") = Node Then
Node_Id = DNode.NodeId
Exit Sub
Else
Node_Id = 0
For i = 0 To DNode.Count-1
If Not (Node_Id = 0) Then
Exit For
End If
Call FullReadNode1(DNode.Item(i),Node,Node_Id)
Next
End If
End Sub
Полное наименование цеха\участка
Function GetPlantDepartmentsFullName( PlantDepartmentsID )
Dim Result : Result = ""
Dim IPlantDepartments
Set IPlantDepartments = TCSApp.PlantDepartments
IPlantDepartments.UserModuleName = IPlantDepartments.UniqueUserModuleName
If IPlantDepartments.Locate( "ID", PlantDepartmentsID, 0 ) Then
Result = IPlantDepartments.Properties( "CEHA_NUMBER" ).DisplayText & "/" & _
IPlantDepartments.Properties( "CEHA_SECTOR" ).DisplayText & " " & _
IPlantDepartments.Properties( "NAME" ).DisplayText
End If
Call TCSapp.DeleteModuleByUserModuleName( IPlantDepartments.UserModuleName )
GetPlantDepartmentsFullName = Result
End Function
Остаток номенклатурной позиции по партии
Function GetBalanceNmk( NmkID, BatchID )
Dim Result : Result = 0
Dim NmkClassId : NmkClassId = GetNmkClassId( NmkID )
If NmkClassId > 0 Then
Dim INomenclaturesBalance : Set INomenclaturesBalance = TCSApp.Inventory.NomenclaturesBalance( NmkClassId )
If Not INomenclaturesBalance Is Nothing Then
INomenclaturesBalance.UserModuleName = INomenclaturesBalance.UniqueUserModuleName
If INomenclaturesBalance.Locate( "ID", NmkID, 0 ) Then
Dim gmNomenclatureBatch : Set gmNomenclatureBatch = INomenclaturesBalance.Properties("NomenclatureBatch").AsIDispatch
If Not gmNomenclatureBatch Is Nothing Then
If gmNomenclatureBatch.Locate( "ID", BatchID, 0 ) Then
Result = Result + gmNomenclatureBatch.Properties( "QUAN" ).AsSafeFloat
End If
Set gmNomenclatureBatch = Nothing
End If
End If
Call TCSapp.DeleteModuleByUserModuleName( INomenclaturesBalance.UserModuleName )
End If
End If
GetBalanceNmk = Result
End Function