AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 11.05.2010, 11:12   #1  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Не выделяется 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");
    }
В результате вываливается ошибка (см. картинку). Как показывает профайлер кода, при вставке записи в базу не передается Recid (вернее, передается 0). Наших доработок на таблице нет, метод Insert не перекрыт, на "братской" таблице SalesParmSubTable все нормально работает. Таблицу синхронизировал (никаких ошибок не было), удалял в SQL, потом восстанавливал через синхронизацию в DynAx - не помогает. Что надо пнуть, чтобы восстановить выделение recid?
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	2.JPG
Hits:	555
Größe:	51,7 KB
ID:	5813   Klicken Sie auf die Grafik für eine größere Ansicht

Name:	3.JPG
Hits:	635
Größe:	31,4 KB
ID:	5814  

Alt 11.05.2010, 11:18   #2  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
А в таблице SystemSequences для строки с TABID == tablenum(PurchParmSubTable) какие значения в NEXTVAL/MINVAL/MAXVAL?
This post has been rated by: Lemming (10).
Alt 11.05.2010, 11:20   #3  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
Вы перевходили в Ax? Не может быть такого, что был вызван PurchFormLettrer.suspendRecIDs в той же сессии?
This post has been rated by: MikeR (7).
Alt 11.05.2010, 11:37   #4  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Zitat:
Zitat von kashperuk Beitrag anzeigen
А в таблице SystemSequences для строки с TABID == tablenum(PurchParmSubTable) какие значения в NEXTVAL/MINVAL/MAXVAL?
У нас в этой таблице вообще только одна запись
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	4.JPG
Hits:	586
Größe:	38,5 KB
ID:	5816  
Alt 11.05.2010, 13:01   #5  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
Надо смотреть в компании dat.
__________________
Ivanhoe as is..
Alt 11.05.2010, 14:57   #6  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Zitat:
Zitat von Ivanhoe Beitrag anzeigen
Надо смотреть в компании dat.
Пардон, туплю, конечно же, запись есть.

MinVal = 1
MaxVal = 9223372036854775807
NextVal = 5637171578
Alt 11.05.2010, 15:29   #7  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Zitat:
Zitat von Shirmin Oleg Beitrag anzeigen
Пардон, туплю, конечно же, запись есть.

MinVal = 1
MaxVal = 9223372036854775807
NextVal = 5637171578
Ну, соответственно, если не было suspension of recId allocation (см. пост Максима выше), то должно сохранять запись со значением RecId == NextVAL
Alt 11.05.2010, 16:20   #8  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
suspension of recId allocation не было, но все равно вместо нормального recid приходит 0
Alt 11.05.2010, 16:36   #9  
trud ist offline
trud
Участник
Лучший по профессии 2017
 
1.039 / 1635 (57) ++++++++
Registriert seit: 07.06.2003
Blog-Einträge: 1
2 Oleg
Попробуйте дописать спереди NextVal какую нибудь циферку и перегрузите АОС.
После этого все так же?

Geändert von trud (11.05.2010 um 16:38 Uhr)
Alt 11.05.2010, 16:48   #10  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Zitat:
Zitat von trud Beitrag anzeigen
2 Oleg
Попробуйте дописать спереди NextVal какую нибудь циферку и перегрузите АОС.
После этого все так же?
Не помогло
Alt 11.05.2010, 20:07   #11  
glibs ist offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4.942 / 911 (40) +++++++
Registriert seit: 10.06.2002
Ort: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Стоит попробовать компиляцию таблицы и реиндексацию объектов приложения.
__________________
С уважением,
glibs®
Alt 12.05.2010, 11:39   #12  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Zitat:
Zitat von glibs Beitrag anzeigen
Стоит попробовать компиляцию таблицы и реиндексацию объектов приложения.
Два раза джоб отработал нормально, потом опять ошибка
Alt 12.05.2010, 18:07   #13  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Сделал синхронизацию, переиндексацию (для всех таблиц), глоб. компиляцию. Удалил запись в systemSequences кот. относится к PurchParmSubTable. После всего наблюдается след. эффект: джоб работает стабильно, все хорошо до тех пор, пока не делается попыток разнести счет(накладную) по поставщику. после этого опять та же ошибка. Если перезайти в Аксапту, то все повторяется - джоб опять работает и т.д..

Zitat:
Zitat von belugin Beitrag anzeigen
Вы перевходили в Ax? Не может быть такого, что был вызван PurchFormLettrer.suspendRecIDs в той же сессии?
А это разве плохо? Я смотрел в отладчике - при разноске счета(накладной) по поставщику PurchFormLettrer.suspendRecIDs вызывается для каждого счета, и все это в одной сессии.
Alt 14.05.2010, 12:23   #14  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Разобрался. Ключевым моментом оказалось использование разработчиками объекта RecordInsertList для вставки запиесй.

