Показать сообщение отдельно
Старый 02.12.2010, 12:24   #8  
Proba is offline
Proba
Участник
 
60 / 13 (1) ++
Регистрация: 25.06.2007
Адрес: Красноярск\Зеленогорск
Подниму старую тему...

Я окончательно запутался, и ни че не понимаю!
Создал непрерывную номерную серию. Создается, очищается, и заново создается она без проблем в ТЕКУЩЕЙ сесии.
Стоит мне повторно зайти в AX, и удалить строку из таблицы (или нажать кнопку очистить для текущей номерной серии),
то ни чего не происходит!

Смотрю код, и вижу что всему виной один метод, NumberSeqCleanUp::isProcessDead(). Который вызывается 2мя путями:
1. \Classes\NumberSeq\release(Он у меня отрабатывает на момент УДАЛЕНИЯ записи из моей таблицы)
2. \Classes\NumberSeqCleanUp\cleanupDeadProc(Вызывается в момент нажатия кнопки ОЧИСТИТЬ)

Код метода NumberSeqCleanUp::isProcessDead():

public client server static boolean isProcessDead(NumberSequenceList numberSequenceList)
{
xSession xSession = new xSession(numberSequenceList.SessionId);
;
if (xSession)
{
if (xSession.loginDate() == dateNull())
return true;

if (xSession.loginDate() != numberSequenceList.SessionLoginDate)
return true;

if (xSession.loginTime() != numberSequenceList.SessionLoginTime)
return true;
}
return false;
}

Собственно вопрос в следующем: В чем смысл данных сравнений??? Ведь если мы xSession инициализируем из
numberSequenceList.SessionId, значит эти условия НИ КОГДА не выполнятся и метод вернет false!
Или я не прав??? Тогда почему у меня все время
xSession.loginDate() == numberSequenceList.SessionLoginDate
xSession.loginTime() == numberSequenceList.SessionLoginTime

И собственно почему можно спокойно очищать(делать свободным) только в пределах ТЕКУЩЕЙ сесии?

все что нашел по слову isProcessDead это
Number sequnec lock

DAX4(4.0.2503.724)