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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.11.2012, 00:57   #1  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Как гарантированно уронить клиента AX2009
Выделяем пару менюИтемов, и тыкаем в свойство Object

Ахарта не вылетает? - Руки кривые!!! )
За это сообщение автора поблагодарили: Romb (1), ax_mct (1), iCloud (1).
Старый 03.12.2013, 14:23   #2  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Как гарантированно уронить клиента AX2009

1. Создаем Query
2. В источники данных кидаем какую-нибудь табличку.
3. В добавленной табличке в связанные источники данных кидаем связанную табличку
4. Устанавливаем Relations = Yes у добавленной таблички
5. Идем в ветку Relations
6. Правой кнопкой мыши - Копировать

Ахарта не вылетает? - Руки кривые!!! )
За это сообщение автора поблагодарили: TasmanianDevil (1), Atar (2).
Старый 04.12.2013, 11:57   #3  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
В 2012 исправили или такие же баги ?
Старый 04.12.2013, 16:53   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
В 2012 при выделении нескольких пунктов меню не показывается свойство Object, а при попытке копирования relation'а в запросе, созданного по Relations = Yes, ничего не происходит.
Старый 04.12.2013, 17:11   #5  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Thumbs up
Цитата:
Сообщение от gl00mie Посмотреть сообщение
В 2012 при выделении нескольких пунктов меню не показывается свойство Object, а при попытке копирования relation'а в запросе, созданного по Relations = Yes, ничего не происходит.
Значит, поправили. Это радует.
Старый 07.12.2013, 03:11   #6  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Как гарантированно уронить клиента AX2009

1. Берем метод таблицы.
2. Перетаскиваем этот метод с нажатым Ctrl в методы другой таблицы.
3. Удаляем перетащеный метод в исходной таблице
4. Сохраняем.

Ахарта не вылетает? - Руки кривые!!! )
Старый 07.12.2013, 03:12   #7  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Про драг-н-дроп в Ах еще много можно было бы написать... времени жалко.
Старый 10.12.2013, 08:44   #8  
d_alexe is offline
d_alexe
Участник
 
17 / 10 (1) +
Регистрация: 01.04.2009
Цитата:
Сообщение от ta_and Посмотреть сообщение
Выделяем пару менюИтемов, и тыкаем в свойство Object

Ахарта не вылетает? - Руки кривые!!! )
не получилось
выделяешь пару менюитемов и все окно свойств пустое

остальное да работает

application Dax 2009 5.0.1500.2985
Старый 10.12.2013, 09:12   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
При изменении свойств нескольким выделенным объектам заметил такую особенность. Если сначала открыть окно свойств а затем выделить несколько элементов, то с большой вероятностью будет ошибка. А если сначала выделить объекты и уже потом открыть окно свойств, то скорее всего все получится.
Старый 10.12.2013, 11:05   #10  
Romb is offline
Romb
Участник
Аватар для Romb
 
79 / 22 (1) +++
Регистрация: 06.01.2004
На AX 2009 5.0.1500.3761 все стабильно! Выделяешь - вылетаешь!
Работает баг!
Старый 10.12.2013, 18:02   #11  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Как гарантированно уронить клиента 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());
    }
2. запускаем.

Ахарта не вылетает? - Руки кривые!!! )

PS не надо мне говорить, что я делаю неправильно. я знаю, что я делаю неправильно. Но от этого ахарта не должна ложиться насмерть... имхо.

Последний раз редактировалось ta_and; 10.12.2013 в 18:08.
Старый 10.12.2013, 18:08   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Ну... это называется "прострелить себе ногу" - с таким же успехом можно разыменовывать null. Оно как бы общеизвестно, что в цикле с использованием enumerator'ов нельзя менять соотв. коллекцию, а если очень хочется, то надо использовать iterator'ы. Вообще же рекомендуется все желаемые изменения сохранять где-нить сбоку и накатывать на коллекцию после завершения прохода по ней enumerator'ом. См. также Changes to the Collection Classes in Dynamics AX 2012
Старый 10.12.2013, 21:51   #13  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Ну... это называется "прострелить себе ногу"
Я от системы ожидаю адекватного поведения на мои ошибки.
В приведенной документации (кстати по 2012) закономерно говорится, что в таких случаях будет выдано исключение. На этапе компиляции или рантайм - даже не важно.
2009 просто падает. безответно.
Это очень хорошо в тестовом примере.
А если эта хрень написана в 900 строках кода с вызовами разных побочных методов и дополнительных циклов, то искать эту ошибку очень весело.
Ванька-встанька получается.
За это сообщение автора поблагодарили: ax_mct (2).
Старый 10.12.2013, 22:24   #14  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Ноги Аксапте может и другой кто нибудь прострелить с задержкой выстрела до наступления какого либо условия или реального тестирования через месяцы.

