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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.04.2009, 08:49   #1  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
Цитата:
Сообщение от in.dc Посмотреть сообщение
...
Может есть еще какие-то варианты?

Все нижеследующее можно считать в некоторой степени оффтопом относительно номерных серий в контексте данной темы.

Не затрагивая вопрос практической необходимости такого поведения номерных серий (аргументы изложены участниками выше по теме), в качестве одного из вариантов решения такой задачи можно рассматривать расширение числа спец.символов формата(шаблона) с которыми работает номерная серия.

В штатной функциональности класса NumberSeq использованы 2 символа:
  • # - для формирования цифровой последовательности
  • & - для формирования символьной последовательности (A-Z)
в формате(шаблоне) номерной серии эти символы можно использовать как раздельно ('PREFIX_######' или 'PREFIX_&&&&&&'), так и совместно ('PREFIX_##&&##') в произвольной последовательности и комбинациях. При формировании номера 'лишние' символы формата(шаблона) оставщиеся после преобразования исходного числа в символьную последовательность в обязательном порядке заполняются значениями по умолчанию ('0' для #, 'A' для & - в методе NumberSeq::numInsertFormatInternal()). Получаемый номер имеет туже размерность (длину) что и формат(шаблон) номерной серии. (к примеру, число 123 преобразованное по формату 'DMO_######' выглядит как номер 'DMO_000123')

Можно расширить набор специальных символов формата(шаблона) 'необязательными' знаками, к примеру:
  • $ - дополнительный цифровой шаблон
  • ? - дополнительный литерный шаблон
и трактовать их как необязательные для заполнения (в случае если в исходном числе после преобразования в символьную последовательность нет значимой цифры для этого знакоместа; что-то по аналогии с квантификатором '?' из регулярных выражений ('громко' сказано однако '$'=='#'? )) - в этом случае длина полученной строки с номером будет короче (либо равна) длины строки формата(шаблона) номерной серии. (число 123 преобразованное по формату 'DMO_$$$$$$' будет выглядеть как номер 'DMO_123'). Вот тут то и возможны проблемы с сортировкой полученных номеров о которых упоминалось выше по теме из-за разных длин строк. Это следует иметь в виду при принятии решения об использовании необязательных спец. символов в формате(шаблоне) номерной серии.

Как уже упоминалось выше по теме нужно будет внести некоторые модификации в код ряда методов класса NumberSeq.
на вскидку это:
  • formattingChars() - возвращает строку с 'служебными' спец.символами использумыми в форматах(шаблонах) номерных серий,
  • numCheckFormat() - проверка строкового номера на соответствие формату(шаблону) номерной серии
  • numInsertFormat() - преобразование числового кода в номер по формату(шаблону)
  • numInsertFormatInternal() - используется в методе numInsertFormat()
  • numInsertFormatLetters() - используется в методе numInsertFormat()
  • numRemoveFormat() - восстановление числового значения номера по формату(шаблону) номерной серии
...возможно еще что-то

Для упрощения обработки в классе NumberSeq можно допустить некоторую условность: необязательные символы шаблона должны находиться левее обязательных в шаблоне номерной серии ('PREFIX_$$$$$#') - проверку пользовательского ввода можно организовать на NumberSequenceTable.validateField() или NumberSequenceTable.validateWrite()

В целях тестового примера подобной реализации набросал в первом приближении небольшой проект по описанным выше пунктам. В проект выгружены только изменения на USR слое с приложения Axapta 3.0 SP5 (адаптировать для Dynamics Ax 4.0, если кому-то потребуется, думаю не составит труда - изменений не много, помечены комментариями 'NumberSeqOptional').

P.S. Проект НЕ претендует на 'готовое' решение.
Вложения
Тип файла: zip NumberSeqOptional_USR.zip (4.4 Кб, 80 просмотров)
За это сообщение автора поблагодарили: petr (3), aidsua (1), in.dc (1).
Теги
download, faq, законченный пример, номерная серия, нули, нумерация, полезное, пример

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Номерная серия,,, превышена. tolstjak DAX: Функционал 28 14.01.2013 20:06
Номерная серия konopello DAX: Программирование 11 02.10.2007 12:00
Номерная серия общая для всех компаний! 3oppo DAX: Программирование 13 01.09.2006 06:38
Номерная серия в виртуальной компании Владимир Максимов DAX: Программирование 2 22.12.2005 12:52
Номерная серия требование-накладная loka DAX: Функционал 2 15.06.2005 13:14
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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