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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.12.2009, 12:24   #1  
Максимка is offline
Максимка
Участник
 
19 / 23 (1) +++
Регистрация: 28.06.2006
Номерная серия длиннее 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  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
Ого, сначала не понял... думал режется на ЕДТ вставки...
А это жестоко зашито в код
Старый 24.12.2009, 17:21   #3  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
А зачем, можно поинтересоваться?

В номерной серии максимальный возможный номер — примерно 2.5 миллиарда. это 10 символов. Можно еще 10 букв влепить. У вас в номере документа букв много или вы что-то с цифрами сделали? Если букв — можно префиксовать в вашем прикладном коде.

В общем, я бы на месте МС не засчитал это за багу. Технически — м.б. Архитектурно — вряд ли.

Ну и если речь таки идет о коде, а не просто о номере документа, то слишком длинные коды вредны для производительности.
__________________
С уважением,
glibs®
Старый 25.12.2009, 08:40   #4  
Максимка is offline
Максимка
Участник
 
19 / 23 (1) +++
Регистрация: 28.06.2006
Цитата:
Сообщение от glibs Посмотреть сообщение
А зачем, можно поинтересоваться?
У нас используется для нумерации закупок, префиксом является код поставщика. Понятно, что можно было обойтись без расширения поля, но так настроили внедренцы еще до меня.
Старый 25.12.2009, 08:51   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Максимка Посмотреть сообщение
У нас используется для нумерации закупок, префиксом является код поставщика
И что, данный префикс где-то потом откусывается? используется в отчётах? Ужас
Microsof, конечно, хорош, но вы ещё лучше
Старый 25.12.2009, 10:39   #6  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Код закупки входит в состав ключа или составного ключа в большом количестве таблиц, в частности: строки закупок, накладные поставщиков и строки накладных поставщиков, связь закупок и накладных, параметрические таблицы по обработке закупок. используя длинный ключ вы сознательно подсаживаете себе производительность на операциях выборки данных. Не говоря уже о том, что нерационально используете дисковое пространство. Если закупок у вас будет много или строк в них будет много, то на ряде операций время отклика у вас будет в разы больше чем могло бы быть, если бы коды были оптимальными.
__________________
С уважением,
glibs®
Старый 25.12.2009, 10:41   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Максимка Посмотреть сообщение
У нас используется для нумерации закупок, префиксом является код поставщика. Понятно, что можно было обойтись без расширения поля, но так настроили внедренцы еще до меня.
А можно узнать причины выбора такой нумерации?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 25.12.2009, 12:22   #8  
Максимка is offline
Максимка
Участник
 
19 / 23 (1) +++
Регистрация: 28.06.2006
Цитата:
Сообщение от lev Посмотреть сообщение
А можно узнать причины выбора такой нумерации?
Причина мне неизвестна, длина EDT Num была увеличена на этапе внедрения, но шаблон номеров оставался равным 20 символов. После увеличения длины шаблона, я обнаружил указанный баг.
Старый 25.12.2009, 15:56   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
На самом деле даже в стандартной функциональности довольно легко можно превысить 20-символьный предел. Если взглянуть на "Номерные группы" для серийников и партий. В этот номер можно включить несколько "сущностей", каждая из которых по 10 символов. И даже в руководстве каком-то написано, что если таки необходимо, чтобы все эти номера были включены, то нужно будет увеличить размер номерной серии. Что не является возможным из-за указанного бага, насколько я понял...
Старый 25.12.2009, 16:24   #10  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
В номерной группе для партий используется обычная номерная серия. Если там включить много галок, то, по идее, нужно расширять тип кода партии, а не номерной серии. Или я что-то не понимаю?

Но и в этом случае пагубное влияние длинных кодов на производительность остается в силе. Так что лучше не увлекаться.
__________________
С уважением,
glibs®
Старый 28.12.2009, 13:42   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Oops. Ты, конечно, прав, аццкий сатана
Изображения
 
