Тема: Как связать документ из архива с заказом в Номенклатуре
Здравствуйте. Недавно начал работать с технолоджиксом и нужна помощь. Мне нужно создать на основе существующего заказа дополнительный и добавить к нему часть документов из-основного заказа. Никак не получается связать в макросе документ из архива с заказом. Пробовал разные варианты, Через "NMkDocuments", через Links у документа что бы добавить связь. В разных вариантах в основном код работает без появления ошибок но документы не связываются с заказом. Пожалуйста подскажите как это решить, желательно с примерами кода. Ниже код макроса где возникают проблемы.
'###############################################################################
Sub FormMacro_ADD_KONTR_UPAC(TCSActiveModule) 'Добавление заказа на упаковку
iPos1 = InStr(1, TCSActiveModule.p_NOTE.AsSafeString, "/")
iPos2 = InStr(iPos1+1, TCSActiveModule.p_NOTE.AsSafeString, "/")
iPos3 = InStr(1, TCSActiveModule.p_NOTE.AsSafeString, "-")
iPos4 = InStr(1, TCSActiveModule.p_NOTE.AsSafeString, ".")
'----------------------------------------------------------------------------
Str1 = Mid(TCSActiveModule.p_NOTE.AsSafeString, 1, iPos1-1)
Str2 = Mid(TCSActiveModule.p_NOTE.AsSafeString, iPos1)
Str = Str1 & "-УП_%" & Str2
Set query = TCSApp.UserRecordSet( "ZAKAZ_SOZD_Z", False, "PVALUE", Str)
Call Admin.Count_Row(query, Row_count)
Kol = Row_count + 1
NOTE = Str1 & "-УП_" & Kol & Str2
'--------------------------------------------------------------
Str3 = Mid(TCSActiveModule.p_NOTE.AsSafeString, iPos1+1, iPos3 -iPos1-1)
Str4 = Mid(TCSActiveModule.p_NOTE.AsSafeString, iPos2+1, iPos4 -iPos2-1)
CODE = Str1 & "-УП_" & Kol & "." & Str3 & "." & Str4
'---------------------------------------------------
' 'Савенков Н.В. 11.04.2024
ZakazOsn = TCSActiveModule.Properties("ID").Value
Set Zakaz = TCSActiveModule
'Node = TCSActiveModule.p_NODE_ID.Value
' 'Савенков Н.В. 11.04.2024
Call TCSActiveModule.CancelChanges
Call TCSActiveModule.CreateNew
TCSActiveModule.Properties("NOTE").Value = NOTE
TCSActiveModule.Properties("NMK_CODE").Value = CODE
TCSActiveModule.Properties("NODE_ID").Value = TCSActiveModule.p_NODE_ID.Value
TCSActiveModule.Properties("MESUR_ID").Value = 2
On Error Resume Next
Call TCSActiveModule.SaveChanges
Call TCSActiveModule.CancelChanges
Set ZakazNew = TheApp.SingleNmkFromId(TCSActiveModule.Properties("ID").Value)
Set Act = TCSActiveModule.ActionList.ActionByName("EditAction")
If Not Act Is Nothing Then Act.Execute
'-----------------------------------------------------------------
Set Spec_vers = TCSApp.NmkSpecificationVersions(TCSActiveModule.Properties("ID").AsInteger)
Spec_vers.UserModuleName = Spec_vers.UniqueUserModuleName
IdNewVer = Spec_vers.CreateNewVersion("изм. 00")
Spec_vers.Refresh
TCSApp.DeleteModuleByUserModuleName (Spec_vers.UserModuleName)
Set Spec_vers = Nothing
TCSActiveModule.Refresh
' 'Савенков Н.В. 11.04.2024
Set Zakaz = TheApp.SingleNmkFromId(ZakazOsn)
Set Param = Admin.UniqueModule(Zakaz.ChildModules.ModuleByName("NmkParameters").AsIDispatch)
Set ParamNew = ZakazNew.Properties("Parameters").AsIDispatch
Call Param.First
While Not Param.EOF
If ParamNew.SetParameterValueByParCode(Param.Properties("PAR_CODE").AsSafeString,Param.Properties("NMK_PAR_VALUE").AsSafeString , 0, True) Then FLAGPRAV = "Добавлен"
Call Param.Next
Wend
'Часть кода ниже не работает как нужно ---------------------------------------------------------------------------------
Set Param = Nothing
Set ParamNew = Nothing
Set Docs = Zakaz.ChildModules.ModuleByName("NMkDocuments").AsIDispatch '("NMkDocuments").AsIDispatch
Set DocsNew = ZakazNew.Properties("NMkDocuments").AsIDispatch '.AsIDispatch
Dim NMK
Call Docs.First
While Not Docs.EOF
If Docs.Properties("PRJTYPE_NOTE").AsSafeString = "Контракт" _
Or Docs.Properties("PRJTYPE_NOTE").AsSafeString = "Договор с Заказчиком" Then
'Савенков Н.В. 26.03.2024
Set doc = theApp.SingleDoc(CSDN_Const.dspSearchDocByDocID, Docs.Properties("PRJ_ID").AsSafeInteger)
Set NMK = doc.p_PrjVerNmk.AsIDispatch
f = NMK.Properties("NMK_ID").Value
c = NMK.Properties("NMK_CLASSIF_TYPE_ID").Value
Call NMK.CancelChanges
Call NMK.CreateNew
NMK.Properties("NMK_CLASSIF_TYPE_ID").Value = ZakazNew.Properties("NMK_CLASSIF_TYPE_REF").Value
NMK.Properties("NMK_ID").Value = ZakazNew.Properties("NMK_ID").Value
Call NMK.SaveChanges
'Непонятно как работает --- Call Arhiv_library.Creat_Link(doc, ZakazNew.Properties("ID").Value, doc.Properties("COMMENT").Value, Docs.Properties("VER_ID").Value)
Call Docs.Next
End If
Wend
'Савенков Н.В. 11.04.2024
' ---------------------------------------------------------------------------------
End Sub