17.11.2012, 00:57 | #1 |
Участник
|
Как гарантированно уронить клиента AX2009
Выделяем пару менюИтемов, и тыкаем в свойство Object
Ахарта не вылетает? - Руки кривые!!! ) |
|
|
За это сообщение автора поблагодарили: Romb (1), ax_mct (1), iCloud (1). |
03.12.2013, 14:23 | #2 |
Участник
|
Как гарантированно уронить клиента AX2009
1. Создаем Query 2. В источники данных кидаем какую-нибудь табличку. 3. В добавленной табличке в связанные источники данных кидаем связанную табличку 4. Устанавливаем Relations = Yes у добавленной таблички 5. Идем в ветку Relations 6. Правой кнопкой мыши - Копировать Ахарта не вылетает? - Руки кривые!!! ) |
|
|
За это сообщение автора поблагодарили: TasmanianDevil (1), Atar (2). |
04.12.2013, 11:57 | #3 |
Участник
|
В 2012 исправили или такие же баги ?
|
|
04.12.2013, 16:53 | #4 |
Участник
|
В 2012 при выделении нескольких пунктов меню не показывается свойство Object, а при попытке копирования relation'а в запросе, созданного по Relations = Yes, ничего не происходит.
|
|
04.12.2013, 17:11 | #5 |
Участник
|
|
|
07.12.2013, 03:11 | #6 |
Участник
|
Как гарантированно уронить клиента AX2009
1. Берем метод таблицы. 2. Перетаскиваем этот метод с нажатым Ctrl в методы другой таблицы. 3. Удаляем перетащеный метод в исходной таблице 4. Сохраняем. Ахарта не вылетает? - Руки кривые!!! ) |
|
07.12.2013, 03:12 | #7 |
Участник
|
Про драг-н-дроп в Ах еще много можно было бы написать... времени жалко.
|
|
10.12.2013, 08:44 | #8 |
Участник
|
|
|
10.12.2013, 09:12 | #9 |
Участник
|
При изменении свойств нескольким выделенным объектам заметил такую особенность. Если сначала открыть окно свойств а затем выделить несколько элементов, то с большой вероятностью будет ошибка. А если сначала выделить объекты и уже потом открыть окно свойств, то скорее всего все получится.
|
|
10.12.2013, 11:05 | #10 |
Участник
|
На AX 2009 5.0.1500.3761 все стабильно! Выделяешь - вылетаешь!
Работает баг! |
|
10.12.2013, 18:02 | #11 |
Участник
|
Как гарантированно уронить клиента AX2009
1. создаем джобик X++: Map map; MapEnumerator me; ; map = new Map(Types::String, Types::void); map.insert("1", null); map.insert("2", null); map.insert("3", null); me = map.getEnumerator(); while (me.moveNext()) { if (me.currentKey() == "2") { map.remove(me.currentKey()); } info(me.currentKey()); } Ахарта не вылетает? - Руки кривые!!! ) PS не надо мне говорить, что я делаю неправильно. я знаю, что я делаю неправильно. Но от этого ахарта не должна ложиться насмерть... имхо. Последний раз редактировалось ta_and; 10.12.2013 в 18:08. |
|
10.12.2013, 18:08 | #12 |
Участник
|
Ну... это называется "прострелить себе ногу" - с таким же успехом можно разыменовывать null. Оно как бы общеизвестно, что в цикле с использованием enumerator'ов нельзя менять соотв. коллекцию, а если очень хочется, то надо использовать iterator'ы. Вообще же рекомендуется все желаемые изменения сохранять где-нить сбоку и накатывать на коллекцию после завершения прохода по ней enumerator'ом. См. также Changes to the Collection Classes in Dynamics AX 2012
|
|
10.12.2013, 21:51 | #13 |
Участник
|
Я от системы ожидаю адекватного поведения на мои ошибки.
В приведенной документации (кстати по 2012) закономерно говорится, что в таких случаях будет выдано исключение. На этапе компиляции или рантайм - даже не важно. 2009 просто падает. безответно. Это очень хорошо в тестовом примере. А если эта хрень написана в 900 строках кода с вызовами разных побочных методов и дополнительных циклов, то искать эту ошибку очень весело. Ванька-встанька получается. |
|
|
За это сообщение автора поблагодарили: ax_mct (2). |
10.12.2013, 22:24 | #14 |
Banned
|
Ноги Аксапте может и другой кто нибудь прострелить с задержкой выстрела до наступления какого либо условия или реального тестирования через месяцы.
То есть знать такие вирусы просто необходимо даже если сам так делать не будешь. Я уверен что процентов 80% как минимум моих коллег о таком и не подозревают. Best Practices тоже штука общеизвестная но такое впечатление что всем незнакомая |
|
11.12.2013, 00:20 | #15 |
Участник
|
У любой системы есть способы ее использования, на которые она рассчитана, и способы, на которые она не рассчитана. Enumerator'ы коллекций не рассчитаны на то, что по ходу работы с ними коллекция будет изменяться. Под отладчиком видно, что изменение коллекции приводит к тому, что enumerator начинает ссылаться на "левый" кусок памяти (в отладчике виден мусор вместо текущего значения). Т.е. изменение коллекции "сбивает" некий указатель, который используется enumerator'ом, и в следующий раз он обращается к области памяти, которая не имеет к коллекции никакого отношения. Я лично подозреваю, что "дураконезащищенность" enumerator'ов была реализована намеренно для повышения производительности их работы. Про эту их особенность просто надо знать - подобно тому, как надо знать про особенности клиент-серверного взаимодействия и то, что некоторые вызовы обрабатываются локально, а некоторые - путешествуют по сети до другого компа и обратно.
Цитата:
|
|
|
За это сообщение автора поблагодарили: mazzy (2), Link (4). |
11.12.2013, 00:43 | #16 |
Участник
|
Ну, тут сколько не спорь, а приложение не должно падать при любом раскладе, даже если это не описано в документации. Должно красиво выдавать какое-нибудь умное сообщение и тогда уже падать .
|
|
03.02.2014, 00:39 | #17 |
Участник
|
Как гарантированно уронить клиента AX2009
Берем любой Query с двумя связанными таблицами, с установленным свойством relations=Yes у которых связь идет по двум полям. Выделяем связи. Нажимаем Ctrl+C Ахарта не вылетает? - Руки кривые!!! |
|
11.10.2016, 02:09 | #18 |
Участник
|
Не совсем в тему...
Но тоже интересно. Найди ошибку. X++: #DEFINE.FieldListAX(@"
CustAccount
, NameAlias
, RouteId
, CityDescription
, CustGroupId
, CustClassificationId
, MainContactWorkerName
, CreditMax
, NumOfDays
, CustDisc
, DefaultAgreementId
, DlvMode
") |
|
11.10.2016, 07:19 | #19 |
Участник
|
X++: #localmacro.FieldListAX
@"
CustAccount
, NameAlias
, RouteId
, CityDescription
, CustGroupId
, CustClassificationId
, MainContactWorkerName
, CreditMax
, NumOfDays
, CustDisc
, DefaultAgreementId
, DlvMode
"
#endmacro Последний раз редактировалось S.Kuskov; 11.10.2016 в 07:31. |
|
Теги |
ax2009 |
|
|