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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.07.2008, 11:31   #1  
npokypatop is offline
npokypatop
Злыдни
Сотрудники компании It Box
Злыдни
 
60 / 14 (1) ++
Регистрация: 28.09.2005
Адрес: Нюрнберг
Глюк с RecId в Ax 4.0
Господа, всем доброго вторника,
на проекте возникла небольшая проблема - Аксапта отказывается вставлять запись в таблицу, аргументируя это тем, что такая запись уже есть. Помогает только тупое удаление всех записей таблицы. Ключ в таблице - по RecId. Раньше такое было редко, да и таблицы были какие-то не очень важные.
Но сейчас Аксапта отказывается вставлять запись в SysDataBaseLog, в PrintOutTable
Ругается так:

Невозможно создать запись в ...

То есть суть проблемы ясна - Аксапта генерит неуникальный RecId...
Как это можно полечить?.. При остановке AOS это тоже проходит, но не всегда, да и это не выход
__________________
Все может быть и быть все может, все может быть или не быть,
но быть того никак не может, чего совсем не может быть.
Старый 22.07.2008, 12:08   #2  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
C RecId в четверке SP2 тоже ловил непонятные глюки. Например, заметил следующую закономерность - при выполнении групповой разноски журналов одним пользователем(Главная книга / Периодические операции / Разнести журналы) другие при попытке сохранить созданный журнал часто ловят ошибку от SQl-сервера на таблице LedgerJournalTable: The INSERT statament conflicted with CHECK constraint "CK__X211X__RECID__721145A6". Смотрю это ограничение ([RECID]<>(0)) на SQL сервере и не понимаю как такое могло получиться. Получается что RecId просто не выделился. Своего кода в тех областях нет вообще. Лечится само пересозданием журнала. Разбираться не было времени пока. Кто-нибудь еще сталкивался?
Старый 22.07.2008, 12:38   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
1. Попробуйте проверить табличку SystemSequences - там хранятся системные номерные серии - для recId в том числе. Возможно сбилось значение счетчика.
2. Проверьте индексы на табличке. У меня как-то был случай - создали уникальный индекс по RecId средствами БД. DataAreaID - в индексе не было. - Соответсвенно случайным образом возникал конфликт уникальности и транзакция откатывалась. При этом Аксапта выдавала левое сообщение об ошибке.
За это сообщение автора поблагодарили: npokypatop (1).
Старый 22.07.2008, 12:39   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от npokypatop Посмотреть сообщение
То есть суть проблемы ясна - Аксапта генерит неуникальный RecId...
Откуда это известно? Она сообщает именно о такой неуникальности?

Вспомнив, что что-то этакое было у меня с таблицей PrintOutTable_Ru, порылся в своих рабочих "блогах". Нашёл вот такую тайнопись:

\Classes\PurchFormLetter_PackingSlip\writeJournal - line 6
\Classes\PrintoutTableReports_SlipsM4M7_RU\run - line 1
\Classes\PrintoutTableReports_SlipsM4M7_RU\run - line 63

"Невозможно создать запись в PrintOutTable_Ru"

И вывод: Надо искать запись с таким SalesPurchID (!!!) и удалять ее перед попыткой вставки.

Может, натолкнет на что-нибудь конструктивное...

P.S. В PrintOutTable_Ru помимо уникального ключа по RecId есть еще уникальные индексы, в которые поле RecId не входит (во всяком случае в Ax 3.0 SP4 это так).
Старый 22.07.2008, 13:07   #5  
npokypatop is offline
npokypatop
Злыдни
Сотрудники компании It Box
Злыдни
 
60 / 14 (1) ++
Регистрация: 28.09.2005
Адрес: Нюрнберг
Спасибо за совет, Gustav,
но ругается оно именно на RecId.
Замечено это было еще при разноске журналов по модулю Производство, но поскольку тогда это было в рамках обучения - меня это не очень заинтересовало (там тоже были таблицы с параметрами)
Сейчас проблема на реальном проекте - и это не все таблицы, по которым она возникает.
Если бы ошибка была в самом деле в коде, то она бы не исчезала после перезапуска АОС.
А в строке 63 метода run класса PrintoutTableReports_SlipsM4M7_RU производится именно вставка
printoutJournal.insert();
По индексам TypeSalesPurchIdLocationIdx и NumTypeIdx все в порядке. Остается только один вариант.
__________________
Все может быть и быть все может, все может быть или не быть,
но быть того никак не может, чего совсем не может быть.
Старый 22.07.2008, 13:08   #6  
npokypatop is offline
npokypatop
Злыдни
Сотрудники компании It Box
Злыдни
 
60 / 14 (1) ++
Регистрация: 28.09.2005
Адрес: Нюрнберг
Цитата:
Сообщение от Logger Посмотреть сообщение
1. Попробуйте проверить табличку SystemSequences - там хранятся системные номерные серии - для recId в том числе. Возможно сбилось значение счетчика.
2. Проверьте индексы на табличке. У меня как-то был случай - создали уникальный индекс по RecId средствами БД. DataAreaID - в индексе не было. - Соответсвенно случайным образом возникал конфликт уникальности и транзакция откатывалась. При этом Аксапта выдавала левое сообщение об ошибке.
Спасибо, сейчас попробую
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: Managing Your Supply Chain Using Microsoft Dynamics AX 2009 - Book Review Blog bot DAX Blogs 0 31.03.2009 23:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47
Глюк с RecId greench DAX: Программирование 20 24.10.2007 14:59
Dynamics AX Geek: RecId & Tablebrowser Blog bot DAX Blogs 0 28.10.2006 16:40

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

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

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