Показать сообщение отдельно
Старый 29.08.2008, 12:48   #6  
Volodymyr is offline
Volodymyr
Участник
 
36 / 21 (1) +++
Регистрация: 03.11.2006
Адрес: Киев
Получается такая ситуация, как ее преодолет незнаю.
Ниже приведена джоба, которая создает и освобождаем номер. Номерная серия должна быть 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 я не могу потомучто если у нас не выполнится удаление линии на форме, то и номерная серия должна вернутся в исходное положение, откатится =)