AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Функционал
DAX
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 20.03.2011, 20:30   #1  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Массовое создание СФ. Почему берет номера из списка удаленных СФ?
сломал всю голову, потратил воскресенье на разбор ситуации.
не могу понять.

вопрос:
Почему берет номера из списка удаленных СФ при массовом создании СФ в ax2009 SP5?

подробнее:
если из заказа на продажу разнести накладную.
то потом из накладной или из заказа на продажу для разноски СФ открывается специальная форма.

Click image for larger version

Name:	1.png
Views:	360
Size:	43.2 KB
ID:	6692

Эта форма позволяет вручную выбрать номер СФ из списка ранее удаленных (NumberSequenceList).
Если же вручную старый номер не указан, то берется новый номер из номерной серии. За это отвечает код в методе init в классе \Classes\FactureJourCreateCust_RU\initJournal (и в соседних по иерархии классах)

Click image for larger version

Name:	2.PNG
Views:	329
Size:	34.8 KB
ID:	6693

теперь юзаем массовое создание СФ (из периодических заданий, или из формы заказов выбрано несколько или еще как... неважно)
при массовом создании ручное поле никогда не заполняется (по-крайней мере, я не обнаружил случаев)
другими словами, при массовом создании должны ВСЕГДА браться новые номера СФ. при массовом создании не должны браться номера из списка удаленных (и это правильное поведение, именно это и нужно).

Однако ж, происходит следующее:
= некоторое число СФ получает новые номера
= а в конце некоторые СФ получют номера из списка удаленных
никакой корреляции не нашел.

Разумные предположения у меня кончились.
Но барабашки точно нет. Похоже, я пропустил что-то тривиальное.

Вопрос:
Кто-нибудь сталкивался с этой задачей?
Может натолнете на мысль куда рыть?
Почему берет номера из списка удаленных СФ при массовом создании СФ?
__________________
полезное на axForum, github, vk, coub.
Old 20.03.2011, 22:59   #2  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Мне казалось, что в стандартной системе номерная серия СФ ничем не отличается от обычной номерной серии. Т.е. если настроить номерную серию как непрерывную, то ранее удаленные номера используются автоматически. Или так было в совсем древней версии? Стандартной нумерацией СФ уже давно не пользовался
__________________
Ivanhoe as is..
Old 21.03.2011, 10:03   #3  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 124 (5) +++++
Join Date: 14.12.2001
Я думаю, такой эффект возникает из-за того, что для генерации номер СФ используется не стандартный класс NumberSeq, а его потомок NumberSeq_RU, в котором как раз перекрыт метод getNumFromList(), используемый для выборки номеров из истории использования.
Old 21.03.2011, 10:43   #4  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by Peter Savintsev View Post
Я думаю, такой эффект возникает из-за того, что для генерации номер СФ используется не стандартный класс NumberSeq, а его потомок NumberSeq_RU, в котором как раз перекрыт метод getNumFromList(), используемый для выборки номеров из истории использования.
я тоже так думаю.
вопрос только - почему часть печатает правильно (использует новые номера), а часть неправильно (использует удаленные).

что является триггером, который переключает в другой режим?
ничего не понимаю.
__________________
полезное на axForum, github, vk, coub.
Old 21.03.2011, 19:46   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Join Date: 08.08.2007
Blog Entries: 1
Quote:
Originally Posted by mazzy View Post

Эта форма позволяет вручную выбрать номер СФ из списка ранее удаленных (NumberSequenceList).
Если же вручную старый номер не указан, то берется новый номер из номерной серии. За это отвечает код в методе init в классе \Classes\FactureJourCreateCust_RU\initJournal (и в соседних по иерархии классах)
На самом деле это не совсем верно, т.е. новый номер (без указания) берется не всегда, все благодаря классу NumberSeq_RU. В случае, если номерная серия непрерывна и в списке свободных номеров есть номер = (следующий номер в номерной серии - 1), то тут класс NumberSeq_RU берет все в свои руки и начинает движение по списку свободных номеров в сторону уменьшения, пока не получит разрыв в 1, как только это случится, он и присвоит полученный номер новой счет фактуре.

Пример. Номер следующей фактуры в серии - 10, в списке свободных номеров есть 9, 8, 7, 5, 3, 2, 1. Так вот при обработке счета-фактуры номер у нее будет 7. (т.е. 10-1 = 9, а дальше двигаемся то дех пор пока не получим разрыв больше чем 1, т.е. до 7).

Вполне возможно, что в какой-то момент массовой обработки счетов-фактур у вас возникает ситуация описанная выше, т.е. номер - 1 оказывается в списке освобожденных, как результат номера начинают браться из списка освобожденных номеров
__________________
Sergey Nefedov
Old 21.03.2011, 22:05   #6  
_scorp_ is offline
_scorp_
Участник
_scorp_'s Avatar
MCBMSS
 
488 / 369 (13) ++++++
Join Date: 25.07.2007
Location: Москва
Как-то тоже голову ломал над этим алгоритмом. Там действительно в _RU переопределено получение следующего номера. Как я понял, алгоритм номер из середины сам не может выдать, это доступно только в ручном режиме.

Пример 1
Были сф с номерами: 1, 2, 3 , 4 , 5.
NextNum = 6
Удаляем сф с номеами 2, 5.
Создастся фактура с номером 5, 6, 7...

Пример 2
Были сф с номерами: 1, 2, 3 , 4 , 5.
NextNum = 6
Удаляем сф с номерами 1, 2, 3.
Создастся сф с номером 6, 7, 8...

Пример 3
Были сф с номерами: 1, 2, 3 , 4 , 5.
NextNum = 6
Удаляем сф с номерами 1, 4, 5.
Создастся сф с номером 4, 5, 6...
Old 21.03.2011, 22:35   #7  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Join Date: 28.11.2005
Blog Entries: 1
Тоже когда-то давно разбирался с нумирацией счетов-фактур. Вот цитата из нашего баг-трекинга:

Quote:
ОШИБКА

При освобождении номера счета-фактуры, номер освобождается, но не используется при обработке следующего счета-фактуры, т.е. нумерация не является непрерывной.

//oip: Думаю, это не ошибка. В стандартной Аксапте специально и именно для счета-фактуры сделано, что номер берется "минимальный, но до первый дырки". Пример:

1) "Следующий" номер - 256. Зарезервированы 255, 254, 251, 250. Будет взят 254, так как после него "дырка".

2) "Следующий" номер - 256. Зарезервированы 251, 250. Будет взят 256, так как после него "дырка" (нет 255-го).
Tags
number sequence, номерная серия, счет-фактура

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Значение n-ой колонки списка ComboBox DesertBrowser DAX: Программирование 27 05.07.2013 15:22
Создание раскрывающегося списка на форме balamut DAX: Программирование 3 21.01.2008 13:42
Создание в диалоговом окне выпадающего списка Maxim Gorbunov DAX: База знаний и проекты 2 23.11.2005 12:26
Почему строки в СФ сотируются? ATimTim DAX: Функционал 2 18.07.2005 14:20
Отображение номера Документа ГК gaenar DAX: Программирование 0 11.05.2005 12:00

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 17:30.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.