24.12.2009, 12:24 | #1 |
Участник
|
Номерная серия длиннее 20 символов - баг в коде
Возникла необходимость сделать длину номеров документов больше 20 символов. Изменил длину у EDT Num и NumberSequenceFormat - номер все равно обрезается до 20 символов. Начал искать в коде. В классе NumberSeq в методах numInsertFormatLetters() и numInsertFormatInternal() объявлены внутренние переменные с типом str 20.
Справедливо вплоть до Ax 2009. |
|
|
За это сообщение автора поблагодарили: mazzy (2), BOAL (1), Logger (4). |
24.12.2009, 14:35 | #2 |
Участник
|
Ого, сначала не понял... думал режется на ЕДТ вставки...
А это жестоко зашито в код |
|
24.12.2009, 17:21 | #3 |
Member
|
А зачем, можно поинтересоваться?
В номерной серии максимальный возможный номер — примерно 2.5 миллиарда. это 10 символов. Можно еще 10 букв влепить. У вас в номере документа букв много или вы что-то с цифрами сделали? Если букв — можно префиксовать в вашем прикладном коде. В общем, я бы на месте МС не засчитал это за багу. Технически — м.б. Архитектурно — вряд ли. Ну и если речь таки идет о коде, а не просто о номере документа, то слишком длинные коды вредны для производительности.
__________________
С уважением, glibs® |
|
25.12.2009, 08:40 | #4 |
Участник
|
|
|
25.12.2009, 08:51 | #5 |
Участник
|
|
|
25.12.2009, 10:39 | #6 |
Member
|
Код закупки входит в состав ключа или составного ключа в большом количестве таблиц, в частности: строки закупок, накладные поставщиков и строки накладных поставщиков, связь закупок и накладных, параметрические таблицы по обработке закупок. используя длинный ключ вы сознательно подсаживаете себе производительность на операциях выборки данных. Не говоря уже о том, что нерационально используете дисковое пространство. Если закупок у вас будет много или строк в них будет много, то на ряде операций время отклика у вас будет в разы больше чем могло бы быть, если бы коды были оптимальными.
__________________
С уважением, glibs® |
|
25.12.2009, 10:41 | #7 |
Ищущий знания...
|
А можно узнать причины выбора такой нумерации?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
25.12.2009, 12:22 | #8 |
Участник
|
|
|
25.12.2009, 15:56 | #9 |
Участник
|
На самом деле даже в стандартной функциональности довольно легко можно превысить 20-символьный предел. Если взглянуть на "Номерные группы" для серийников и партий. В этот номер можно включить несколько "сущностей", каждая из которых по 10 символов. И даже в руководстве каком-то написано, что если таки необходимо, чтобы все эти номера были включены, то нужно будет увеличить размер номерной серии. Что не является возможным из-за указанного бага, насколько я понял...
|
|
25.12.2009, 16:24 | #10 |
Member
|
В номерной группе для партий используется обычная номерная серия. Если там включить много галок, то, по идее, нужно расширять тип кода партии, а не номерной серии. Или я что-то не понимаю?
Но и в этом случае пагубное влияние длинных кодов на производительность остается в силе. Так что лучше не увлекаться.
__________________
С уважением, glibs® |
|
28.12.2009, 13:42 | #11 |
Участник
|
Oops. Ты, конечно, прав, аццкий сатана
|
|
28.12.2009, 15:44 | #12 |
Талантливый разгвоздяй
|
|
|
28.12.2009, 15:59 | #13 |
Участник
|
Цитата:
Если в документации к Аксапте написано что макс.длина номерной серии 20 знаков - это не баг. Если не написано - значит баг. |
|
28.12.2009, 16:11 | #14 |
Участник
|
Ну, это явно бага.
Но, glibs прав, что еще никто не будет фиксить. |
|
28.12.2009, 16:43 | #15 |
Member
|
Цитата:
Сообщение от Kabardian
...
почему вам так сложно признать, что это баг? ... Но создавать длинные коды — это бага дизайна решения. С учетом этого первая бага становится несущественной.
__________________
С уважением, glibs® |
|
28.12.2009, 16:51 | #16 |
Участник
|
Цитата:
Цитата:
А может действительно в таком подходе и нет ничего криминального, может знающие люди поделятся, ради каких преимуществ стоит пойти на такой шаг? |
|
29.12.2009, 01:43 | #17 |
Участник
|
Ради совместимости с другими существующими системами, от которых невозможно отказаться. Такое бывает на средних и крупных производственных предприятиях, где кроме ERP задействованы системы планирования, нормативно-справочной информации, управления складом и пр., со своими специфическими номерами документов, спецификаций, изделий, номенклатур и т.п.
|
|
29.12.2009, 02:11 | #18 |
Member
|
Чтобы не сажать производительность, можно было бы сделать...
Если это нужно только для печати — можно рассчитывать display-методом. Если для поиска — на худой конец продублировать поле, но оно уже не будет в качестве ключевого использоваться в целом ряде таблиц. Хотя можно искать по двум полям, а объединенный номер считать display-методом (убив двух зайцев). Уж извините. Наболело. Сталкивался с огромной массой решений весьма многочисленной армии консультантов, которые без какой бы то ни было причины (бывают случаи, когда нужно выбирать одно из зол, но это отдельный случай, и решение тогда осознанное) тупо сплошь и рядом принимают решения, которые гробят производительность.
__________________
С уважением, glibs® |
|