AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2010, 15:54   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
? Невозможно создать запись
Создаю клиента, получаю ошибку
Невозможно создать запись в Клиенты (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
При чем RECID = 5637227394 уникальный создается, но не сохраняет запись.
В таблице 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  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
А при чем тут рекАйди? Запись не создается в таблице Клиентов. Уникальным в ней должно быть AccountNum. Возможно, клиент C01006 в это одной компании уже есть. Еще PartyId надо проверить. Может он не генерится.
Старый 10.08.2010, 16:09   #3  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от oip Посмотреть сообщение
А при чем тут рекАйди? Запись не создается в таблице Клиентов. Уникальным в ней должно быть AccountNum. Возможно, клиент C01006 в это одной компании уже есть. Еще PartyId надо проверить. Может он не генерится.
AccountNum это значение уникально (номерная серия), в данном случае "C01006" как пример.

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  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от Poleax Посмотреть сообщение
PartyId = ''
Ну вот и ответ. Посмотрите в CustTable.insert строку
X++:
this.PartyId = DirParty::createPartyFromCommon(this).PartyId;
и разберитесь, что у вас не настроено. Подробно про настройку Адресной книги не пишу, ветка все-таки в разделе "Программирование".
Старый 10.08.2010, 16:19   #5  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от oip Посмотреть сообщение
Ну вот и ответ. Посмотрите в CustTable.insert строку
X++:
this.PartyId = DirParty::createPartyFromCommon(this).PartyId;
и разберитесь, что у вас не настроено. Подробно про настройку Адресной книги не пишу, ветка все-таки в разделе "Программирование".
Метод выглядит так (все стандартно):
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;
}
localDirPartyId все время генерирует новый номер, согласно настройкам номерной серии.
this.PartyId = localDirPartyId; но после super()

У меня до этого места не доходит. Валится с ошибкой.
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 10.08.2010, 16:24   #6  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Да, точно. В пятом роллапе уже другой код. Значит у вас в таблице клиентов есть строка с пустым PartyId. Ее там быть не должно. Запись же теперь сначала с пустым PartyId инсертится, а потом уже дуапдейтится.
За это сообщение автора поблагодарили: Poleax (4).
Старый 10.08.2010, 16:27   #7  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от oip Посмотреть сообщение
Да, точно. В пятом роллапе уже другой код. Значит у вас в таблице клиентов есть строка с пустым PartyId. Ее там быть не должно. Запись же теперь сначала с пустым PartyId инсертится, а потом уже дуапдейтится.
Да, ты прав. Нашелся клиент с пустым PartyId.
Благодарю за наводку
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Невозможно отредактировать запись в Табель учета рабочего времени(итоги) (RPayTblTrans) NNB DAX: Программирование 5 05.02.2009 09:51
Очень просто: создать новую запись в таблице Hobo DAX: Программирование 20 11.07.2006 13:02
Ошибка при импорте демоданных (Axapta 3.0 CIS SP1) KocDm DAX: Администрирование 2 11.08.2005 12:04
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
Невозможно создать таблицу chel DAX: Программирование 0 21.04.2004 21:02

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:25.