Во время разноски используется метод
X++:
PurchFormLettrer.suspendRecIDs()
отключение автовыделения recid при добавлении записей, соотв. дальше, при вставке, этот recid нужно явно присвоить.

Вставка происходит след образом - табл. purchParmTable.insert, внутри Insert вызывается метод
X++:
purchParmSubTable::createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true)
кот. вызывает метод
X++:
purchParmSubTable.insert()
В моем случае createFromPurchParmTable отрабатывал два раза: первый раз он вызывался с параметром _insert = false. Причем в методе
X++:
this.insertPurchParmSubTable(purchParmSubTable)
как раз и происходит "ручное" присвоение recid для purchParmSubTable.

Второй раз вызов createFromPurchParmTable (уже с параметром _insert = true) происходит при отработке метода
X++:
protected void recordInsertListInsert()
{
    recordInsertPurchParmTable.insertDatabase();
    recordInsertPurchParmSubTable.insertDatabase();
    recordInsertPurchParmLine.insertDatabase();
    recordInsertPurchParmLine_Asset.insertDatabase();
    this.removeRecIdSuspension();
}
в частности метода
X++:
recordInsertPurchParmTable.insertDatabase()
и в этот момент уже никто не выделяет recid. Соотв, вываливается ошибка и при этом НИКТО НЕ СНИМАЕТ ОТКЛЮЧЕНИЕ АВТОВЫДЕЛЕНИЯ recid на таблицах. Поэтому и джоб переставал работать после попытки разнести счет или накладную.

А происходит повторный вызов из-за того, что у нас включено логирование на таблице purchParmSubTable (на Insert). Как только отключили логирование все заработало.
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	1.JPG
Hits:	584
Größe:	33,5 KB
ID:	5828   Klicken Sie auf die Grafik für eine größere Ansicht

Name:	2.JPG
Hits:	584
Größe:	66,2 KB
ID:	5829  

Klicken Sie auf die Grafik für eine größere Ansicht

Name:	3.JPG
Hits:	604
Größe:	54,9 KB
ID:	5830  
This post has been rated by: AlGol (1), lev (2), Ivanhoe (3), gl00mie (5), S.Kuskov (3).
Alt 14.05.2010, 12:41   #15  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
Спасибо за отчет.
А можно попросить написать резюме буквально в двух предложениях (для консультантов : при таких-то условиях не работает то-то, обходить проблему - так-то.
__________________
Ivanhoe as is..
Alt 14.05.2010, 13:11   #16  
Shirmin Oleg ist offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Registriert seit: 26.03.2004
Если при разноске счета на оплату (накладной) по закупке появляется ошибка "Невозможно создать запись ... База данных SQL обнаружила ошибку", проверить настроено ли логирование на вставку записей по этой таблице (Администрирование -> Журнал базы данных). Если настроено, отключить.
Также в сообщении об ошибке кроме таблицы PurchParmSubTable могут быть таблицы PurchParmTable, PurchParmLine, PurchParmLine_Asset. После появления этой ошибки обязятельно перезайти в Аксапту.
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	2.JPG
Hits:	465
Größe:	51,7 KB
ID:	5831  
This post has been rated by: vmoskalenko (0).
Alt 14.05.2010, 14:06   #17  
TasmanianDevil ist offline
TasmanianDevil
Мрачный тип
Benutzerbild von TasmanianDevil
Злыдни
 
887 / 389 (14) ++++++
Registriert seit: 24.01.2005
Ort: Томск
Cool
Смысл временного отключения генерации RecId ?
Боятся, что кончится быстро ?
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Alt 16.06.2010, 14:24   #18  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
Журнал БД отключен, но ошибка есть

Поиск по базе знаний 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..
This post has been rated by: Daiver (1).
Alt 16.06.2010, 17:13   #19  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
Статья KB961909, в ней описание нужных исправлений, поэтому нет хот-фикса для загрузки. Ошибка появляется как для включенного Журнала БД, так и для включенного аудит-трейла Life-Science.

Я так понимаю, оба случая - довольно редкие, специально настраивать журнал БД на эту таблицу я не вижу смысла, Life-Science вообще мало у кого куплен
__________________
Ivanhoe as is..
Alt 04.07.2011, 11:24   #20  
vanokh ist offline
vanokh
Участник
 
108 / 63 (3) ++++
Registriert seit: 23.10.2008
имхо, дело не в генерации RecId, а в том, что insert срабатывает два (!) раза.
сначала создал свою ошибка работы RecordInsertList?, потом заметил эту тему

логгирование выключено
Stichworte
ax2009, purchparmsubtable, recid, ошибка

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Два RecId у одной записи таблицы sparur DAX: Программирование 33 18.12.2006 15:56
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 17:28 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.