|
![]() |
#1 |
Axapta Retail User
|
Возможно ваш случай.
Дублирование LineNum в строках журналов |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от ViV
![]() Возможно ваш случай.
Дублирование LineNum в строках журналов Насколько я понял, значение номера строки формируется в классe JournalTransData. Но почему и как возникают дубли (и дробные значения) я так и не понял. Можно попробовать сделать уникальность по Журналу и Номеру строки. Так хоть получим ошибку сразу при вставке, а не потом. Но хочется исключить в принципе подобный случай. |
|
![]() |
#3 |
Участник
|
Это-то как раз стандартное поведение. Если у вас курсор стоит на строке N и вы вставляете новую запись, то она может получить дробный номер, равный среднеарифметическому между строками N-1 и N. Например, строчка между 1 и 2 получит номер 1,50, а следующая вставленная между 1 и 1,50 получит номер 1,25 и т.д.
А вот почему возникают дубли - нужно смотреть конкретный журнал. Возможно, дубли как-то возникают при одновременной работе в одном журнале нескольких человек. Простой способ избежать еще на этапе создания строк - сделать уникальный индекс с кодом журнала и номером строки. |
|
![]() |
#4 |
MCITP
|
![]() Цитата:
Сообщение от kia
![]() Да, случай мой, но нигде я пока не встретил вариант решения этой "извествой" проблемы.
Насколько я понял, значение номера строки формируется в классe JournalTransData. Но почему и как возникают дубли (и дробные значения) я так и не понял. Можно попробовать сделать уникальность по Журналу и Номеру строки. Так хоть получим ошибку сразу при вставке, а не потом. Но хочется исключить в принципе подобный случай. Суть в том, что этот движок автонумерации на форме работает не с таблицей, а с датасорсом, и, соответсвенно, при попытках дать новой строке номер он отталкивается от того, что есть в данный момент в этом датасорсе. А если он отфильтрован, то часть строк при этом не учитывается - вот и появляются дубликаты... Как-то вот так... Ну и как уже сказали, "исключить в принципе подобный случай" проще всего уникальным индексом... Есть, конечно, и более сложный и гораздо менее эффективный способ - "докодировать" нужные проверки и/или движок автонумерации. ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#5 |
Участник
|
Всем спасибо.
Проблему решил перекрыв метод runLoad и в нем читаю строки журнала и перенумеровываю их (для не проведенных журналов). Этим решил еще одну проблему - обеспечение необходимой последовательности обработки строк журнала, чтобы они обрабатывались не по номерам строк а по дате операции. |
|
|
За это сообщение автора поблагодарили: Kaermo (1). |
Теги |
linenum, rhrmordertrans, журнал, нумерация, ax4.0 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|