14.04.2009, 08:49 | #21 |
Участник
|
Все нижеследующее можно считать в некоторой степени оффтопом относительно номерных серий в контексте данной темы. Не затрагивая вопрос практической необходимости такого поведения номерных серий (аргументы изложены участниками выше по теме), в качестве одного из вариантов решения такой задачи можно рассматривать расширение числа спец.символов формата(шаблона) с которыми работает номерная серия. В штатной функциональности класса NumberSeq использованы 2 символа:
Можно расширить набор специальных символов формата(шаблона) 'необязательными' знаками, к примеру:
Как уже упоминалось выше по теме нужно будет внести некоторые модификации в код ряда методов класса NumberSeq. на вскидку это:
Для упрощения обработки в классе NumberSeq можно допустить некоторую условность: необязательные символы шаблона должны находиться левее обязательных в шаблоне номерной серии ('PREFIX_$$$$$#') - проверку пользовательского ввода можно организовать на NumberSequenceTable.validateField() или NumberSequenceTable.validateWrite() В целях тестового примера подобной реализации набросал в первом приближении небольшой проект по описанным выше пунктам. В проект выгружены только изменения на USR слое с приложения Axapta 3.0 SP5 (адаптировать для Dynamics Ax 4.0, если кому-то потребуется, думаю не составит труда - изменений не много, помечены комментариями 'NumberSeqOptional'). P.S. Проект НЕ претендует на 'готовое' решение. |
|
|
За это сообщение автора поблагодарили: petr (3), aidsua (1), in.dc (1). |
14.04.2009, 10:44 | #22 |
MCTS
|
Импортировал, не компилируется. Возможно забыто объявление макросов.
Но именно из-за Цитата:
...возможно еще что-то
|
|
14.04.2009, 10:47 | #23 |
Axapta
|
X++: str 4 prefx = "ПОС."; |
|
14.04.2009, 10:54 | #24 |
MCTS
|
Цитата:
Гм... Вы вот прям так и сделали? А что помешало даже при данном выборе решения вынести этот префикс куда-нибудь в параметры?
|
|
14.04.2009, 12:35 | #25 |
Участник
|
Не пишите ерунды, все нормально компилируется.
Импортировал проект на Dynamics Ax 4.0 SP2 - макросы объявлены в NumberSeq\classDeclaration(): X++: public class NumberSeq { ... #DEFINE.SymbolNumerals('#') #DEFINE.SymbolLetters('&') #DEFINE.NoOfLetters(26) #DEFINE.FirstLetter('A') // --> petergunn, NumberSeqOptional, 14.04.2009 #define.SymbolNumOptional('$') #define.SymbolAlphaOptional('?') // <-- petergunn, NumberSeqOptional } X++: ... case fieldnum(NumberSequenceTable, Format): ret = this.checkFormat(); // in.dc --> ret = ret && NumberSeqOptional::validateFormat( this.Format ) ; // in.dc <-- break; ... Цитата:
Цитата:
Все нижеследующее можно считать в некоторой степени оффтопом
... следует иметь в виду при принятии решения об использовании необязательных спец. символов в формате(шаблоне) номерной серии. ... P.S. Проект НЕ претендует на 'готовое' решение.
__________________
Dynamics AX 4.0 SP2 |
|
14.04.2009, 13:03 | #26 |
MCTS
|
Цитата:
Не пишите ерунды, все нормально компилируется.
Цитата:
вы несколько категоричны в рекламе своего варианта
Вы задали вопрос Цитата:
Eldar9x как в итоге решили вопрос с 'удалением' ведущих нулей?
Мне это решение и самому не нравится. Но поскольку в стандартной аксапте не реализован вышеуказанный формат номерной серии, пришлось выбирать вариант, который окажет наименьшее влияние на систему целиком. По поводу изменения NumberSeq... У меня на данный момент недостаточно знаний, чтоб гарантировать, что вышеописанное изменение класса NumberSeq не выплывет в каких-либо багах. Да и petergunn по сути это также озвучил. Об этом говорилось и выше. Но, если вы хотите рискнуть и готовы внести подобные модификации в рабочее приложение, то флаг в руки. Последний раз редактировалось Eldar9x; 14.04.2009 в 13:06. |
|
Теги |
download, faq, законченный пример, номерная серия, нули, нумерация, полезное, пример |
|
Похожие темы | ||||
Тема | Ответов | |||
Номерная серия,,, превышена. | 28 | |||
Номерная серия | 11 | |||
Номерная серия общая для всех компаний! | 13 | |||
Номерная серия в виртуальной компании | 2 | |||
Номерная серия требование-накладная | 2 |
|