|
24.10.2007, 12:10 | #1 |
Участник
|
Глюк с RecId
День добрый недавно обнаружился неприятный глюк. При создании накладной с произвольным текстом RecId первой создаваемой строки совпадает с RecId самой накладной, т.е. CustInvoiceTable.RecId == CustInvoiceLine.RecId. Для всех последующих строк все норм. Подскажите, может кто-то сталкивался, как с этим бороться.
P.S. Все это на AX 4.0. SP 2 |
|
24.10.2007, 12:24 | #2 |
Программатор
|
А как Вы это определили?
|
|
24.10.2007, 12:27 | #3 |
Участник
|
|
|
24.10.2007, 12:31 | #4 |
Программатор
|
принт скрин в студию!!! Я не верю!!
|
|
24.10.2007, 13:02 | #5 |
Участник
|
|
|
24.10.2007, 13:14 | #6 |
Участник
|
М-да. Очень интересно. У меня то же самое наблюдается...
Сделал такой джобик: X++: static void Job5(Args _args) { CustInvoiceLine CustInvoiceLine; CustInvoiceTable CustInvoiceTable; ; while select CustInvoiceLine join CustInvoiceTable where CustInvoiceTable.RecId == CustInvoiceLine.RecId { info( int642str( CustInvoiceLine.RecId)); } } Info Сообщение (13:18:15) 21426232134 Info Сообщение (13:18:15) 21426232135 Info Сообщение (13:18:15) 21426232136 Info Сообщение (13:18:15) 21426232137 Info Сообщение (13:18:15) 21426232138 Info Сообщение (13:18:15) 21426232139 Info Сообщение (13:18:15) 21426232140 Info Сообщение (13:18:15) 21426232141 Info Сообщение (13:18:15) 21426232142 Info Сообщение (13:18:15) 21426232143 Задумался.. Последний раз редактировалось Михаил Андреев; 24.10.2007 в 13:19. |
|
24.10.2007, 13:46 | #7 |
Мрачный тип
|
Михаил, чесслово, не понимаю причин беспокойства
В какой-то момент времени значения счетчиков RecId у них сравнялись и было сделано подряд несколько однострочных клиентских накладных - только и всего, вполне вероятная ситуация (я 6 лет работал с системой, где почти все реляционные связи были на суррогатном 8-байтовом идентификаторе, генерируемом отдельно для каждой таблицы, там эта ситуация норма и проблем от этого не возникало). Другое дело - разная скорость пожирания значений идентификатора в разных таблицах. Вот если бы у вас было в значения пробелы - вот тогда надо задумываться. CustInvoiceTable априорно более медленно или равно поедающая по сравнению с CustInvoiceLine. |
|
24.10.2007, 12:36 | #8 |
Программатор
|
Скорее всего вы не весь RecId взяли и по части фильтруете строки. Раздвинте поле RecId в обозривателе и всё поймете
|
|
24.10.2007, 13:15 | #9 |
Участник
|
А чего в этом страшного? В 4-ке RecId уникален в рамках таблицы, а не в рамках всей БД, как в 3-ке.
|
|
24.10.2007, 13:21 | #10 |
Участник
|
не очень понятно, не могут ли быть пересечения в этом случае (что происходит при создании второй накладной, если в первой - две строки)
|
|
24.10.2007, 13:26 | #11 |
Участник
|
|
|
24.10.2007, 13:30 | #12 |
Мрачный тип
|
То ли лыжи не едут, то ли я ...
Объясните суть глючности данного явления, пожалуйста. В 4-ке генерация RecId вроде наконец-то избавлена от невменяемого атавизма 3-ки ввиде размазывания RecId по всем таблицам в рамках одной компании - RecID вроде потаблично генерится. В 4-ке порог старта RecId начинается 0000000100000000h(4 294 967 296) дабы с RecId 3-ек не пересекаться. Наличие в двух разных таблицах одинаковых значений идентификаторов записи в такой ситуации у 4-ки - явление, IMHO, вполне нормальное и не должно вызывать никоего беспокойства , кроме абсолютной величины (когда успели почти полтора миллиарда записей насоздавать ?) |
|
24.10.2007, 13:35 | #13 |
Участник
|
Дело в том что я просто не знал о различиях 3-ки и 4-ки по поводу RecId, поэтому и занервничал.
Теперь все стало на свои места. Всем спасибо за помощь |
|
24.10.2007, 13:39 | #14 |
Участник
|
Пожалуй, случайность. Все накладные по одной строке содержат. Так что, ложная тревога.
|
|
24.10.2007, 13:41 | #15 |
Программатор
|
Прикольно конечно, но где написано, что RecID в 4-ке уникален тока в одной таблице.
|
|
24.10.2007, 13:58 | #16 |
Мрачный тип
|
Цитата:
Оно ж ить того ... это самое, обсуждамшись уже давненько ... Последний раз редактировалось TasmanianDevil; 24.10.2007 в 14:01. |
|
24.10.2007, 14:05 | #17 |
Программатор
|
|
|
24.10.2007, 14:14 | #18 |
Модератор
|
Цитата:
- Что вы делаете так поздно? — спросил Резерфорд. - Работаю,— последовал ответ. - А что вы делаете днем? - Работаю, разумеется,— отвечал ученик. - И рано утром тоже работаете? - Да, профессор, и утром работаю, - подтвердил ученик, рассчитывая на похвалу из уст знаменитого ученого. Резерфорд помрачнел и раздраженно спросил: Послушайте, а когда же вы думаете?
__________________
-ТСЯ или -ТЬСЯ ? |
|
24.10.2007, 13:51 | #19 |
Участник
|
Всё правильно, я уже это понял
|
|
24.10.2007, 14:20 | #20 |
Программатор
|
Придется поверить наслово Пробел исправил, осознал суть происходящего и снова работать
|
|
Теги |
ax4.0, recid |
|
Похожие темы | ||||
Тема | Ответов | |||
if (record) vs if (record.RecId) | 18 | |||
Глюк с RecId в Ax 4.0 | 5 | |||
поля, содержащие RecId | 15 | |||
aEremenko: Дефрагментация RecID | 2 | |||
Два RecId у одной записи таблицы | 33 |
|