10.08.2010, 15:54 | #1 |
Модератор
|
Невозможно создать запись
Создаю клиента, получаю ошибку
Невозможно создать запись в Клиенты (CustTable). Счет клиента: C01006, .Запись уже существует. X++: [c] \Classes\Info\add 14 [s] \Classes\xRecord\Insert [s] \Data Dictionary\Tables\CustTable\Methods\Insert 27 [s] \Classes\xRecord\dbOpInTransaction [c] \Classes\FormDataSource\write [c] \Forms\CustTable\Data Sources\CustTable\Methods\write 28 [c] \Classes\FormDataSource\leaveRecord [c] \Classes\FormRun\task [c] \Forms\CustTable\Methods\task 17 [c] \Classes\SysSetupFormRun\task 20 В таблице SystemSequences поле NEXTVAL = 5637227400 Таблицу TransactionLog чистил. Переиндексацию и синхронизацию делал. Глюк только в одной компании. Что требуется исправить? P.S. Ax 2009 Sp1 RU5
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. Последний раз редактировалось Poleax; 10.08.2010 в 15:59. |
|
10.08.2010, 16:00 | #2 |
Axapta
|
А при чем тут рекАйди? Запись не создается в таблице Клиентов. Уникальным в ней должно быть AccountNum. Возможно, клиент C01006 в это одной компании уже есть. Еще PartyId надо проверить. Может он не генерится.
|
|
10.08.2010, 16:09 | #3 |
Модератор
|
Цитата:
PartyId = '' при вызове super() в \Data Dictionary\Tables\CustTable\Methods\Insert
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. Последний раз редактировалось Poleax; 10.08.2010 в 16:12. |
|
10.08.2010, 16:12 | #4 |
Axapta
|
|
|
10.08.2010, 16:19 | #5 |
Модератор
|
Цитата:
X++: void insert() { SyncAppCompany syncAppCompany; DirPartyId localDirPartyId; ; ttsbegin; this.setNameAlias(); // <GEEU> this.setInventProfileId_RU(); // </GEEU> // Check if not associated to Party if (!this.PartyId) { // Create a Party entry for customer localDirPartyId = DirParty::createPartyFromCommon(this).PartyId; } else { DirParty::updatePartyFromCommonInsert(this.PartyId,this); } super(); //When some field of a new customer is invalid and fails to be inserted, the PartId should be null. if(localDirPartyId) { this.PartyId = localDirPartyId; this.doUpdate(); } SalesJournalAutoSummary::initAllFromCustTable(this); smmTransLog::initTrans(this, smmLogAction::insert); // Integrate this new customer with the integrated Project Server app associated with the current company syncAppCompany = SyncAppCompany::find(curext(), SyncAppType::ProjectServer); if (syncAppCompany) { SyncCustTableLookup::insertLookupNodes(syncAppCompany.AppId, curext(), this.AccountNum, this.Name); } // Add links to contact person ContactPerson::addCustVendLink(this.TableId, this.PartyId, this.AccountNum); ttscommit; } this.PartyId = localDirPartyId; но после super() У меня до этого места не доходит. Валится с ошибкой.
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
10.08.2010, 16:24 | #6 |
Axapta
|
Да, точно. В пятом роллапе уже другой код. Значит у вас в таблице клиентов есть строка с пустым PartyId. Ее там быть не должно. Запись же теперь сначала с пустым PartyId инсертится, а потом уже дуапдейтится.
|
|
|
За это сообщение автора поблагодарили: Poleax (4). |
10.08.2010, 16:27 | #7 |
Модератор
|
Цитата:
Благодарю за наводку
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
|
|