Старый 28.12.2009, 15:44   #12  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Цитата:
Сообщение от glibs Посмотреть сообщение
В общем, я бы на месте МС не засчитал это за багу. Технически — м.б. Архитектурно — вряд ли.
Glibs, почему вам так сложно признать, что это баг? И какая разница, как именно ошиблись в Майкрософте, технически или архитектурно?
Старый 28.12.2009, 15:59   #13  
Bober is offline
Bober
Участник
 
311 / 104 (4) +++++
Регистрация: 29.05.2007
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
И что, данный префикс где-то потом откусывается? используется в отчётах? Ужас
Microsof, конечно, хорош, но вы ещё лучше
S.Kuskov, Вам то что за дело до потребностей этого заказчика? Потребовалось - значит , надо ! Уверен, что подобное решение принималось не за 5 минут в курилке, а обдумывалось со стороны разных подразделений заказчика. По крайней мере, не видел ни одного места, где бы это не происходило именно так.

Если в документации к Аксапте написано что макс.длина номерной серии 20 знаков - это не баг. Если не написано - значит баг.
Старый 28.12.2009, 16:11   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, это явно бага.
Но, glibs прав, что еще никто не будет фиксить.
Старый 28.12.2009, 16:43   #15  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Kabardian
...
почему вам так сложно признать, что это баг?
...
Мне не сложно . Это бага, конечно. Грубое нарушение разработчиком ВР.

Но создавать длинные коды — это бага дизайна решения. С учетом этого первая бага становится несущественной.
__________________
С уважением,
glibs®
Старый 28.12.2009, 16:51   #16  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Bober Посмотреть сообщение
Если в документации к Аксапте написано что макс.длина номерной серии 20 знаков - это не баг. Если не написано - значит баг.
Это баг в любом случае. Если предположить, что была цель - ограничить длину номерной серии, то делать это нужно было уж точно не таким способом.

Цитата:
Сообщение от Bober Посмотреть сообщение
S.Kuskov, Вам то что за дело до потребностей этого заказчика? Потребовалось - значит , надо.
Извеняюсь, если вышло чересчур эмоционально. Просто, заведомо денормализировать первичный ключ, это как-то ... не айс.
А может действительно в таком подходе и нет ничего криминального, может знающие люди поделятся, ради каких преимуществ стоит пойти на такой шаг?
Старый 29.12.2009, 01:43   #17  
Bober is offline
Bober
Участник
 
311 / 104 (4) +++++
Регистрация: 29.05.2007
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А может действительно в таком подходе и нет ничего криминального, может знающие люди поделятся, ради каких преимуществ стоит пойти на такой шаг?
Ради совместимости с другими существующими системами, от которых невозможно отказаться. Такое бывает на средних и крупных производственных предприятиях, где кроме ERP задействованы системы планирования, нормативно-справочной информации, управления складом и пр., со своими специфическими номерами документов, спецификаций, изделий, номенклатур и т.п.
Старый 29.12.2009, 02:11   #18  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Чтобы не сажать производительность, можно было бы сделать...

Если это нужно только для печати — можно рассчитывать display-методом.

Если для поиска — на худой конец продублировать поле, но оно уже не будет в качестве ключевого использоваться в целом ряде таблиц. Хотя можно искать по двум полям, а объединенный номер считать display-методом (убив двух зайцев).

Уж извините. Наболело. Сталкивался с огромной массой решений весьма многочисленной армии консультантов, которые без какой бы то ни было причины (бывают случаи, когда нужно выбирать одно из зол, но это отдельный случай, и решение тогда осознанное) тупо сплошь и рядом принимают решения, которые гробят производительность.
__________________
С уважением,
glibs®
Теги
ax2009, ax4.0, баг, номерная серия

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Номерная серия,,, превышена. tolstjak DAX: Функционал 28 14.01.2013 20:06
Баг? Сравнение строк длиной более 32767 символов vallys DAX: База знаний и проекты 6 16.07.2008 12:18
Номерная серия в виртуальной компании Владимир Максимов DAX: Программирование 2 22.12.2005 12:52
Номерная серия требование-накладная loka DAX: Функционал 2 15.06.2005 13:14
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42

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

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

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