Cannot read property 'mthREMOVEFIRST' of null

This Q&A forum allows users to post and respond to "How Do I Do ....." questions. Please do not use to report (suspected) errors - you must use your regional help desk for this. The information contained in this forum has not been validated by LANSA and, as such, LANSA cannot guarantee the accuracy of the information.
Post Reply
eddie9394
Posts: 23
Joined: Tue Aug 14, 2018 11:03 pm

Cannot read property 'mthREMOVEFIRST' of null

Post by eddie9394 »

I am trying to close the framework command window after a delete operation. I had tried #COM_Owner, #COM_Self and #COM_Ancestor avCloseForm. All yield to the same error message below:

Fatal Error:
Cannot read property 'mthREMOVEFIRST' of null
Location:
Reusable Part: CMGEXCDetailCommand, line 945
Call Stack:
1. Evtroutine Handling(#zInt_AyncOperationsTimer.Tick): CMGEXCDetailCommand, line 945
Reported By:
http://localhost:8080/LANSA/SYS/VLFONE_Engine.js, line 572:315

Any suggestion?! THANKS!
MarkD
Posts: 692
Joined: Wed Dec 02, 2015 9:56 am

Re: Cannot read property 'mthREMOVEFIRST' of null

Post by MarkD »

Could you post your command handler code in text file?
eddie9394
Posts: 23
Joined: Tue Aug 14, 2018 11:03 pm

Re: Cannot read property 'mthREMOVEFIRST' of null

Post by eddie9394 »

Mark, Thank you for the reply. I created a simple command with just one button and the avCloseForm works fine, so something in my code is causing the issue. Here is my code please shine some light to it. Again THANK YOU!


function options(*direct)
begin_com role(*EXTENDS #MGSCommand) height(521) width(793) layoutmanager(#Layout3) verticalscroll(True)

* ================================================================================
* LAYOUT
* ================================================================================
define_com class(#PRIM_TBLO) name(#Layout)
define_com class(#PRIM_TBLO.Column) name(#LayoutColumn1) displayposition(1) parent(#Layout)
define_com class(#PRIM_TBLO.Row) name(#LayoutRow1) displayposition(1) parent(#Layout)

define_com class(#PRIM_TBLO) name(#Layout1)
define_com class(#PRIM_TBLO.Column) name(#Layout1Column1) displayposition(1) parent(#Layout1)
define_com class(#PRIM_TBLO.Row) name(#Layout1Row1) displayposition(1) parent(#Layout1)
define_com class(#PRIM_TBLO.Item) name(#Layout1Item1) column(#Layout1Column1) manage(#CECLNAM) parent(#Layout1) row(#Layout1Row1) sizing(FitToWidth) flow(Down) alignment(TopLeft)
define_com class(#PRIM_TBLO.Item) name(#Layout1Item2) column(#Layout1Column1) manage(#CELAMT) parent(#Layout1) row(#Layout1Row1) sizing(FitToWidth) flow(Down) alignment(TopLeft)
define_com class(#PRIM_TBLO.Item) name(#Layout1Item3) column(#Layout1Column1) manage(#CEDAYS) parent(#Layout1) row(#Layout1Row1) sizing(FitToWidth) flow(Down) alignment(TopLeft)
define_com class(#PRIM_TBLO.Item) name(#Layout1Item4) column(#Layout1Column1) manage(#CEDESC) parent(#Layout1) row(#Layout1Row1) sizing(FitToWidth) flow(Down) alignment(TopLeft)
define_com class(#PRIM_TBLO.Item) name(#Layout1Item5) column(#Layout1Column1) manage(#wk_string6) parent(#Layout1) row(#Layout1Row1) sizing(FitToWidth) flow(Down) alignment(TopLeft)
define_com class(#PRIM_TBLO.Item) name(#Layout1Item6) column(#Layout1Column1) parent(#Layout1) row(#Layout1Row1) manage(#SaveButton) sizing(None) flow(Down) alignment(TopLeft)

* ================================================================================
* UI COMPONENTS
* ================================================================================
define_com class(#PRIM_TBLO.Item) name(#Layout1Item7) column(#Layout1Column1) manage(#DeleteButton) parent(#Layout1) row(#Layout1Row1) sizing(None) alignment(TopCenter)

define_com class(#PRIM_TBLO) name(#Layout2)
define_com class(#PRIM_TBLO.Column) name(#Layout2Column1) displayposition(1) parent(#Layout2)
define_com class(#PRIM_TBLO.Row) name(#Layout2Row1) displayposition(1) parent(#Layout2)

define_com class(#PRIM_TBLO) name(#Layout3)
define_com class(#PRIM_TBLO.Column) name(#Layout3Column1) displayposition(1) parent(#Layout3)
define_com class(#PRIM_TBLO.Row) name(#Layout3Row1) displayposition(1) parent(#Layout3) height(340) units(Pixels)
define_com class(#PRIM_TBLO.Row) name(#Layout3Row2) displayposition(2) parent(#Layout3) units(Pixels) height(100)
define_com class(#PRIM_TBLO.Item) name(#Layout3Item1) manage(#CECLNAM) parent(#Layout3) row(#Layout3Row1) sizing(FitToWidth) column(#Layout3Column1) alignment(TopLeft) flow(Down)
define_com class(#PRIM_TBLO.Item) name(#Layout3Item2) manage(#CELAMT) parent(#Layout3) row(#Layout3Row1) sizing(FitToWidth) column(#Layout3Column1) alignment(TopLeft) flow(Down)
define_com class(#PRIM_TBLO.Item) name(#Layout3Item3) manage(#CEDESC) parent(#Layout3) row(#Layout3Row1) sizing(FitToWidth) column(#Layout3Column1) alignment(TopLeft) flow(Down)
define_com class(#PRIM_TBLO.Item) name(#Layout3Item4) manage(#CEDAYS) parent(#Layout3) row(#Layout3Row1) sizing(FitToWidth) column(#Layout3Column1) alignment(TopLeft) flow(Down)
define_com class(#PRIM_TBLO.Item) name(#Layout3Item5) manage(#DeleteButton) parent(#Layout3) row(#Layout3Row2) sizing(None) column(#Layout3Column1) alignment(TopRight) flow(Down)
define_com class(#PRIM_TBLO.Item) name(#Layout3Item6) manage(#wk_string6) parent(#Layout3) row(#Layout3Row1) sizing(FitToWidth) column(#Layout3Column1) alignment(TopLeft) flow(Down)
define_com class(#PRIM_TBLO.Item) name(#Layout3Item7) alignment(TopLeft) column(#Layout3Column1) manage(#SaveButton) parent(#Layout3) row(#Layout3Row2) sizing(None)

define_com class(#CECLNAM.EditField) name(#CECLNAM) displayposition(1) left(0) parent(#COM_OWNER) tabposition(1) top(0) width(793) readonly(True) height(65)
define_com class(#CELAMT.EditField) name(#CELAMT) displayposition(2) left(0) parent(#COM_OWNER) tabposition(2) top(65) width(793) height(65)
define_com class(#CEDAYS.EditField) name(#CEDAYS) displayposition(3) left(0) parent(#COM_OWNER) tabposition(3) top(130) width(793) height(65)
define_com class(#CEDESC.EditField) name(#CEDESC) displayposition(4) left(0) parent(#COM_OWNER) tabposition(4) top(195) width(793) caption('Special Consideration Description') captiontype(Caption) height(65)
define_com class(#wk_String6.EditField) name(#wk_string6) displayposition(5) left(0) parent(#COM_OWNER) tabposition(5) top(260) width(793) readonly(True) caption('Effect Date') captiontype(Caption) height(65)
define_com class(#PRIM_MD.RaisedButton) name(#SaveButton) caption('Save') displayposition(7) left(0) parent(#COM_OWNER) tabposition(7) height(39) width(118) enabled(False) top(340) themedrawstyle('MediumTitle')
define_com class(#PRIM_MD.RaisedButton) name(#DeleteButton) caption('Delete') displayposition(6) left(665) parent(#COM_OWNER) tabposition(6) height(41) width(128) top(340) themedrawstyle('MediumTitle')
define_com class(#MGSConfirmDialog) name(#MGSConfirmDialog)

def_list name(#ClientList) fields(#wk_CountryCode #CEOFF #CECLNBR #CECLNAM #CEDESC #CEDAYS #CELAMT #CEEDTE) counter(#LISTCOUNT) type(*working) entrys(*max)

* ================================================================================
* FIELDS
* ================================================================================
* group_by name(#DisplayFields) fields(#CECLNAM #CEDESC #CEDAYS #CELAMT #CEEDTE)
* group_by name(#SaveFields) fields(#CEDESC #CEDAYS #CELAMT)

* ================================================================================
* COMPONENTS
* ================================================================================
define_com class(#CMGEXCObjectManager) scope(*application)
define_com class(#CMGEXCDataObject) name(#ListItem) reference(*dynamic)
define_com class(#CMGEXCDetailsModule.Get) name(#Get)
define_com class(#CMGEXCDetailsModule.Save) name(#Save)

* ================================================================================
* ROUTINES
* ================================================================================
* ================================================================================
* ROUTINES
* ================================================================================
mthroutine name(uInitialize) options(*redefine)
* Do any initialization defined in the ancestor
#COM_ANCESTOR.uInitialize

#CMGEXCObjectManager.Register command(#COM_OWNER)

* Build collection of Editable fields
#COM_SELF.CollectEditableControls( #COM_OWNER.ComponentControls )

#SaveButton.Enabled := False
endroutine

mthroutine name(uTerminate) options(*redefine)
#CMGEXCObjectManager.Deregister command(#COM_OWNER)

#COM_SELF.ClearEditableControls
* Do any termination defined in the ancestor
#COM_ANCESTOR.uTerminate
endroutine

evtroutine handling(#COM_OWNER.FieldsChanged)
#SaveButton.Enabled := True
endroutine

mthroutine name(avExecuteAsyncOperation) options(*redefine)

case of_field(#OperationID.UpperCase)
when (= GET)
#wk_CountryCode := #ListItem.CountryCode
#CEOFF := #ListItem.OfficeNumber
#CECLNBR := #ListItem.ClientNumber
#Get.Execute returnfields(#ClientList) status(#wk_Status)
when (= SAVE)
#COM_SELF.ClearProblemHighlights
#Save.Execute filefields(#ClientList) status(#wk_Status)
endcase
endroutine

mthroutine name(uExecute) options(*redefine)

* Clear any previous messages
#avFrameworkManager.avClearMessages requester(#COM_OWNER)
#GotoFreeState := false

* Do any execution logic defined in the ancestor
#COM_ANCESTOR.uExecute gotofreestate(#GotoFreeState) switchcallerreference(#SwitchCallerReference)

if (#COM_OWNER.avAssociatedInstance *IsNot *NULL)
* Get the selected list item and country code from the ListManager
#ListItem <= #CMGEXCObjectManager.GetItem( #COM_OWNER.avAssociatedInstance )
#COM_OWNER.avQueueAsyncOperation busystatetext('Loading') operationid(GET)
else
#avFrameworkManager.avIssueMessage text('No current item found') requester(#COM_OWNER)
endif
endroutine

evtroutine handling(#Get.Completed)
if (#wk_Status = OK)
#wk_string6 := #CEEDTE.AsDate( CCYYMMDD ).AsDisplayString( MMsDDsCCYY )
#SaveButton.Enabled := False
#DeleteButton.Enabled := True
endif
endroutine

evtroutine handling(#Get.Failed) handled(#pHandled) reason(#pReason)
#pHandled := True
#avFrameworkManager.avRecordTraceAValue component(#COM_OWNER) event('GET Failed') avalue(#pReason)
endroutine

evtroutine handling(#SaveButton.Click)
#COM_OWNER.avQueueAsyncOperation busystatetext('Saving') operationid(SAVE) receivesystemmessages(False)
endroutine


evtroutine handling(#MGSConfirmDialog.Button1Clicked)
#CECLNAM := "***DELETE***"
#CEDAYS := 999
#CELAMT := 0
#CEDESC := ""
#wk_string6 := ""
#COM_OWNER.avQueueAsyncOperation busystatetext('Saving') operationid(SAVE) receivesystemmessages(False)

endroutine

evtroutine handling(#DeleteButton.Click)
#MGSConfirmDialog.ShowDialogBox( "Confirm Delete?!" "Yes" "No" )
endroutine

evtroutine handling(#save.Completed)
#avFrameworkManager.avRecordTraceAValue component(#COM_OWNER) event('Save Completed') avalue(#wk_Status)

if (#wk_Status = OK)
#SaveButton.Enabled := False

if (#CECLNAM *EQ "***DELETE***")
* Delete Complete
#avFrameworkManager.avIssueMessage autoclear(True) requester(#COM_OWNER) clearexistingmessages(True) text('Delete Completed Successfully') tomainform(False)
#DeleteButton.Enabled := False
* #COM_OWNER.avCloseForm
else
* Save Completed
#avFrameworkManager.avIssueMessage autoclear(True) requester(#COM_OWNER) clearexistingmessages(True) text('Save Completed Successfully') tomainform(False)
endif

#CMGEXCOBJECTMANAGER.RefreshInstanceList

else
#COM_SELF.HighlightProblems
endif

endroutine

evtroutine handling(#Save.Failed) handled(#pHandled) reason(#pReason)
#avFrameworkManager.avRecordTraceAValue component(#COM_OWNER) event('Save Failed') avalue(#pReason)
#pHandled := True
endroutine

end_com
eddie9394
Posts: 23
Joined: Tue Aug 14, 2018 11:03 pm

Re: Cannot read property 'mthREMOVEFIRST' of null

Post by eddie9394 »

Found my problem! The #COM_OWNER.avCloseForm have to be completely out of scope of the Save.Completed and the avExecuteAsyncOperation
:roll: :roll: :roll:
MarkD
Posts: 692
Joined: Wed Dec 02, 2015 9:56 am

Re: Cannot read property 'mthREMOVEFIRST' of null

Post by MarkD »

So did you trigger its execution on a short delay timer?
eddie9394
Posts: 23
Joined: Tue Aug 14, 2018 11:03 pm

Re: Cannot read property 'mthREMOVEFIRST' of null

Post by eddie9394 »

Yes, did it with a timer. THANKS for your support!
MarkD
Posts: 692
Joined: Wed Dec 02, 2015 9:56 am

Re: Cannot read property 'mthREMOVEFIRST' of null

Post by MarkD »

This will be simple in the next version ...............

#Com_Owner.avCloseForm has new optional Delay() parameter
The Delay() parameter may be used to delay the close operation to allow already stacked or scoped operations to completed first.
The value specified is in milliseconds. The default value is Delay(0). Values <= 0 mean no delay is used.
Post Reply