Показать сообщение отдельно
Старый 10.12.2007, 17:37   #6  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Goshik Посмотреть сообщение
Я имел ввиду что пробовал брать за основу как сделано в WHSEACTLINES.
Задача простая, нужно в карточке товара записать сосканированый баркод.
Item Table:
No. Barcode
AAA1
AAA2
AAA3
Header - Form Type (This field contains the form type of the miniform) - Card или Data List: A card-type form that can show plain text, which is used only for log in.
Цитата:
Нужно чтобы юзеру было показано:
For Item: AAA1
Barcode: юзер вводит баркод, жмет ок и на экране появляется следующий товар:
For Item: AAA2
Barcode: юзер вводит баркод
CU по аналогии с 7713 или 7705 (более наглядно) приблизительно должен быть таким:
... {OnRun по аналогии}
--Триггер для ввода, например ProcessInput():

IF XMLDOMMgmt.FindNode(RootNode,'Header/Input',ReturnedNode) THEN
TextValue := ReturnedNode.text
ELSE
ERROR(Text001 - описание ошибки);

IF EVALUATE(TableNo,ADCSCommunication.GetNodeAttribute(ReturnedNode,'TableNo')) THEN BEGIN // Key1 = TableNo
RecRef.OPEN(TableNo);
EVALUATE(RecordId,ADCSCommunication.GetNodeAttribute(ReturnedNode,'RecordID')); // Key2 = RecordID
IF RecRef.GET(RecordId) THEN BEGIN
RecRef.SETTABLE(Item);
ADCSCommunication.SetRecRef(RecRef);
END ELSE
ERROR(Text004);
END;

FuncGroup.KeyDef := ADCSCommunication.GetFunctionKey(MiniformHeader.Code,TextValue);

CASE FuncGroup.KeyDef OF

FuncGroup.KeyDef::Esc : PrepareData;

FuncGroup.KeyDef::First : ADCSCommunication.FindRecRef(RecRef,0,MiniformHeader."No. of Records in List");

FuncGroup.KeyDef::LnDn : IF NOT ADCSCommunication.FindRecRef(RecRef,1,MiniformHeader."No. of Records in List") THEN
Remark := Text008;

FuncGroup.KeyDef::LnUp : ADCSCommunication.FindRecRef(RecRef,2,MiniformHeader."No. of Records in List");

FuncGroup.KeyDef::Last : ADCSCommunication.FindRecRef(RecRef,3,MiniformHeader."No. of Records in List");

FuncGroup.KeyDef::PgDn : IF NOT ADCSCommunication.FindRecRef(RecRef,4,MiniformHeader."No. of Records in List") THEN
Remark := Text008;

FuncGroup.KeyDef::PgUp : ADCSCommunication.FindRecRef(RecRef,5,MiniformHeader."No. of Records in List");

FuncGroup.KeyDef::Input : BEGIN
EVALUATE(FldNo,ADCSCommunication.GetNodeAttribute(ReturnedNode,'FieldID'));
CASE FldNo OF
Item.FIELDNO("Barcode"): //наше поле "Штрих-код"
BEGIN
{ВЫПОЛНЯЕМ ВСЕ, ЧТО НАМ НУЖНО}
{ та же смотрим применение функции ADCSCommunication.FieldSetvalue(RecRef,FldNo,TextValue);}
END
ELSE BEGIN
ADCSCommunication.FieldSetvalue(RecRef,FldNo,TextValue);
RecRef.SETTABLE(Item);
END;
END;

{ можно добавить КОД - не знаю что именно там еще нужно делать и в какой последовательности}
//=========
ActiveInputField := ADCSCommunication.GetActiveInputNo(CurrentCode,FldNo);
IF ADCSCommunication.LastEntryField(CurrentCode,FldNo) THEN BEGIN
ADCSCommunication.GetNextMiniForm(MiniformHeader,MiniformHeader2);
MiniformHeader2.SaveXMLin(DOMxmlin);
CODEUNIT.RUN(MiniformHeader2."Handling Codeunit",MiniformHeader2);
END ELSE
ActiveInputField += 1;
//=========

RecRef.GETTABLE(Item);
ADCSCommunication.SetRecRef(RecRef);
END;
END;

IF NOT (FuncGroup.KeyDef IN [FuncGroup.KeyDef::Esc,FuncGroup.KeyDef::Register]) THEN
SendForm(ActiveInputField);