TestComplete records using information about the objects you interact with and the actions you take. When a test is being played back, TestComplete looks for those same object properties to know where to navigate on screen. This same process is used for desktop, web, and mobile applications. Sometimes these objects are generated dynamically, which means those object properties might not always be the same every time the test plays back.
If you're getting an "Object does not Exist" error on playback, it may be necessary to get into the NameMapping to change how TestComplete locates that object. The article and the video links below go over ways to change the NameMapping for a particular object so it can be reliably identified.
Handling the 'Object Does Not Exist' Error
Short Videos
Editing properties of a control
Using the wildcard to deal with dynamic controls
Using the extended find feature to search for a control