Furkan Kaya

Logo Objects ile Varyant

  Tiger/Logo Object Designer (LOD)

Merhaba,


Logo Objects ile varyant atamaları yapıyorum. 

XML Veri Dışarı Aktar dediğimde, malzeme varyantlarında gelen XML'i Logo sitesindeki dönüştürücüden dönüştürüyorum.

Üretilen kodlardan yararlanarak içeri alıyorum.


Fakat dikkatimi çeken şöyle bir durum var.

Arayüz'den yaptığım varyant atamasında LG_XXX_ITMUNITA tablosuna VARIANTREF'i atarak tıpkı malzeme açıldığındaki gibi bir kayıt atıyor.

Benim Objects ile aldığımda kayıtlarda her şey arayüzle aynı yalnızca  ITMUNITA'daki VARIANTREF'li kayıt gelmiyor.


Dim variantObjects As UnityObjects.Data
Dim variantAssignsLines As UnityObjects.Lines
Dim unitListLines As UnityObjects.Lines
variantObjects = UnityApp.NewDataObject(UnityObjects.DataObjectType.doVariant)
variantObjects.[New]()

variantObjects.DataFields.FieldByName("CARDTYPE").Value = material.CardType
variantObjects.DataFields.FieldByName("CODE").Value = Item.SubItems(1).Text
variantObjects.DataFields.FieldByName("NAME").Value = Item.SubItems(2).Text
variantObjects.DataFields.FieldByName("UNITSETREF").Value = material.UnitSetRef

variantAssignsLines = variantObjects.DataFields.FieldByName("VRNT_ASSIGNS").Lines
variantAssignsLines.AppendLine()

variantAssignsLines(variantAssignsLines.Count - 1).FieldByName("CHARCODE").Value = charCode.Code
variantAssignsLines(variantAssignsLines.Count - 1).FieldByName("CHARDEF").Value = charCode.Name
variantAssignsLines(variantAssignsLines.Count - 1).FieldByName("CHARVAL").Value = Item.SubItems(1).Text
variantAssignsLines(variantAssignsLines.Count - 1).FieldByName("LINENR").Value = 1

variantObjects.DataFields.FieldByName("ITEMREF").Value = material.Logicalref

unitListLines = variantObjects.DataFields.FieldByName("UNITLIST").Lines
unitListLines.AppendLine()
 unitListLines(unitListLines.Count - 1).FieldByName("UNIT_CODE").Value = unitSetL.Code
unitListLines(unitListLines.Count - 1).FieldByName("USEF_MTRLCLASS").Value = itmUnitA.MTRLClass
unitListLines(unitListLines.Count - 1).FieldByName("USEF_PURCHCLAS").Value = itmUnitA.PurchClass
unitListLines(unitListLines.Count - 1).FieldByName("USEF_SALESCLAS").Value = itmUnitA.SalesClass
unitListLines(unitListLines.Count - 1).FieldByName("CONV_FACT1").Value = unitSetL.ConvFact1
unitListLines(unitListLines.Count - 1).FieldByName("CONV_FACT2").Value = unitSetL.ConvFact2

variantObjects.DataFields.FieldByName("MAINUNIT").Value = unitSetL.Code

If Not variantObjects.Post() Then
If variantObjects.ErrorCode <> 0 Then
MsgBox(variantObjects.ErrorCode & "-" & variantObjects.ErrorDesc)
Else
Dim ers As UnityObjects.ValidateErrors = variantObjects.ValidateErrors
For j As Integer = 0 To ers.Count - 1
MsgBox(ers(j).ID & " " & ers(j).Error)
Next
End If
End If

Bir şeyleri gözden mi kaçırıyorum? Desteğinizi bekliyorum.






NaciO

Merhaba,

Aşağıdaki bloğunda kodun içerisinde yer alması gerekiyor. 

variant.DataFields.FieldByName("XINFOFLAGS2").Value = 1;
variant.DataFields.FieldByName("XINFOFLAGS3").Value = 1;
variant.DataFields.FieldByName("XINFOFLAGS4").Value = 1;
variant.DataFields.FieldByName("XINFOFLAGS5").Value = 1;
variant.DataFields.FieldByName("XINFOFLAGS9").Value = 1;

Bu alanlar bir tablodan direkt okunabilen alanlar değil, bir listeden alınıyor, standart aktarımda aynı değerler geliyor. Anlamlarını henüz bulamadım, öğrendiğim bu sayfayı tekrar güncelleyeceğim.



12/03/18 09:02

Cevap vermek için giriş yapmanız gerekmektedir.