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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.07.2009, 18:04   #1  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Сегодня совершенно случайно заметил в Фин. Книге Операций, что номера операций идут с разрывами. NAV 50SP1. Вот пример (естественно сортировка по полю Операция Но.):
521706
521707
521709
521710
521712
521713
521715
521716
521718
521719
521721
521722
521724
521725
521727
521728
Руками ничего не удаляется. Учётные кодюниты в первозданном виде. Это нормально или нет?
Старый 16.07.2009, 09:34   #2  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Это нормально.
__________________
Want to believe...
Старый 16.07.2009, 10:00   #3  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Судя по базе с Кронусом - нормально. Но честно говоря это немного смущает. А почему так происходит?
С номерами транзакций такого быть не может?
Старый 17.07.2009, 12:12   #4  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Васыо Посмотреть сообщение
Сегодня совершенно случайно заметил в Фин. Книге Операций, что номера операций идут с разрывами. NAV 50SP1. Вот пример (естественно сортировка по полю Операция Но.):
...
Руками ничего не удаляется. Учётные кодюниты в первозданном виде. Это нормально или нет?
Одновременный учёт нескольких пользователей с откатом одного учёте, который был ранее и такая ситуация реальна.
Старый 20.07.2009, 08:01   #5  
GalaM is offline
GalaM
Moderator
Лучший по профессии 2009
 
640 / 42 (3) +++
Регистрация: 13.03.2008
Адрес: Москва
А сами операции возникли при учете каких документов?
Старый 20.07.2009, 08:44   #6  
GRIZZLY_imported is offline
GRIZZLY_imported
Участник
 
39 / 10 (1) +
Регистрация: 18.05.2007
Цитата:
Сообщение от RedFox Посмотреть сообщение
Одновременный учёт нескольких пользователей с откатом одного учёте, который был ранее и такая ситуация реальна.
Разве при учете не происходит блокирование всех записей таблицы G/L Entry вплоть до окончания учета?
Старый 20.07.2009, 08:57   #7  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
gala, проводки сделаны через фин журналы. судя по всему ответы в 12-ом кодюните.
Старый 20.07.2009, 10:33   #8  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от GRIZZLY Посмотреть сообщение
Разве при учете не происходит блокирование всех записей таблицы G/L Entry вплоть до окончания учета?
Полной блокировки нет, особенно на SQL (например там блокируется всего несколько записей, а не вся таблица). И при код может дойти до нахождения последнего номера, получить его, а потом откатиться.
Старый 20.07.2009, 10:52   #9  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от RedFox Посмотреть сообщение
Полной блокировки нет, особенно на SQL (например там блокируется всего несколько записей, а не вся таблица). И при код может дойти до нахождения последнего номера, получить его, а потом откатиться.
Это не так. На SQL конструкцией:
Table.Locktable;
Table.Find('+');
тоже блокируется весь диапазон.
COMMITа в учетном коде до завершения быть не должно, поэтому ситуация довольно странная.
Старый 20.07.2009, 11:46   #10  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Кому интересно самостоятельно взглянуть - посмотрите на Cronus в последнем Nav Express. То же самое. На 3284 операции 256 пропусков.
Старый 20.07.2009, 15:03   #11  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от RedFox Посмотреть сообщение
Полной блокировки нет, особенно на SQL (например там блокируется всего несколько записей, а не вся таблица). И при код может дойти до нахождения последнего номера, получить его, а потом откатиться.

Цитата:
Сообщение от Alterant Посмотреть сообщение
Это не так. На SQL конструкцией:
Table.Locktable;
Table.Find('+');
тоже блокируется весь диапазон.
COMMITа в учетном коде до завершения быть не должно, поэтому ситуация довольно странная.
Как мне представляется блокируются несколько записей, а не диапазон.
Начиная с момента выполнения кода:
Table.Locktabe;
Table.find('+');
и до commit'a или отката транзакции другие клиенты Нава, выполняющие тот же код будут ждать окончания блокировки ПОСЛЕДНЕЙ записи на команде find('+'), и неважно чем закончиться блокирующий процесс - откатом транзакции или коммитом. В любом случае следующий процесс прочитает последний номер операции.
При таком построении кода гарантируется уникальность и отсутствие пропусков в номерах операций при многопользовательской работе.
Думаю стоит копать в сторону инкремента NextEntryNo без вставки в 17 таблицу.
Для начала посмотрите фин. регистры возможно номера отсутствующих операций лежат в диапазоне одной операции учета.

PS. NAV 50SP1 и Nav Express не видел, однако объемы изощренного RU кода начиная с 4.0 SP2 растут в 12 cu с пугающей меня быстротой.
Старый 20.07.2009, 17:04   #12  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от rmv Посмотреть сообщение
Как мне представляется блокируются несколько записей, а не диапазон.
Начиная с момента выполнения кода:
Table.Locktabe;
Table.find('+');
и до commit'a или отката транзакции другие клиенты Нава, выполняющие тот же код будут ждать окончания блокировки ПОСЛЕДНЕЙ записи на команде find('+')
Вы правы, я выразился не точно. Только одна поправка - блокируется как последняя запись, так и диапазон, находящийся за ней. Т.е. вставить запись с номером, превышающим номер последней записи, скажем, на миллион тоже не получится. Это я имел ввиду. А вот вставлять в начало или середину таблицы при такой блокировке вполне можно.
 


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

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

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