Цитата:
Сообщение от
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);