Получается такая ситуация, как ее преодолет незнаю.
Ниже приведена джоба, которая создает и освобождаем номер. Номерная серия должна быть Continious.
X++:
static void Job9(Args _args)
{
NumberSeq numberSeq;
Num number;
;
// Method DataSource.create() - craete the number
numberSeq = NumberSeq::newGetNumFromCode('Acco_11',
true);
if (numberSeq)
{
number = numberSeq.num();
info(number);
}
// Method DataSource.delete() - delete the number;
ttsbegin;
numberSeq.abort();
//super() - delete line
ttscommit;
}
Если мы работаем в одной компании то все ок.
Можно зайти в Basic->Setup->Number sequence->NumberSequence и посмотреть List.
На отркывшейся форме видно что номер имеет статус Free
Переделаем джобу, для вытягивания номерной серии из другой компании.
X++:
static void Job9(Args _args)
{
NumberSeq numberSeq;
Num number;
;
// Method DataSource.create() - craete the number
changecompany('VVV')
{
numberSeq = NumberSeq::newGetNumFromCode('Acco_11',
true);
if (numberSeq)
{
number = numberSeq.num();
info(number);
}
}
// Method DataSource.delete() - delete the number;
ttsbegin;
changecompany('VVV')
{
numberSeq.abort();
}
//super() - delete line
ttscommit;
}
Перейдем в другую компани и посмотрим там NumberSequenceList, там номер имеет тип Active-Undecided.
Таблица NumberSequenceList будет проапдейтчена, если переменная abortIdx больше нуля. При вызове numberSeq.abort();
происходить увеличение abortIdx на единицу, т.е. все ок вродебы.
Но последний ttscommit для апдейта таблици NumberSequenceList, должен переключится в компанию VVV, но при переключении в эту компанию вызывается ttsbegin, который сбрасывает переменную abortIdx.
Application->ttsNotifyCommit()->this.numberSeqGlobal().ttsNotifyCommit();->this.runAutoClean();->Line 23
В результате маемо те що маемо =), т.е. Undecided.
Убрать просто ttsbegin-ttscommit я не могу потомучто если у нас не выполнится удаление линии на форме, то и номерная серия должна вернутся в исходное положение, откатится =)