db:
(Старая тема, но все еще , думаю, актуальная.)
Цитата:
Для того, чтобы убирать мусор, который может появится в случае аварийного падения аксапты между набиванием RecId в таблицу и последующим стриранием этих данных, при старте сессии чистим эту таблицу, используя в качестве критерия только SessionId. Такую чистку следует вызвывать из application.startupPost()
Мне кажется, в качестве Cookie удобно использовать LoginDateTime, а потом очищать таблицу по SessionId and LoginDateTime, как сделано в BatchRun классе, метод serverCleanUpDeadTasks:
X++:
update_recordset batch setting RetryCount = batch.RetryCount + 1, Status = BatchStatus::Ready
where batch.Status == BatchStatus::Executing
&& batch.RetryCount < batch.RetriesOnFailure
notexists join clientSessions
where batch.SessionIdx == clientSessions.SessionId
&& batch.SessionLoginDateTime == clientSessions.LoginDateTime
&& clientSessions.Status != 0;
очищать в самом классе при повторном вызове, а не application.startupPost().