Sub FormMacro_ShowWhereUsedNmkAsSPPosPar( INomenklatures )'Где используется в качестве значения параметра позиции СП
On Error Resume Next
Dim NmkID, IParameters, FromSpecification, WhereUsed_parametres, WhereUsed, NmkFullInfo, Version
Dim UserGModule
Dim Result, pbStr
Set UserGModule = TCSApp.CreateUserGModule("UserGModule") : Call UserGModule.ClearProps : Call UserGModule.ClearScripCommands : UserGModule.ReadOnlyUserMode = False
Call UserGModule.AddProp("NMK_NOTE", "Номенклатура|Обозначение", 1, True, True, 150)
Call UserGModule.AddProp("NMK_NAME", "Номенклатура|Наименование", 1, True, True, 200)
Call UserGModule.AddProp("NMK_CODE", "Номенклатура|Код", 1, True, True, 30)
Call UserGModule.AddProp("VerName", "Номенклатура|Версия СП", 1, True, True, 150)
Call UserGModule.AddProp("NMK_CLASSIF_TYPE_NOTE", "Позиция|Класс", 1, True, True, 50)
Call UserGModule.AddProp("VerNMK_NOTE", "Позиция|Обозначение", 1, True, True, 150)
Call UserGModule.AddProp("VerNMK_NAME", "Позиция|Наименование", 1, True, True, 200)
NmkID = INomenklatures.Properties( "ID" ).AsSafeInteger
If NmkID > 0 Then
LogObject.ScriptTimeOut = 0
TCSapp.ShowOneTreeNodeData = False
Set IParameters = TCSApp.Parameters
If Not IParameters Is Nothing Then
IParameters.UserModuleName = IParameters.UniqueUserModuleName
Call IParameters.Filter.ClearFilter
Call IParameters.Filter.NewFilterItem( IParameters.Properties( "PAR_TYPE" ), fkEQ, "R" )
Call IParameters.Filter.ApplyFilter
Call IParameters.First
Do While Not IParameters.Eof
Set WhereUsed_parametres = IParameters.ChildModules.ModuleByName("WhereUsed_parametres").AsIDispatch
Set WhereUsed = WhereUsed_parametres.ChildModules.ModuleByName("WhereUsed_parametres_in_spec").AsIDispatch
Call WhereUsed.Filter.ClearFilter
Call WhereUsed.Filter.NewFilterItem( WhereUsed.Properties( "NMK_ID_1" ), fkEQ, NmkID )
Call WhereUsed.Filter.NewFilterItem( WhereUsed.Properties( "VER_STATE" ), fkIN, "0;1;" )
Call WhereUsed.Filter.ApplyFilter
Call WhereUsed.Refresh
Do While Not WhereUsed.Eof
Set FromSpecification = WhereUsed.ChildModules.ModuleByName("FromSpecification").AsIDispatch
Set NmkFullInfo = FromSpecification.ChildModules.ModuleByName("NmkFullInfo").AsIDispatch
Set Version = FromSpecification.ChildModules.ModuleByName("Version").AsIDispatch
Call UserGModule.CancelChanges
Call UserGModule.CreateNew
UserGModule.Properties( "NMK_NOTE" ).AsString = NmkFullInfo.Properties( "NMK_NOTE" ).DisplayText
UserGModule.Properties( "NMK_NAME" ).AsString = NmkFullInfo.Properties( "NMK_NAME" ).DisplayText
UserGModule.Properties( "NMK_CODE" ).AsString = NmkFullInfo.Properties( "NMK_CODE" ).DisplayText
UserGModule.Properties( "VerName" ).AsString = Version.Properties( "VER_NAME" ).DisplayText
UserGModule.Properties( "NMK_CLASSIF_TYPE_NOTE" ).AsString = WhereUsed.Properties( "NMK_CLASSIF_TYPE_NOTE" ).DisplayText
UserGModule.Properties( "VerNMK_NOTE" ).AsString = WhereUsed.Properties( "NMK_NOTE" ).DisplayText
UserGModule.Properties( "VerNMK_NAME" ).AsString = WhereUsed.Properties( "NMK_NAME" ).DisplayText
Call UserGModule.SaveChanges
Call UserGModule.CancelChanges
Call WhereUsed.Next
Loop
Set WhereUsed = Nothing
Set WhereUsed_parametres = Nothing
Call IParameters.Next
Loop
Call TCSApp.HideProgressMessage
UserGModule.First
UserGModule.ReadOnlyUserMode = True
If UserGModule.Properties( "NMK_CLASSIF_TYPE_NOTE" ).IsNull Then
Result = TCSApp.MessageBox("Данная номенклатурная позиция не используется в качестве значения параметра.", "Где используется", vbExclamation )
Else
If UserGModule.ShowModal(Trim(INomenklatures.Properties( "NOTE" ).DisplayText & " " & INomenklatures.Properties( "NAME" ).DisplayText & " " & INomenklatures.Properties( "NMK_CODE" ).DisplayText)) Then
End If
End If
Set UserGModule = Nothing
TCSApp.DeleteModuleByUserModuleName( IParameters.UserModuleName )
End If
End If
End Sub