|  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® | 
|  |