When identifying desktop applications and objects, TestComplete uses the properties of the object and Windows processes to identify and recognize objects. If your test runs the application executable each time it runs a test, you may have issues if the application is already open on your system. If the application is already open, TestComplete will open a second instance, which will make it difficult to recognize and access objects.
The best practice is to make sure, when recording tests, that your application starts and ends in the same state for a given test. If TestComplete is having trouble recognizing objects, the first thing I'd check is making sure it's not opening a new instance of the application when you rerun your test.