То есть знать такие вирусы просто необходимо даже если сам так делать не будешь. Я уверен что процентов 80% как минимум моих коллег о таком и не подозревают.
Best Practices тоже штука общеизвестная но такое впечатление что всем незнакомая
Старый 11.12.2013, 00:20   #15  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от ta_and Посмотреть сообщение
Я от системы ожидаю адекватного поведения на мои ошибки.
У любой системы есть способы ее использования, на которые она рассчитана, и способы, на которые она не рассчитана. Enumerator'ы коллекций не рассчитаны на то, что по ходу работы с ними коллекция будет изменяться. Под отладчиком видно, что изменение коллекции приводит к тому, что enumerator начинает ссылаться на "левый" кусок памяти (в отладчике виден мусор вместо текущего значения). Т.е. изменение коллекции "сбивает" некий указатель, который используется enumerator'ом, и в следующий раз он обращается к области памяти, которая не имеет к коллекции никакого отношения. Я лично подозреваю, что "дураконезащищенность" enumerator'ов была реализована намеренно для повышения производительности их работы. Про эту их особенность просто надо знать - подобно тому, как надо знать про особенности клиент-серверного взаимодействия и то, что некоторые вызовы обрабатываются локально, а некоторые - путешествуют по сети до другого компа и обратно.
Цитата:
Сообщение от ta_and Посмотреть сообщение
В приведенной документации (кстати по 2012) закономерно говорится, что в таких случаях будет выдано исключение.
В приведенной документации говорится, что CLR изначально не позволяла менять коллекцию при одновременной работе с enumerator'ом, и из-за этого в AX 2012 внесли аналогичные изменения в ядро, чтобы коллекции вели себя одинаково при выполнении кода Х++ как в интерпретаторе, так и в CIL. Никто там не говорит, что всем надоели программистские ошибки, и поэтому работу с enumerator'ами ужесточили.
Цитата:
Сообщение от ta_and Посмотреть сообщение
А если эта хрень написана в 900 строках кода с вызовами разных побочных методов и дополнительных циклов, то искать эту ошибку очень весело.
В стандартном приложении той же 2009-й такой "хрени" просто нет: там либо используется enumerator, и коллекция внутри цикла работы с ним не меняется, либо используется iterator, и коллекция внутри цикла работы с ним может меняться, а может и не меняться (часть совсем legacy-кода, видать, написана, когда enumerator'ов в ядре еще не было).
За это сообщение автора поблагодарили: mazzy (2), Link (4).
Старый 11.12.2013, 00:43   #16  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, тут сколько не спорь, а приложение не должно падать при любом раскладе, даже если это не описано в документации. Должно красиво выдавать какое-нибудь умное сообщение и тогда уже падать .
Старый 03.02.2014, 00:39   #17  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Как гарантированно уронить клиента AX2009

Берем любой Query с двумя связанными таблицами,
с установленным свойством relations=Yes
у которых связь идет по двум полям.
Выделяем связи.
Нажимаем Ctrl+C

Ахарта не вылетает? - Руки кривые!!!
Старый 11.10.2016, 02:09   #18  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Не совсем в тему...
Но тоже интересно.
Найди ошибку.
X++:
    #DEFINE.FieldListAX(@"
             CustAccount
        ,    NameAlias
        ,    RouteId
        ,    CityDescription
        ,    CustGroupId
        ,    CustClassificationId
        ,    MainContactWorkerName
        ,    CreditMax
        ,    NumOfDays
        ,    CustDisc
        ,    DefaultAgreementId
        ,    DlvMode
        ")
Старый 11.10.2016, 07:19   #19  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от ta_and Посмотреть сообщение
Найди ошибку.
X++:
    #localmacro.FieldListAX
        @"
             CustAccount
        ,    NameAlias
        ,    RouteId
        ,    CityDescription
        ,    CustGroupId
        ,    CustClassificationId
        ,    MainContactWorkerName
        ,    CreditMax
        ,    NumOfDays
        ,    CustDisc
        ,    DefaultAgreementId
        ,    DlvMode
        "
    #endmacro
Так же смотри AX2009. Не сохраняется Job

Последний раз редактировалось S.Kuskov; 11.10.2016 в 07:31.
Теги
ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
sumitax: AX4.0 to AX2009 Upgrade Back to Basics Blog bot DAX Blogs 0 29.06.2011 19:12
axinthefield: Choosing a Single Deployment or Multiple Deployments of AX2009 Blog bot DAX Blogs 0 15.06.2011 03:25
Khue Trinh: Fill Utility in AX2009 Blog bot DAX Blogs 0 28.09.2010 10:05
Shekhar: Dynamics AX2009 : Standalone Installation on Vista with Role centres and workflow. Blog bot DAX Blogs 0 30.03.2010 15:05
ax2009 & SSRS kitty DAX: Программирование 6 02.04.2009 10:38

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

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

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