|
01.04.2009, 13:31 | #1 |
MCTS
|
Номерная серия без нулей
Вот стало надо нумеровать серии без нулей. То есть вместо
ППП_009 написать ППП_9. Максимум = 999 Как задать формат такой номерной серии? Не хочется заниматься постобработкой полученной строки. |
|
01.04.2009, 13:40 | #2 |
Участник
|
Цитата:
2. формат с нулями нужен для правильной сортировки "как числа". В вашем варианте номера будут сортироваться "как строки" (ППП_1, ППП_11, ППП_12, ... ППП_19, ППП_2, ППП_21...) См. http://axapta.mazzy.ru/lib/adjustment/ |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
01.04.2009, 15:07 | #3 |
Участник
|
Если все же хотите сделать по-своему, невзирая на замечание №2 от mazzy (очень существенное замечание, хочу заметить), то смотреть нужно в сторону метод NumberSeq::numInsertFormatInternal().
В нем надо сделать следующее изменение X++: case #SymbolNumerals: //tmpTxt = strpoke(tmpTxt,'0',x); tmpTxt = strDel(tmpTxt, x, 1); break; Это только для ситуации, когда используются числовые подстановки, а не буквенные Если уже были использованы номера, и серия непрерывная, то значения будут браться из списка, а не формироваться новые - тогда этот код, опять же, не отработает. |
|
01.04.2009, 15:31 | #4 |
Member
|
Тогда придется править еще как минимум ::numRemoveFormat(), насколько я помню.
Желательно отказаться от хотелки.
__________________
С уважением, glibs® |
|
01.04.2009, 15:40 | #5 |
Axapta
|
Зачем и кому это надо? Не зная ответа на этот вопрос можно много "вредных" советов надавать.
А то ведь получится как у Джоэля. Цитата:
Хороший кандидат попытается вытянуть из вас побольше информации. Для кого нужен дом? Я принципиально не приму на работу кого-то, занимающегося проектированием и не спрашивающего, для чего. Однажды меня это так возмутило, что я прервал кандидата и сказал: «Вы забыли об этом спросить, но это дом для семейства слепых жирафов.»
|
|
01.04.2009, 16:09 | #6 |
Участник
|
У нас одна из серий имеет формат - КЛ9-#######, номера сейчас такие - КЛ9-0029921, максимум -9999999
Так что впрде все нормально работает |
|
01.04.2009, 16:12 | #7 |
Участник
|
Цитата:
чтобы при таком формате, как у Вас, вместо КЛ9-0029921 получилось КЛ9-29921 |
|
01.04.2009, 16:14 | #8 |
Модератор
|
Давайте разделять реальный используемый номер и вывод на экран-на печать.
Напишите дисплей-метод, и все дела! С Уважением, Георгий |
|
01.04.2009, 22:29 | #9 |
Участник
|
А поиск? а переход к основной таблице?
имхо, предложение имеет смысл только при отображении номера в печатных документах. Возможно, автору вопроса стоит подумать над изменением постановки задачи как раз в эту сторону. |
|
02.04.2009, 07:12 | #10 |
MCTS
|
Цитата:
Зачем и кому это надо?
Вот мне и нужно, запретить ввод кода, оставив при этом формат предыдущей системы, который идет с префиксом и не имеет ведущих нулей. Цитата:
Напишите дисплей-метод, и все дела!
Да, жаль, конечно, что нельзя. Если оставить формат номерной серии пустым, то нумеруется именно так как мне и надо, но без префикса. Вот и подумалось, что можно задать то же самое но с префиксом. Но ради такой малой задачи, вряд ли буду модифицировать эти классы. Всем спасибо! |
|
02.04.2009, 12:23 | #11 |
Участник
|
Если данные заливаются из другой системы, то нельзя ли влезть в процесс заливки и добавить "не достающие" нули? Ну или поправить после заливки?
|
|
02.04.2009, 12:30 | #12 |
MCTS
|
Цитата:
Если данные заливаются из другой системы, то нельзя ли влезть в процесс заливки и добавить "не достающие" нули?
К тому же, если добавлять нули, формат исходной системы теряется. И еще получаем проблему: в аксапте, ППП_0001 и ППП_1 это разные значения, в другой системе - одинаковые . |
|
02.04.2009, 14:59 | #13 |
Участник
|
Смысл есть. И не маленький.
1. Значение ключа формируется в формате "естесственном" с точки зрения идеологии построения номерных серий. Не надо будет никуда влезать и ничего править в "родной" системе. 2. Опыт перекачки данных из других систем научил тому, что нельзя использовать идентификатор другой системы в качестве идентификатора данной системы. По разным соображениям. Идентификатор "чужой" системы должен хранится в отдельном поле. Как служебная (справочная) информация. |
|
|
За это сообщение автора поблагодарили: oip (1). |
02.04.2009, 15:22 | #14 |
MCTS
|
Цитата:
Идентификатор "чужой" системы должен хранится в отдельном поле.
|
|
03.04.2009, 00:40 | #15 |
Участник
|
|
|
03.04.2009, 07:04 | #16 |
MCTS
|
Цитата:
Какое у пользвателей обоснование
|
|
10.04.2009, 15:25 | #17 |
Участник
|
результат
Eldar9x как в итоге решили вопрос с 'удалением' ведущих нулей?
__________________
Dynamics AX 4.0 SP2 |
|
10.04.2009, 15:48 | #18 |
MCTS
|
Цитата:
Eldar9x как в итоге решили вопрос с 'удалением' ведущих нулей?
X++: BrendId genBrendId() { NumberSeq NumberSeq; str 4 prefx = "ПОС."; Num num; ; do { numberSeq = NumberSeq::newGetNum(CompanyInfo::tmn_numRefBrendId(), true); if (!numberSeq) throw checkFailed("Не задана номерная серия для Бренда в параметрах УЗ."); num = numberSeq.num(); numberSeq.used(); } while (BrendTable::exist(prefx + num)); return prefx + num; } Формат номерной серии - пустой. |
|
11.04.2009, 09:02 | #19 |
Участник
|
Цитата:
Как-то не совсем красиво, если только нет твердой уверенности что ничего не поменяется в политике формирования номеров. Может есть еще какие-то варианты?
__________________
Dynamics AX 4.0 SP2 |
|
14.04.2009, 08:49 | #20 |
Участник
|
Все нижеследующее можно считать в некоторой степени оффтопом относительно номерных серий в контексте данной темы. Не затрагивая вопрос практической необходимости такого поведения номерных серий (аргументы изложены участниками выше по теме), в качестве одного из вариантов решения такой задачи можно рассматривать расширение числа спец.символов формата(шаблона) с которыми работает номерная серия. В штатной функциональности класса 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). |
Теги |
download, faq, законченный пример, номерная серия, нули, нумерация, полезное, пример |
|
Похожие темы | ||||
Тема | Ответов | |||
Номерная серия,,, превышена. | 28 | |||
Номерная серия | 11 | |||
Номерная серия общая для всех компаний! | 13 | |||
Номерная серия в виртуальной компании | 2 | |||
Номерная серия требование-накладная | 2 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|