Добыты некоторые знания о номерных сериях в Axapta.
Была поставлена задача - создать объект закупки со строками для другой компании. При добавлении новой строки в таблицу Закупки, требуется присвоить соответствующему полю уникальный номер. Для Закупки – это будет «Зкп.######».
Для решения задачи присвоения уникального номера я использовал класс NumberSeq. Логика поиска класса ответственного за назначение номерных серий была следующая. В стандартной Axapta при добавлении новой строки в таблицу Закупок используется класс PurchTableType. В этом классе есть метод, запускающий метод класса NumberSeq:
X++:
PurchId getNewPurchId()
{;
purchNumberSeq = NumberSeq::newGetNum(purchParameters::numRefPurchId(), true);
return purchNumberSeq.num();
}
Я использовал этот метод, переписав его в мой класс один в один.
ClassDeclaration:
X++:
class HB_SalesPurchGeneric
{
NumberSeq purchNumberSeq;
}
new:
X++:
void new()
{
purchNumberSeq = new NumberSeq();
}
main:
X++:
static void main(Args args)
{
HB_SalesPurchGeneric hb_SalesPurchGeneric;
PurchId numberSeqPurchId;
hb_SaleSPurchGeneric = new HB_SalesPurchGeneric();
. . . . .. . . . .. . . . . . . . . . . . . . . .
//Получаю новый номер серии для Закупки
numberSeqPurchId = hb_SaleSPurchGeneric.getNewPurchId();
. . . . .. . . . .. . . . . . . . . . . . . . . .
}
Для объектов Заказы существует класс SalesTableType, в котором есть аналогичный метод
X++:
SalesId getNewSalesId()
{
salesIdSeq = NumberSeq::newGetNum(SalesParameters::numRefSalesId(), true);
return salesIdSeq.num();
}