Подскажите как организовать такой функционал:
В строках заказа вводится в поле номенклатура штрих-код, по штрих-коду ищется номенклатура и подставляется в строку со всеми аналитиками.
Как добится того что бы подставлялась аналитика?
Как передать в salesline inventDimId?
Вот что получилось, но работает не совсем так, как хотелась бы.
X++:
boolean validateField(fieldId fieldId)
{
boolean ok = true;
SalesLineType salesLineType;
RAssetTable assetTable; //valu FA (Viar)
SalesLine salesLineTmp; //valu FA (Viar)
InventItemBarcode inventItemBarcode;
InventDim inventDim;
InventTable inventTable;
SalesLine salesLine;
;
if(fieldId == fieldnum(SalesLine, ItemId))
{
select firstonly InventItemBarcode
where InventItemBarcode.itemBarCode == this.ItemId;
if(inventItemBarcode)
{
this.ItemId = inventItemBarcode.itemId;
if(inventItemBarcode.inventDimId)
{
ttsbegin;
inventDim.clear();
inventTable.clear();
//inventItemBarcode.clear();
inventTable = InventTable::find(this.ItemId);
//inventItemBarcode = InventItemBarcode::findBarcode(inventTable.itemId);
inventDim = inventItemBarcode.inventDim();
inventDim.inventLocationId = inventTable.salesInventLocationId(inventDim.inventLocationId);
inventDim.configId = inventDim.configId
? inventDim.configId
: inventTable.standardConfigId;
inventDim.inventSizeId = inventDim.InventSizeId
? inventDim.InventSizeId
: inventTable.standardInventSizeId;
inventDim.inventColorId = inventDim.InventColorId
? inventDim.InventColorId
: inventTable.standardInventColorId;
inventDim.InventLocationId = inventDim.InventLocationId;
salesLine.inventDimId = InventDim::findOrCreate(inventDim).inventDimId;
salesLine.inventDimId = InventDim.inventDimId;
salesLine.projCategoryId = inventTable.projCategoryId;
salesLine.setTaxItemGroup(inventTable.salesTaxItemGroupId());
salesLine.salesUnit = inventTable.salesUnitId();
salesLine.overDeliveryPct = inventTable.salesOverDeliveryPct();
salesLine.underDeliveryPct = inventTable.salesUnderDeliveryPct();
salesLine.initName(inventTable);
salesLine.initFromCustExternalItemDescription();
salesLine.salesQty = InventItemBarcode.Qty;
salesLine.qtyOrdered = InventItemBarcode.Qty;
salesLine.CurrencyCode = CompanyInfo::standardCurrency();
salesLine.priceUnit = inventTable.salesPriceUnit();
salesLine.lineAmountModified();
salesLine.barCode = inventItemBarcode.itemBarCode;
salesLine.barCodeType = inventItemBarcode.barcodeSetupId;
salesLine.dimension = Dimensions::findDimension(salesLine, inventTable, inventTable.Dimension);
salesLine.setPriceDisc(inventDim);
salesLine.calcPackingUnit(inventDim);
ttscommit;
}
}
}
ok = super(fieldId);
if (ok)
{
salesLineType = this.type();
ok = salesLineType.validateField(fieldId);
}
// Valu FA (Viar) -->
if (ok && fieldId == fieldnum(SalesLine, assetId_ru) && this.assetId_ru)
{
assetTable = RAssetTable::find(this.assetId_ru);
ok = assetTable.isOkToSell();
if (ok)
{
salesLineTmp = SalesLine::findAsset_RU(this.assetId_ru);
if (salesLineTmp && salesLineTmp.recid != this.recId)
{
ok = checkfailed(strfmt("@FAV1297", salesLineTmp.salesId));
}
}
}
// <<-- Valu FA (Viar)
return ok;
}