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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.04.2017, 04:47   #241  
trud is offline
trud
Участник
 
407 / 279 (10) ++++++
Регистрация: 07.06.2003
Вот еще из новинок D365 - когда создаете индекс по умолчанию он теперь уникальный -Allow duplicates = No. А чтобы так сказать преждевременно не спугнуть разработчика, новый движок синхронизации в целях оптимизации вообще не пытается синхронизировать таблицу в окружении разработки если менялись только индексы.
Т.е. создаете индекс(не меняя никаких сво-в), тестируете, все ОК. далее заливаете на LCS, отдаете клиенту и вуаля - получаете ошибку синхронизации.
Создал по этому поводу реквест на ideas
https://ideas.dynamics.com/ideas/dyn...ions/ID0001383
Старый 17.05.2017, 14:56   #242  
mayk is offline
mayk
Участник
Аватар для mayk
 
35 / 29 (1) +++
Регистрация: 07.03.2008
Вчера вылезло нечто странное в 2012 аксапте.

Код шёл примерно так (очень упрощенная версия)
X++:
[record1] = map.lookup(#current); 
tmpTable.value = strfmt("%1", record1.(fieldnum(RealTable, dataAreaid)))
И несмотря на то, что RealTable record1 был положен в карту абсолютно нормальным(dataAreaId заполнен, никаких select crosscompany, всё как обычно)
это вылетало с "Внутренняя ошибка номер 25".

Научный метод тыка показал, что info(record1.dataAreaId); работает и показывает код компании. А вот info(record1.(fieldnum(RealTable, dataAreaid))) вылетает.

Веселье продолжилось, дальнейшее шаманство показало что
X++:
[recordTmp] = map.lookup(#current); 
record1.data(recordTmp); // <<< копируем полученное из map'а
info(record1.(fieldnum(RealTable, dataAreaid)))
tmpTable.value = record1.(fieldnum(RealTable, dataAreaid))
работает.

Я ничего не понял.
Старый 17.05.2017, 15:10   #243  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,694 / 3296 (151) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от mayk Посмотреть сообщение
Научный метод тыка показал, что info(record1.dataAreaId); работает и показывает код компании. А вот info(record1.(fieldnum(RealTable, dataAreaid))) вылетает.
Проверьте, не является ли map'ом ваш RealTable.
коды системных полей могут отличаться в map и в таблицах, которые реально находятся под мапом.
__________________
GitHub, Facebook, mazzy.priot, mazzy.music, coub.
Старый 17.05.2017, 15:50   #244  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,282 / 1940 (73) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Интересно если в первом случае сделать fieldNum(Common, DataAreaId)?

По-идее должны быть одинаковые идентификаторы системных полей, но вдруг
Старый 17.05.2017, 16:42   #245  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
259 / 317 (11) ++++++
Регистрация: 08.08.2007
Думаю это глюк с наследованием таблиц, вот пример накидал в джобике
X++:
static void InhTab(Args _args)
{
    AgreementHeader         ah;
    SalesAgreementHeader    sah;
    container               buf;
    Common                  record;
    
    select firstOnly sah;
    
    buf = [sah];
    
    [record] = buf;
    
    info(record.(fieldNum(Common, dataAreaId)));
}
Если запустить на выполнение то ошибка будет, а если поменять sah на ah, то все ок, скорее всего нужно делать для курсора явное приведение к базовому типу, тогда проблем не будет.
билд 6.3.3000.617
__________________
Sergey Nefedov,
IT Magnet
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.05.2017, 11:28   #246  
mnt_dx is offline
mnt_dx
Участник
Лучший по профессии 2014
Axapta Retail User
 
1,552 / 163 (9) ++++++
Регистрация: 17.02.2011
Адрес: К Северу через Северо-Запад
Нажмите на изображение для увеличения
Название: import.png
Просмотров: 55
Размер:	68.1 Кб
ID:	11426
За это сообщение автора поблагодарили: mazzy (2).
Старый 06.07.2017, 05:57   #247  
trud is offline
trud
Участник
 
407 / 279 (10) ++++++
Регистрация: 07.06.2003
инфолог тоже не пережил дигитал трансформашн

такой код в ах2012 и ниже выдавал 502 сообщения с ошибками и 502 инфо(что и ожидалось). при этом можно было скопировать содержимое одним кликом
X++:
int i;
for( i =1; i <= 502; i++) error(strFmt("line error %1", i));
for( i =1; i <= 502; i++) info(strFmt("line info %1", i));
в новой АХ(апдейт8) выдаются только 500 инфо, простой возможности копирования нет
Миниатюры
Нажмите на изображение для увеличения
Название: Info500.jpg
Просмотров: 1
Размер:	53.4 Кб
ID:	11553  

Последний раз редактировалось trud; 06.07.2017 в 06:02.
Старый 06.07.2017, 08:08   #248  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,282 / 1940 (73) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Цитата:
Сообщение от trud Посмотреть сообщение
инфолог тоже не пережил дигитал трансформашн

такой код в ах2012 и ниже выдавал 502 сообщения с ошибками и 502 инфо(что и ожидалось). при этом можно было скопировать содержимое одним кликом
X++:
int i;
for( i =1; i <= 502; i++) error(strFmt("line error %1", i));
for( i =1; i <= 502; i++) info(strFmt("line info %1", i));
в новой АХ(апдейт8) выдаются только 500 инфо, простой возможности копирования нет
Да, с инфологом действительно все очень печально
Старый 06.07.2017, 17:00   #249  
Damn is offline
Damn
Участник
 
310 / 86 (3) ++++
Регистрация: 28.05.2003
Адрес: Москва
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Да, с инфологом действительно все очень печально
Ну слава богу. А то мне уж начало казаться что мне одному мягко говоря неудобен новый инфолог.
__________________
Дмитрий
Старый 17.07.2017, 12:23   #250  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,282 / 1940 (73) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
После изменения энума ModuleInventPurchSales чтоб он был Extensible, нашли такой код в классе MCRCatalogAreaAnalysisDP, так как стал валится Compiler Warning: ExtensibleEnumInNumericalAssignment

X++:
    AmountMST cost = this.itemPrice(ModuleInventPurchSales::Invent);
    AmountMST sales = this.itemPrice(ModuleInventPurchSales::Sales);
    ...

    //Avoid division by zero
    if (this.itemPrice(ModuleInventPurchSales::Sales == 0))
    {
        mcrCatalogAreaAnalysisTmp.CogsPercent = 0;
    }
    else
    {
        mcrCatalogAreaAnalysisTmp.CogsPercent = cost / Sales;
    }
А вот как наши доблестные девелоперы пофиксили это

Нажмите на изображение для увеличения
Название: ff.jpg
Просмотров: 16
Размер:	48.0 Кб
ID:	11566

Последний раз редактировалось kashperuk; 17.07.2017 в 12:26.
За это сообщение автора поблагодарили: Stitch_MS (2), gl00mie (2), skuull (2), macklakov (1).
Старый 17.07.2017, 14:52   #251  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
216 / 201 (7) ++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А вот как наши доблестные девелоперы пофиксили это
Выглядит так, будто доблестные девелоперы умеют писать скрипты, но не любят проверять результаты их работы.
Старый 17.07.2017, 16:03   #252  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,282 / 1940 (73) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Выглядит так, будто доблестные девелоперы умеют писать скрипты, но не любят проверять результаты их работы.
Если бы дело было только в этом.
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов..
Старый 17.07.2017, 18:38   #253  
dech is offline
dech
Участник
Аватар для dech
 
416 / 173 (6) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Есть такая полезная программка PVS-Studio.
Один из постов про нее на хабре очень в тему.
https://habrahabr.ru/company/pvs-studio/blog/329090/
Не мешало бы аналог для АХ забабахать
__________________
// no comments
Старый 17.07.2017, 21:48   #254  
skuull is offline
skuull
Участник
Лучший по профессии 2014
Most Valuable Professional
 
302 / 229 (8) ++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Если бы дело было только в этом.
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов..
А сколько ещё изменений было в этом ревью ? Там же есть зависимость между длинной изменения и качеством его ревью
Старый 18.07.2017, 00:27   #255  
ax_mct is offline
ax_mct
Участник
Аватар для ax_mct
 
1,570 / 505 (20) +++++++
Регистрация: 10.10.2005
Адрес: PHP
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Если бы дело было только в этом.
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов..
Не в скобках дело, а в полном абзаце мозга. Никакие тесты не помогут если мы проверяем потенциально на ноль одно значение, а делим на другое. При втором вызове функция может возвратить другое значение. C вероятностью практически нулевой конечно, но мы же программисты или где

X++:
AmountMST cost = this.itemPrice(ModuleInventPurchSales::Invent);
    AmountMST sales = this.itemPrice(ModuleInventPurchSales::Sales);
    ...

    //Avoid division by zero
    if (sales == 0)
    {
        mcrCatalogAreaAnalysisTmp.CogsPercent = 0;
    }
    else
    {
        mcrCatalogAreaAnalysisTmp.CogsPercent = cost / sales;
    }
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 18.07.2017, 03:30   #256  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
Сотрудники Microsoft Dynamics
 
1,938 / 832 (31) +++++++
Регистрация: 03.04.2002
Адрес: Australia
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Не в скобках дело, а в полном абзаце мозга. Никакие тесты не помогут если мы проверяем потенциально на ноль одно значение, а делим на другое.
Да не, он пытался проверить тоже самое значение которое попадет в знаменатель. Но зачем-то решил его вычислить повторно и при этом перепутал местоположение скобки. Код должен был выглядеть вот так:
if (this.itemPrice(ModuleInventPurchSales::Sales) == 0)
Такое случается по запаре. Ничего особенного.
Но вот фикс шедеврален! Это же человек не просто колотил код на скорость. Это вдумчиво выловили баг, подумали над его природой и исправили. Кажется я начинаю понимать почему местный саппорт так неохотно репортит даже доказанные баги с указанием где что и как поломано в продуктовую команду.
__________________
Isn't it nice when things just work?
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 18.07.2017, 06:14   #257  
dech is offline
dech
Участник
Аватар для dech
 
416 / 173 (6) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Или через тернарный оператор:
X++:
mcrCatalogAreaAnalysisTmp.CogsPercent = sales ? cost / sales : 0;
__________________
// no comments
Старый 18.07.2017, 11:27   #258  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,282 / 1940 (73) ++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Цитата:
Сообщение от skuull Посмотреть сообщение
А сколько ещё изменений было в этом ревью ? Там же есть зависимость между длинной изменения и качеством его ревью
Еще где-то 10 других изменений. Я их побоялся смотреть
Старый 18.07.2017, 11:53   #259  
VORP is offline
VORP
Участник
 
97 / 79 (3) ++++
Регистрация: 26.05.2006
Ну у человека была задача пофиксить ошибку компиляции, которой раньше не было
Может быть он и видел эти скобочки, но исправление скобочек приведёт что что-то будет по другому работать, а следовательно могут упасть автоматы, а потом найдут того, кто поменял и спросят - зачем поменял, а автоматы не поменял, а менять автоматы надо полдня прогонять их и разбираться почему они падают(не факт что из-за изменения, но это надо ещё доказать), и вообще тебе надо было сделать чтоб компилировалось просто
Старый 18.07.2017, 13:02   #260  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
688 / 521 (19) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от macklakov Посмотреть сообщение
Но вот фикс шедеврален! Это же человек не просто колотил код на скорость. Это вдумчиво выловили баг, подумали над его природой и исправили.
Как раз не вдумчиво. Механически заменили константу 0 на его аналог в енуме. Это чистой воды копи-пастинговый, рутинный подход. Программисты любят копи-паст, как ни крути.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Теги
axapta, cil, rasset, баг

 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:48.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.