|
|
#1 |
|
Участник
|
search item by barcode
How to enter new items by barcode?
Usually in itemID field you select itemnumber from item list. How could be done that from barcode scanner? |
|
|
|
|
#2 |
|
Участник
|
Да никак. Если конечно сами не напишете поддержку сканнеров штрих-кодов в Аксапте, т.к. стандартный функционал их просто не поддерживает. Особенно сканнеры, подключаемые в COM-порт.
Сканнеры подключаемые в разьем клавиатуры сами по себе просто набирают сканируемый код на клавиатуре, следовательно определенным образом извращаясь их можно заюзать без какой либо поддержки со стороны программы в которой их предполагается использовать, но это наверняка будет неудобно. Кроме того сама постановка вопроса (как ввести новый itemId со сканнера) мне непонятна - что вы хотите? Чтобы ItemId у товара был равен штрих-коду на его этикетке?? |
|
|
|
|
#3 |
|
Участник
|
Ну, нельзя сказать, что совсем уж не поддерживает... Если посмотреть инвентаризацию в Управлении запасами Аксапты 3, то таки может... Вводим с клавиатуры (или клавиатурного сканера) штрихкод - выбирается искомая номенклатура. Соответственно, аккуратно доработав формы закупок/заказов, можно выбирать и там.
А вот ItemId=штрихкод - это моветон. |
|
|
|
|
#4 |
|
Бобр
|
моветон жжот (+)
А как делают в таком случае? Заводят новую аналитку "штрихкод"?
|
|
|
|
|
#5 |
|
NavAx
|
У меня это выглядит так (это не стандартный функционал):
public int task(int _taskId) { #TASK int ret; ItemId itemId; if (_taskId == #TASKBARCODE) { itemId = InventItemBarcode::findBarcodeSimple(appl.barcodeObject().getBarcodeString()).itemId; if (itemId) inventTable_ds.filter(fieldNum(InventTable, ItemId), itemId); } else ret = super(_taskId); return ret; } а зачем новую аналитику то? открываем форму InventTable и находим на ней кнопочку "Настройки" и там "Штриховые коды"
__________________
И все они создания природы... |
|
|
|
|
#6 |
|
Участник
|
Если одной номенклатуре соответствует только один штрих-код, то можно использовать поле "Краткое наименование" в картотеке номенклатуры. В это случае можно будет вводить штрих-код в поле кода номенклатуры, а система сама заменит его на нужный код.
|
|
|
|
|
#7 |
|
Участник
|
Цитата:
Изначально опубликовано Peter Savintsev
Если одной номенклатуре соответствует только один штрих-код, то можно использовать поле "Краткое наименование" в картотеке номенклатуры. В это случае можно будет вводить штрих-код в поле кода номенклатуры, а система сама заменит его на нужный код. 1) 1 товар - разные штрихкоды, эта же кола, разливаемая на разных заводах, имеет разные штрих коды. Тоже самое с сигаретами, некоторыми консервами и т.д. 2) 1 штрихкод - разные товары, некоторые чаи (по-моему "Восточный Купец"), консервы имеют 1 штрихкод на весь видовой ассортимент товара. Даже попадались принципиально разные товары с одинаковыми штрихкодами. Первая ситуация - это норма, решается связью 1:н. Вторая - жульничество или ошибки производителей. Решается только переклейкой штрихкодов на внутринние. |
|
|
|
|
#8 |
|
Administrator
|
Поскольку предполагается, что сканеры штрих-кодов используются на складе, работа с ними реализована во всех складских журналах. Заказы и закупки складскими документами не являются. Вообще, у кладовщиков доступ в эти формы, ИМХО, должен быть только на чтение.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
|
|
#9 |
|
Участник
|
Подскажите как организовать такой функционал:
В строках заказа вводится в поле номенклатура штрих-код, по штрих-коду ищется номенклатура и подставляется в строку со всеми аналитиками. Как добится того что бы подставлялась аналитика? Как передать в 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;
} |
|
|
|
|
#10 |
|
Banned
|
Да уж, длинно и некрасиво.
Вот идеи: salesLine.initFromInventTable(...) InventDim.mergeUsedDim(...) SalesLine::ModifySalesQty(...) А полный пример реализации похожей функциональности можно найти здесь: \Classes\WMSJournalFormTrans\barCodeEAN128 И ради бога, сделайте отдельное поле для ввода штрих-кода. |
|
|
|
|
|