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

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

Ахарта не вылетает? - Руки кривые!!! )
За это сообщение автора поблагодарили: Romb (1), ax_mct (1), iCloud (1).
Старый 03.12.2013, 14:23   #2  
ta_and is offline
ta_and
Участник
 
151 / 60 (3) ++++
Регистрация: 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
 
555 / 32 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
В 2012 исправили или такие же баги ?
Старый 04.12.2013, 16:53   #4  
gl00mie is offline
gl00mie
Участник
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Most Valuable Professional
 
3,461 / 4330 (151) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
В 2012 при выделении нескольких пунктов меню не показывается свойство Object, а при попытке копирования relation'а в запросе, созданного по Relations = Yes, ничего не происходит.
Старый 04.12.2013, 17:11   #5  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
555 / 32 (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
Участник
 
151 / 60 (3) ++++
Регистрация: 26.02.2002
Адрес: СПб
Как гарантированно уронить клиента AX2009

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

Ахарта не вылетает? - Руки кривые!!! )
Старый 07.12.2013, 03:12   #7  
ta_and is offline
ta_and
Участник
 
151 / 60 (3) ++++
Регистрация: 26.02.2002
Адрес: СПб
Про драг-н-дроп в Ах еще много можно было бы написать... времени жалко.
Старый 10.12.2013, 08:44   #8  
d_alexe is offline
d_alexe
Участник
 
14 / 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
Участник
Лучший по профессии 2014
 
3,078 / 1506 (57) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
При изменении свойств нескольким выделенным объектам заметил такую особенность. Если сначала открыть окно свойств а затем выделить несколько элементов, то с большой вероятностью будет ошибка. А если сначала выделить объекты и уже потом открыть окно свойств, то скорее всего все получится.
Старый 10.12.2013, 11:05   #10  
Romb is offline
Romb
Участник
Аватар для Romb
 
76 / 22 (1) +++
Регистрация: 06.01.2004
На AX 2009 5.0.1500.3761 все стабильно! Выделяешь - вылетаешь!
Работает баг!
Старый 10.12.2013, 18:02   #11  
ta_and is offline
ta_and
Участник
 
151 / 60 (3) ++++
Регистрация: 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
Участник
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Most Valuable Professional
 
3,461 / 4330 (151) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Ну... это называется "прострелить себе ногу" - с таким же успехом можно разыменовывать 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
Участник
 
151 / 60 (3) ++++
Регистрация: 26.02.2002
Адрес: СПб
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Ну... это называется "прострелить себе ногу"
Я от системы ожидаю адекватного поведения на мои ошибки.
В приведенной документации (кстати по 2012) закономерно говорится, что в таких случаях будет выдано исключение. На этапе компиляции или рантайм - даже не важно.
2009 просто падает. безответно.
Это очень хорошо в тестовом примере.
А если эта хрень написана в 900 строках кода с вызовами разных побочных методов и дополнительных циклов, то искать эту ошибку очень весело.
Ванька-встанька получается.
За это сообщение автора поблагодарили: ax_mct (2).
Старый 10.12.2013, 22:24   #14  
ax_mct is offline
ax_mct
Участник
Аватар для ax_mct
 
1,388 / 395 (16) ++++++
Регистрация: 10.10.2005
Адрес: PHP
Ноги Аксапте может и другой кто нибудь прострелить с задержкой выстрела до наступления какого либо условия или реального тестирования через месяцы.

То есть знать такие вирусы просто необходимо даже если сам так делать не будешь. Я уверен что процентов 80% как минимум моих коллег о таком и не подозревают.
Best Practices тоже штука общеизвестная но такое впечатление что всем незнакомая
Старый 11.12.2013, 00:20   #15  
gl00mie is offline
gl00mie
Участник
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Most Valuable Professional
 
3,461 / 4330 (151) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Цитата:
Сообщение от 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
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,231 / 1895 (72) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Ну, тут сколько не спорь, а приложение не должно падать при любом раскладе, даже если это не описано в документации. Должно красиво выдавать какое-нибудь умное сообщение и тогда уже падать .
Старый 03.02.2014, 00:39   #17  
ta_and is offline
ta_and
Участник
 
151 / 60 (3) ++++
Регистрация: 26.02.2002
Адрес: СПб
Как гарантированно уронить клиента AX2009

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

Ахарта не вылетает? - Руки кривые!!!
Старый 11.10.2016, 02:09   #18  
ta_and is offline
ta_and
Участник
 
151 / 60 (3) ++++
Регистрация: 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
Участник
Лучший по профессии 2014
 
3,078 / 1506 (57) ++++++++
Регистрация: 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, время: 23:50.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.