Обещанный пример "самодельных" RecId для 3.0
В вложении проект с парой классов и джобом
джоб также повторю здесь
X++:
static void recIdExtraTest(Args _args)
{
mSequence_RecIdExtra seq = new mSequence_RecIdExtra();
RecIdExtraTest recIdExtraTest;
int i;
;
// эта строка запрещает для таблицы раздачу стандартных RecId
// должна быть выполнена до начала пользования новым нумератором
// например можно поместить в appl.startupPost()
new SystemSequence().suspendRecIds(tablenum(RecIdExtraTest));
for (i = 1; i <= 1000; i++)
{
// Раздача самодельных RecId
recIdExtraTest.(fieldnum(Common, RecId)) = seq.value();
recIdExtraTest.insert();
}
}
Если перекрывать insert() и писать код по присвоению RecId в нем, то имеет смысл сделать singleton для mSequence_RecIdExtra поместив его в GlobalCache или непосредственно в Applicаtion
Присвоение RecId только вручную. Возможности глобально сказать что для таких то таблиц брать RecId из нового нумератора нельзя (даже перекрыв insert() могут остаться вызовы doInsert() и вставка через RecordInsertList). Родной режим потабличного RecId в трешке хоть и есть, но неработоспособен (поищите на форуме)
Если захочется еще нумераторов, то дублируете mSequence_RecIdExtra, называете как хочется и используете.
Предупреждение - все эти извращения на свой страх и риск. Прежде чем использовать на промышленных инсталляциях тестировать и еще раз тестировать. Все это работает и проверено годами, но осторожность не помешает
В вашем случает наверняка имеет смысл сделать это для SalesParm*/PurchParm* таблиц