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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.03.2011, 20:30   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Массовое создание СФ. Почему берет номера из списка удаленных СФ?
сломал всю голову, потратил воскресенье на разбор ситуации.
не могу понять.

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

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

Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 347
Размер:	43.2 Кб
ID:	6692

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

Нажмите на изображение для увеличения
Название: 2.PNG
Просмотров: 312
Размер:	34.8 Кб
ID:	6693

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

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

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

Вопрос:
Кто-нибудь сталкивался с этой задачей?
Может натолнете на мысль куда рыть?
Почему берет номера из списка удаленных СФ при массовом создании СФ?
__________________
полезное на axForum, github, vk, coub.
Старый 20.03.2011, 22:59   #2  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Мне казалось, что в стандартной системе номерная серия СФ ничем не отличается от обычной номерной серии. Т.е. если настроить номерную серию как непрерывную, то ранее удаленные номера используются автоматически. Или так было в совсем древней версии? Стандартной нумерацией СФ уже давно не пользовался
__________________
Ivanhoe as is..
Старый 21.03.2011, 10:03   #3  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 119 (4) +++++
Регистрация: 14.12.2001
Я думаю, такой эффект возникает из-за того, что для генерации номер СФ используется не стандартный класс NumberSeq, а его потомок NumberSeq_RU, в котором как раз перекрыт метод getNumFromList(), используемый для выборки номеров из истории использования.
Старый 21.03.2011, 10:43   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Peter Savintsev Посмотреть сообщение
Я думаю, такой эффект возникает из-за того, что для генерации номер СФ используется не стандартный класс NumberSeq, а его потомок NumberSeq_RU, в котором как раз перекрыт метод getNumFromList(), используемый для выборки номеров из истории использования.
я тоже так думаю.
вопрос только - почему часть печатает правильно (использует новые номера), а часть неправильно (использует удаленные).

что является триггером, который переключает в другой режим?
ничего не понимаю.
__________________
полезное на axForum, github, vk, coub.
Старый 21.03.2011, 19:46   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от mazzy Посмотреть сообщение

Эта форма позволяет вручную выбрать номер СФ из списка ранее удаленных (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
Старый 21.03.2011, 22:05   #6  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Как-то тоже голову ломал над этим алгоритмом. Там действительно в _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...
Старый 21.03.2011, 22:35   #7  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Тоже когда-то давно разбирался с нумирацией счетов-фактур. Вот цитата из нашего баг-трекинга:

Цитата:
ОШИБКА

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

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

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

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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Значение 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
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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