|
![]() |
#1 |
Участник
|
Цитата:
![]() |
|
![]() |
#2 |
Banned
|
Цитата:
![]() 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). |
![]() |
#3 |
NavAx
|
Цитата:
if (this.itemPrice(ModuleInventPurchSales::Sales) == 0) Такое случается по запаре. Ничего особенного. Но вот фикс шедеврален! Это же человек не просто колотил код на скорость. Это вдумчиво выловили баг, подумали над его природой и исправили. Кажется я начинаю понимать почему местный саппорт так неохотно репортит даже доказанные баги с указанием где что и как поломано в продуктовую команду.
__________________
Isn't it nice when things just work? |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#4 |
Участник
|
Есть такая полезная программка PVS-Studio.
Один из постов про нее на хабре очень в тему. https://habrahabr.ru/company/pvs-studio/blog/329090/ Не мешало бы аналог для АХ забабахать ![]()
__________________
// no comments |
|
![]() |
#5 |
Участник
|
Или через тернарный оператор:
X++: mcrCatalogAreaAnalysisTmp.CogsPercent = sales ? cost / sales : 0;
__________________
// no comments |
|
![]() |
#6 |
Banned
|
Цитата:
Заменить переменную - это одно, тернарным это уже переписывать код, так можно заменить один глупый баг другим, что часто и происходит при переписке кода. |
|
|
За это сообщение автора поблагодарили: dech (1). |
![]() |
#7 |
Участник
|
Ну у человека была задача пофиксить ошибку компиляции, которой раньше не было
![]() Может быть он и видел эти скобочки, но исправление скобочек приведёт что что-то будет по другому работать, а следовательно могут упасть автоматы, а потом найдут того, кто поменял и спросят - зачем поменял, а автоматы не поменял, а менять автоматы надо полдня прогонять их и разбираться почему они падают(не факт что из-за изменения, но это надо ещё доказать), и вообще тебе надо было сделать чтоб компилировалось просто ![]() |
|
![]() |
#8 |
Участник
|
Еще нашел такое сегодня
WHSWorkExecuteDisplayInquiryItem.buildItemInquiry(): X++: ... if (availQty == 0 && pickedQty == 0 && physInventQty == 0) { // clear all totals availQty = 0; pickedQty = 0; physInventQty = 0; } ... ![]() |
|
|
За это сообщение автора поблагодарили: mazzy (2), TasmanianDevil (1). |
![]() |
#9 |
Участник
|
![]() |
|
![]() |
#10 |
Участник
|
Извечная проблема локализаторов - кол-во символов в переведенном слове больше чем в переводимом. В компьютерных играх кто по-креативнее пытались переводить такие слова как-то шуточно, а не тупо урезая слово. В данном случае видимо для 4-х буквенного "EXIT" подошло бы "УЙТИ"
![]() |
|
![]() |
#11 |
Axapta
|
Устанавливаем SSRS. Вроде все успешно завершается. Лезем в AX - нет ничего. Смотрим в лог установки - и оба-на, оказывается ошибка. WTF? С ошибкой-то разобрались, но писать "Setup was completed successfully", когда на самом деле "Reporting Services Extension was not configured" как-то странно.
Цитата:
2017-07-20 20:16:42Z Error executing command: USE [*******];
2017-07-20 20:16:42Z DECLARE @tableName NVARCHAR(64); 2017-07-20 20:16:42Z DECLARE @tableId int; 2017-07-20 20:16:42Z DECLARE @utilElementTypeTable AS INT; 2017-07-20 20:16:42Z SELECT @tableName = N'SRSServers'; 2017-07-20 20:16:42Z SELECT @utilElementTypeTable = 44; 2017-07-20 20:16:42Z SELECT @tableId = [AxId] FROM [ModelElement] WHERE [ElementType] = @utilElementTypeTable AND [Name] = @tableName; 2017-07-20 20:16:42Z SELECT @tableId; 2017-07-20 20:16:42Z Invalid object name 'ModelElement'. 2017-07-20 20:16:42Z Error executing command: use [*******]; exec [sp_AddReportServer] @serverId = N'*******', @serverUrl = N'*******', @isDefault = 1, @axReportFolder = N'DynamicsAX', @description = N'', @reportManagerUrl = N'*******', @sqlServerInstanceName = N'MSSQLSERVER', @aosServerName = N'*******', @configurationId = N'*******', @isSharepointIntegrated = 0, @recId = 5637268379 2017-07-20 20:16:42Z Cannot insert the value NULL into column 'AOSID', table '*******.dbo.SRSSERVERS'; column does not allow nulls. INSERT fails. 2017-07-20 20:16:42Z Changed database context to '*******'. 2017-07-20 20:16:42Z The statement has been terminated. 2017-07-20 20:16:42Z ****************************************************************************************************** 2017-07-20 20:16:42Z Reporting Services Extension was not configured. An unknown issue occurred. Please contact your administrator. 2017-07-20 20:16:42Z ******************************************************************************************************
__________________
С уважением, Олег. |
|
![]() |
#12 |
Участник
|
Тонкости программирования с MapIterator
X++: if(!mi.more()) while(mi.more()) // документы создавались, но откатились { ...
__________________
// no comments |
|
![]() |
#13 |
Мрачный тип
|
Есть мнение, что было бы крайне не лишним у Enum'ов контролировать не только уникальность кодовых обозначений и числовых значений элементов, но и меток и их содержания.
Для примера, enum InventTransType, элементы Asset и FixedAssets_RU привязаны к разным меткам, @SYS12578 и @SYS19633, имеющих идентичное содержание, а именно "Основные средства". Пробуем фильтровать складские проводки по типу движения "Основные средства", надеясь увидеть расходы по вводу ОС в российском модуле ОС - получаем фиг. Ставим вместо "Основные средства" в значение ограничения по типу движения величину 100 (числовое значение элемента FixedAssets_RU) - и, о чудо, запрос на форме вернул данные. Двигаемся дальше, добиваем запрос прочими ограничениями - получаем фиг . Что же случилось ? При вызове диалога редактирования запроса значение ограничения по полю типа движения "магическим" образом поменялось со 100 на "Основные средства" и снова интерпретируется системой, как запрос на движения, относящиеся к международному, а не российскому, модулю ОС.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: Pustik (1). |
![]() |
#14 |
Участник
|
Аналогичные проблемы у кнопок типа CommandButton, когда пытаешься в свойстве кнопки Command установить какое-нибудь значение, например "Отмена".
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
![]() |
#15 |
Участник
|
А еще запрещать пустые метки.
А то при перепаковке запросов значение фильтра может теряться. |
|
![]() |
#16 |
Участник
|
Я немного недоумеваю от интерфейса АХ7 местами.
В форме настройки номенклатурных групп, например, предлагается несколько горизонтальных скроллов. Помоги себе сам: |
|
![]() |
#17 |
Участник
|
Это похоже глобальная проблема веб интерфейсов от Микрософта: такая же бяка в веб-интерфейсе Проджекта.
__________________
Ален ноби, ностра алис. Что означает - если один человек построил, другой завсегда разобрать может. |
|
![]() |
#18 |
Участник
|
|
|
![]() |
#19 |
NavAx
|
Очень веселит манера MS, на определенной стадии обсуждения бага, отвечать "by design". Просьбы показать этот самый дизайн или внести в него исправления воспринимаются как возмутительное нарушение всяких норм приличия, граничащее с клиническим идиотизмом.
__________________
Isn't it nice when things just work? |
|