11.05.2010, 11:12 | #1 |
Участник
|
Не выделяется Recid в Dynax2009
Доброго времени суток!
Запускаю джоб (DAX 2009 SP1, SQL Server 2005) X++: PurchParmSubTable table; ; table.OrigPurchId = "03184"; table.ParmId = "SID0937843"; table.PurchName = "Fibber Global Tech Limited"; table.TableRefId = "SID0937844"; try { table.insert(); } catch { error("error"); } |
|
11.05.2010, 11:18 | #2 |
Участник
|
А в таблице SystemSequences для строки с TABID == tablenum(PurchParmSubTable) какие значения в NEXTVAL/MINVAL/MAXVAL?
|
|
|
За это сообщение автора поблагодарили: Lemming (10). |
11.05.2010, 11:20 | #3 |
Участник
|
Вы перевходили в Ax? Не может быть такого, что был вызван PurchFormLettrer.suspendRecIDs в той же сессии?
|
|
|
За это сообщение автора поблагодарили: MikeR (7). |
11.05.2010, 11:37 | #4 |
Участник
|
У нас в этой таблице вообще только одна запись
|
|
11.05.2010, 13:01 | #5 |
Участник
|
Надо смотреть в компании dat.
__________________
Ivanhoe as is.. |
|
11.05.2010, 14:57 | #6 |
Участник
|
|
|
11.05.2010, 15:29 | #7 |
Участник
|
Ну, соответственно, если не было suspension of recId allocation (см. пост Максима выше), то должно сохранять запись со значением RecId == NextVAL
|
|
11.05.2010, 16:20 | #8 |
Участник
|
suspension of recId allocation не было, но все равно вместо нормального recid приходит 0
|
|
11.05.2010, 16:36 | #9 |
Участник
|
2 Oleg
Попробуйте дописать спереди NextVal какую нибудь циферку и перегрузите АОС. После этого все так же? Последний раз редактировалось trud; 11.05.2010 в 16:38. |
|
11.05.2010, 16:48 | #10 |
Участник
|
|
|
11.05.2010, 20:07 | #11 |
Member
|
Стоит попробовать компиляцию таблицы и реиндексацию объектов приложения.
__________________
С уважением, glibs® |
|
12.05.2010, 11:39 | #12 |
Участник
|
|
|
12.05.2010, 18:07 | #13 |
Участник
|
Сделал синхронизацию, переиндексацию (для всех таблиц), глоб. компиляцию. Удалил запись в systemSequences кот. относится к PurchParmSubTable. После всего наблюдается след. эффект: джоб работает стабильно, все хорошо до тех пор, пока не делается попыток разнести счет(накладную) по поставщику. после этого опять та же ошибка. Если перезайти в Аксапту, то все повторяется - джоб опять работает и т.д..
А это разве плохо? Я смотрел в отладчике - при разноске счета(накладной) по поставщику PurchFormLettrer.suspendRecIDs вызывается для каждого счета, и все это в одной сессии. |
|
14.05.2010, 12:23 | #14 |
Участник
|
Разобрался. Ключевым моментом оказалось использование разработчиками объекта RecordInsertList для вставки запиесй.
Во время разноски используется метод X++: PurchFormLettrer.suspendRecIDs() Вставка происходит след образом - табл. purchParmTable.insert, внутри Insert вызывается метод X++: purchParmSubTable::createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true) X++: purchParmSubTable.insert() X++: this.insertPurchParmSubTable(purchParmSubTable) Второй раз вызов createFromPurchParmTable (уже с параметром _insert = true) происходит при отработке метода X++: protected void recordInsertListInsert() { recordInsertPurchParmTable.insertDatabase(); recordInsertPurchParmSubTable.insertDatabase(); recordInsertPurchParmLine.insertDatabase(); recordInsertPurchParmLine_Asset.insertDatabase(); this.removeRecIdSuspension(); } X++: recordInsertPurchParmTable.insertDatabase() А происходит повторный вызов из-за того, что у нас включено логирование на таблице purchParmSubTable (на Insert). Как только отключили логирование все заработало. |
|
|
За это сообщение автора поблагодарили: AlGol (1), lev (2), Ivanhoe (3), gl00mie (5), S.Kuskov (3). |
14.05.2010, 12:41 | #15 |
Участник
|
Спасибо за отчет.
А можно попросить написать резюме буквально в двух предложениях (для консультантов : при таких-то условиях не работает то-то, обходить проблему - так-то.
__________________
Ivanhoe as is.. |
|
14.05.2010, 13:11 | #16 |
Участник
|
Если при разноске счета на оплату (накладной) по закупке появляется ошибка "Невозможно создать запись ... База данных SQL обнаружила ошибку", проверить настроено ли логирование на вставку записей по этой таблице (Администрирование -> Журнал базы данных). Если настроено, отключить.
Также в сообщении об ошибке кроме таблицы PurchParmSubTable могут быть таблицы PurchParmTable, PurchParmLine, PurchParmLine_Asset. После появления этой ошибки обязятельно перезайти в Аксапту. |
|
|
За это сообщение автора поблагодарили: vmoskalenko (0). |
14.05.2010, 14:06 | #17 |
Мрачный тип
|
Смысл временного отключения генерации RecId ?
Боятся, что кончится быстро ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
16.06.2010, 14:24 | #18 |
Участник
|
Журнал БД отключен, но ошибка есть
Поиск по базе знаний MS находит такую запись: Error message when you post a purchase order in Microsoft Dynamics AX 2009: "Cannot create a record in Purchase order header - Updating table (PurchParmSubTable)" (доступ к Partner / Customer Source). Но при попытке открыть статью - выдает ошибку "Примите наши извинения... При получении данного документа произошла ошибка. Повторите поиск.". Аналогичная ошибка при открытии других статей. Попытка скачать обновление напрямую (используя совет с форума) не дает результата: "В статья базы знаний нет открытого для скачивания исправления. Пожалуйста свяжитесь со службой поддержки, если Вам нужна срочная помощь." Ждем ответа от MS
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Daiver (1). |
16.06.2010, 17:13 | #19 |
Участник
|
Статья KB961909, в ней описание нужных исправлений, поэтому нет хот-фикса для загрузки. Ошибка появляется как для включенного Журнала БД, так и для включенного аудит-трейла Life-Science.
Я так понимаю, оба случая - довольно редкие, специально настраивать журнал БД на эту таблицу я не вижу смысла, Life-Science вообще мало у кого куплен
__________________
Ivanhoe as is.. |
|
04.07.2011, 11:24 | #20 |
Участник
|
имхо, дело не в генерации RecId, а в том, что insert срабатывает два (!) раза.
сначала создал свою ошибка работы RecordInsertList?, потом заметил эту тему логгирование выключено |
|