05.10.2004, 14:46 | #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? |
|
06.10.2004, 06:08 | #2 |
Участник
|
Да никак. Если конечно сами не напишете поддержку сканнеров штрих-кодов в Аксапте, т.к. стандартный функционал их просто не поддерживает. Особенно сканнеры, подключаемые в COM-порт.
Сканнеры подключаемые в разьем клавиатуры сами по себе просто набирают сканируемый код на клавиатуре, следовательно определенным образом извращаясь их можно заюзать без какой либо поддержки со стороны программы в которой их предполагается использовать, но это наверняка будет неудобно. Кроме того сама постановка вопроса (как ввести новый itemId со сканнера) мне непонятна - что вы хотите? Чтобы ItemId у товара был равен штрих-коду на его этикетке?? |
|
06.10.2004, 08:32 | #3 |
Участник
|
Ну, нельзя сказать, что совсем уж не поддерживает... Если посмотреть инвентаризацию в Управлении запасами Аксапты 3, то таки может... Вводим с клавиатуры (или клавиатурного сканера) штрихкод - выбирается искомая номенклатура. Соответственно, аккуратно доработав формы закупок/заказов, можно выбирать и там.
А вот ItemId=штрихкод - это моветон. |
|
28.06.2005, 15:59 | #4 |
Бобр
|
моветон жжот (+)
А как делают в таком случае? Заводят новую аналитку "штрихкод"?
|
|
29.06.2005, 09:44 | #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 и находим на ней кнопочку "Настройки" и там "Штриховые коды"
__________________
И все они создания природы... |
|
29.06.2005, 11:18 | #6 |
Участник
|
Если одной номенклатуре соответствует только один штрих-код, то можно использовать поле "Краткое наименование" в картотеке номенклатуры. В это случае можно будет вводить штрих-код в поле кода номенклатуры, а система сама заменит его на нужный код.
|
|
29.06.2005, 11:50 | #7 |
Участник
|
Цитата:
Изначально опубликовано Peter Savintsev
Если одной номенклатуре соответствует только один штрих-код, то можно использовать поле "Краткое наименование" в картотеке номенклатуры. В это случае можно будет вводить штрих-код в поле кода номенклатуры, а система сама заменит его на нужный код. 1) 1 товар - разные штрихкоды, эта же кола, разливаемая на разных заводах, имеет разные штрих коды. Тоже самое с сигаретами, некоторыми консервами и т.д. 2) 1 штрихкод - разные товары, некоторые чаи (по-моему "Восточный Купец"), консервы имеют 1 штрихкод на весь видовой ассортимент товара. Даже попадались принципиально разные товары с одинаковыми штрихкодами. Первая ситуация - это норма, решается связью 1:н. Вторая - жульничество или ошибки производителей. Решается только переклейкой штрихкодов на внутринние. |
|
29.06.2005, 14:29 | #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 |
|
14.12.2006, 18:26 | #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; } |
|
14.12.2006, 19:02 | #10 |
Banned
|
Да уж, длинно и некрасиво.
Вот идеи: salesLine.initFromInventTable(...) InventDim.mergeUsedDim(...) SalesLine::ModifySalesQty(...) А полный пример реализации похожей функциональности можно найти здесь: \Classes\WMSJournalFormTrans\barCodeEAN128 И ради бога, сделайте отдельное поле для ввода штрих-кода. |
|
|
|