21.02.2007, 12:12 | #1 |
Участник
|
внесение новых клиентов
такая ерунда нужно перенести клиентов в уже рабочую базу...
раньше заносила по принципу. Axapta_Code = strRFix(Int2str(countCustind),5,"0"); где countCustind начинался с 1.. А теперь нужно добавлять записи в уже существующую таблицу.. понимаю, что нужно идти в номерные серии NumberSequenceTable и смотреть какой следующий номер будет у серии документов по клиенту.. но как лучше это прописать ума не приложу... может кто что подскажет... |
|
21.02.2007, 12:20 | #2 |
Участник
|
В принципе, если у вас код клиента всегда имеет именно приведенный вами формат, то можно просто найти максимальное значение кода клиента в таблице клиентов (maxof). Вытащить из него число и присвоить его countCustInd. И делать, как вы делали ранее.
А если через номерную серию идти, то вот пример: (для непрерывной) (выдернуто и переделано из класса SalesAutoCreate) X++: static void TestContinuousNumberSeq(Args _args) { NumberSeq num; SalesId tmpSalesId; SalesTable salesTable; ; salesTable.clear(); salesTable.initValue(); num = NumberSeq::newGetNumFromCode("TEST", true);//(SalesParameters::numRefSalesId()); tmpSalesId = num.num(); box::info(tmpSalesId); if (true)//SalesTable::exist(tmpSalesId)) { num.abort(); checkFailed("@SYS55111"); checkFailed(strfmt("@SYS55112", tmpSalesId)); throw error("@SYS23020"); } salesTable.salesId = tmpSalesId; num.used(); } |
|
21.02.2007, 13:42 | #3 |
Участник
|
спасибо... получилось всё нормально.
|
|
22.02.2007, 14:39 | #4 |
Участник
|
Что-то несуразица какая-то выходит...
custTable.clear() ; num = NumberSeq::newGetNumFromCode("КЛ", true); r= num.num(); countCustind =str2int(r); if (!custUpdate) countCustind++; Axapta_Code = strRFix(Int2str(countCustind),5,"0"); Само интересно у меня в номерных сериях следующий номер = 15420, а если проверять через дебаг, то почему -то 4301 |
|
22.02.2007, 14:46 | #5 |
Программатор
|
Видать у вас где то в номерных сериях так сказать высвободился номер и Акса хочет его заюзать...
|
|
22.02.2007, 14:49 | #6 |
Участник
|
1. Для получения серии документов по клиенту лучше использовать метод таблицы СustParameters::numRefCustAccount()
X++: NumberSeq::newGetNum(ustParameters::numRefCustAccount()) То есть в вашем случае нужно просто указать Axapta_Code = num.num() А номерную серию настроить так, чтобы в ней были эти ваше 5 нулей спереди. (странный кстати код - пять нулей и число) И сделайте очистку ей.(номерной серии) |
|
22.02.2007, 14:51 | #7 |
Участник
|
|
|
22.02.2007, 14:57 | #8 |
Программатор
|
Основное/настройка/серии документов/сери документов
находите вашу серию и чистите (кнопка очистка кажися справа) Последний раз редактировалось Sada; 22.02.2007 в 14:59. |
|
22.02.2007, 14:58 | #9 |
Участник
|
Цитата:
Сообщение от kashperuk
1. Для получения серии документов по клиенту лучше использовать метод таблицы СustParameters::numRefCustAccount()
2. И если Вы уже используете номерные серии, то уже их и используйте. А у вас получается, что используя номерные серии вы делаете свой инкремент. То есть в вашем случае нужно просто указать Axapta_Code = num.num() А номерную серию настроить так, чтобы в ней были эти ваше 5 нулей спереди. (странный кстати код - пять нулей и число) И сделайте очистку ей.(номерной серии) num = NumberSeq::newGetNumFromCode("КЛ", true); Axapta_Code = num.num() ; Но всё равно Axapta_Code равен не 15***, а 4*** |
|
22.02.2007, 15:00 | #10 |
Участник
|
|
|
22.02.2007, 15:03 | #11 |
Программатор
|
А тестовая база есть? Давно этого не делал, врать не буду - не помню, но по идее не должны.
|
|
22.02.2007, 15:04 | #12 |
Участник
|
всё... тут просто косяки в базе разработок были.. В тестовой подцепила- всё нормально... Спасибо...
Кстати.. мальчики с наступающим праздником... |
|
22.02.2007, 15:05 | #13 |
Участник
|
|
|
22.02.2007, 15:05 | #14 |
Участник
|
всё... тут просто косяки в базе разработок были.. В тестовой подцепила- всё нормально... Спасибо...
Кстати.. мальчики с наступающим праздником... |
|