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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.04.2017, 04:47   #241  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1630 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Вот еще из новинок 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
 
43 / 65 (3) ++++
Регистрация: 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
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mayk Посмотреть сообщение
Научный метод тыка показал, что info(record1.dataAreaId); работает и показывает код компании. А вот info(record1.(fieldnum(RealTable, dataAreaid))) вылетает.
Проверьте, не является ли map'ом ваш RealTable.
коды системных полей могут отличаться в map и в таблицах, которые реально находятся под мапом.
__________________
полезное на axForum, github, vk, coub.
Старый 17.05.2017, 15:50   #244  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Интересно если в первом случае сделать fieldNum(Common, DataAreaId)?

По-идее должны быть одинаковые идентификаторы системных полей, но вдруг
Старый 17.05.2017, 16:42   #245  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Думаю это глюк с наследованием таблиц, вот пример накидал в джобике
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
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.05.2017, 11:28   #246  
mnt_dx is offline
mnt_dx
Участник
Axapta Retail User
Лучший по профессии 2014
 
1,747 / 188 (10) ++++++
Регистрация: 17.02.2011
Адрес: К Северу через Северо-Запад
Нажмите на изображение для увеличения
Название: import.png
Просмотров: 353
Размер:	68.1 Кб
ID:	11426
За это сообщение автора поблагодарили: mazzy (2).
Старый 06.07.2017, 05:57   #247  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1630 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
инфолог тоже не пережил дигитал трансформашн

такой код в ах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
Просмотров: 527
Размер:	53.4 Кб
ID:	11553  

Последний раз редактировалось trud; 06.07.2017 в 06:02.
Старый 06.07.2017, 08:08   #248  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от 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
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Да, с инфологом действительно все очень печально
Ну слава богу. А то мне уж начало казаться что мне одному мягко говоря неудобен новый инфолог.
__________________
Дмитрий
Старый 17.07.2017, 12:23   #250  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
После изменения энума 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
Просмотров: 469
Размер:	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
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А вот как наши доблестные девелоперы пофиксили это
Выглядит так, будто доблестные девелоперы умеют писать скрипты, но не любят проверять результаты их работы.
Старый 17.07.2017, 16:03   #252  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Выглядит так, будто доблестные девелоперы умеют писать скрипты, но не любят проверять результаты их работы.
Если бы дело было только в этом.
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов..
Старый 17.07.2017, 18:38   #253  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Есть такая полезная программка PVS-Studio.
Один из постов про нее на хабре очень в тему.
https://habrahabr.ru/company/pvs-studio/blog/329090/
Не мешало бы аналог для АХ забабахать
__________________
// no comments
Старый 17.07.2017, 21:48   #254  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Если бы дело было только в этом.
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов..
А сколько ещё изменений было в этом ревью ? Там же есть зависимость между длинной изменения и качеством его ревью
Старый 18.07.2017, 00:27   #255  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от 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
 
2,230 / 975 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от 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
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Или через тернарный оператор:
X++:
mcrCatalogAreaAnalysisTmp.CogsPercent = sales ? cost / sales : 0;
__________________
// no comments
Старый 18.07.2017, 11:27   #258  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от skuull Посмотреть сообщение
А сколько ещё изменений было в этом ревью ? Там же есть зависимость между длинной изменения и качеством его ревью
Еще где-то 10 других изменений. Я их побоялся смотреть
Старый 18.07.2017, 11:53   #259  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Ну у человека была задача пофиксить ошибку компиляции, которой раньше не было
Может быть он и видел эти скобочки, но исправление скобочек приведёт что что-то будет по другому работать, а следовательно могут упасть автоматы, а потом найдут того, кто поменял и спросят - зачем поменял, а автоматы не поменял, а менять автоматы надо полдня прогонять их и разбираться почему они падают(не факт что из-за изменения, но это надо ещё доказать), и вообще тебе надо было сделать чтоб компилировалось просто
Старый 18.07.2017, 13:02   #260  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от macklakov Посмотреть сообщение
Но вот фикс шедеврален! Это же человек не просто колотил код на скорость. Это вдумчиво выловили баг, подумали над его природой и исправили.
Как раз не вдумчиво. Механически заменили константу 0 на его аналог в енуме. Это чистой воды копи-пастинговый, рутинный подход. Программисты любят копи-паст, как ни крути.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

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