Скорее всего проблема в том, что профайл кешируется, так как предполается что в него помещают не часто изменяемую информацию. И получается так, что при считывании поля из профайла возвращается старое значение.
Для решения проблемы вы можете:
1. Перенести счетчик в обычную форму и обращаться с ним как с обычным документом.
2. Продолжать хранить в профайле, но обращаться к профайлу по UNID. Например:
...
Set profile = db.GetProfileDocument("profile")
unid$ = profile.UniversalID
Delete profile
Set profile = db.GetDocumentByUNID(unid$)
...
При этом значения полей профайла будут выдавать реально хранимые значения.
Размещать счетчик лучше в той же базе.