|
30.03.2017, 00:37 | #1 |
Британский учённый
|
Цитата:
Сообщение от trud
Оригинально подошли к проблеме переименования полей в D365. При переименовании поля в таблице и нажатии кнопки сохранить старое просто удаляется, а новое создается. Проблема ID наконец-то решена(о чем вроде как даже писали в what's new)
Правда данные при этом тоже удаляются, но кого это волнует.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
За это сообщение автора поблагодарили: macklakov (1). |
30.03.2017, 16:36 | #2 |
Модератор
|
Вынес часть сообщений в отдельную ветку, Как жить без средств разработки и отладки в продуктиве
__________________
-ТСЯ или -ТЬСЯ ? |
|
10.04.2017, 04:25 | #3 |
Участник
|
D365O 1611
X++: driverLog = TMSDriverLog::find(appt.ApptId, true);
driverLog.ActualStartUTCDateTime = DateTimeUtil::utcNow();
driverLog.updateDates();
driverLog.update(); И второй момент, на демо данных у LoadId и TMSApptId одна и та же номерная серия, поэтому вводя аппоинтмент АХ всегда находит сушествующий лоад который никакого отношения к делу не имееет, хотя хотелось бы аппоинтмент X++: case #CheckInOutId: if (mode == WHSWorkExecuteMode::DriverCheckIn || mode == WHSWorkExecuteMode::DriverCheckOut) { if (WHSLoadTable::exist(_data)) { fieldValues.insert(#CheckInOutId, _data); fieldValues.insert(#LoadId, _data); } else if (WHSShipmentTable::exist(_data)) { fieldValues.insert(#CheckInOutId, _data); fieldValues.insert(#LoadId, WHSShipmentTable::find(_data).LoadId); } else if (TMSAppointment::exist(_data) && TMSAppointment::find(_data).ApptRefType == TMSApptRefType::Load) { fieldValues.insert(#CheckInOutId, _data); fieldValues.insert(#LoadId, TMSAppointment::find(_data).ApptRefNum); } else { errorMessage = "@WAX1081"; hasError = true; break; } if (WHSLoadTable::exist(fieldValues.lookup(#LoadId))) { hasError = this.validateLoadIdCheckOut(fieldValues.lookup(#LoadId)); } else { errorMessage = "@WAX3626"; hasError = true; } } break; Последний раз редактировалось skuull; 10.04.2017 в 04:35. |
|
10.04.2017, 07:03 | #4 |
Участник
|
А как быстро исправить этот баг с учетом что приложение залочено?
|
|
|
За это сообщение автора поблагодарили: AlGol (2). |
11.04.2017, 19:54 | #5 |
Участник
|
На подобные вопросы MS вроде обычно отвечает - "не делайте это". Ну то есть не используйте этот функционал.
__________________
Дмитрий |
|
12.04.2017, 04:47 | #6 |
Участник
|
Вот еще из новинок D365 - когда создаете индекс по умолчанию он теперь уникальный -Allow duplicates = No. А чтобы так сказать преждевременно не спугнуть разработчика, новый движок синхронизации в целях оптимизации вообще не пытается синхронизировать таблицу в окружении разработки если менялись только индексы.
Т.е. создаете индекс(не меняя никаких сво-в), тестируете, все ОК. далее заливаете на LCS, отдаете клиенту и вуаля - получаете ошибку синхронизации. Создал по этому поводу реквест на ideas https://ideas.dynamics.com/ideas/dyn...ions/ID0001383 |
|
17.05.2017, 14:56 | #7 |
Участник
|
Вчера вылезло нечто странное в 2012 аксапте.
Код шёл примерно так (очень упрощенная версия) X++: [record1] = map.lookup(#current); tmpTable.value = strfmt("%1", record1.(fieldnum(RealTable, dataAreaid))) это вылетало с "Внутренняя ошибка номер 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 | #8 |
Участник
|
Цитата:
коды системных полей могут отличаться в map и в таблицах, которые реально находятся под мапом. |
|
17.05.2017, 15:50 | #9 |
Участник
|
Интересно если в первом случае сделать fieldNum(Common, DataAreaId)?
По-идее должны быть одинаковые идентификаторы системных полей, но вдруг |
|
17.05.2017, 16:42 | #10 |
Участник
|
Думаю это глюк с наследованием таблиц, вот пример накидал в джобике
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))); } билд 6.3.3000.617
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
25.05.2017, 11:28 | #11 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
06.07.2017, 05:57 | #12 |
Участник
|
инфолог тоже не пережил дигитал трансформашн
такой код в ах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)); Последний раз редактировалось trud; 06.07.2017 в 06:02. |
|
06.07.2017, 08:08 | #13 |
Участник
|
Цитата:
Сообщение от 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)); |
|
06.07.2017, 17:00 | #14 |
Участник
|
Ну слава богу. А то мне уж начало казаться что мне одному мягко говоря неудобен новый инфолог.
__________________
Дмитрий |
|
19.07.2017, 05:06 | #15 |
Участник
|
Зарегистрировал "идею", кому не лень проголосуйте
https://ideas.dynamics.com/ideas/dyn...ions/ID0002243 также чтобы добавили поддержку файлов в RunBase https://ideas.dynamics.com/ideas/dyn...ions/ID0002242 Цитата:
Интересно есть ли какие-нибудь методологии позволяющие как-то бороться с таким(типа если рабочий на конвейере увидел брак, то он должен остановить конвейер, а не просто забить, так как это не его дело). Ведь не работают же так Apple и Google |
|
|
За это сообщение автора поблагодарили: mazzy (2), Logger (3). |
19.07.2017, 16:00 | #16 |
Участник
|
|
|
17.07.2017, 12:23 | #17 |
Участник
|
После изменения энума 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; } Последний раз редактировалось kashperuk; 17.07.2017 в 12:26. |
|
|
За это сообщение автора поблагодарили: Stitch_MS (2), gl00mie (2), skuull (2), macklakov (1). |
17.07.2017, 14:52 | #18 |
Участник
|
|
|
17.07.2017, 16:03 | #19 |
Участник
|
Цитата:
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов.. |
|
17.07.2017, 21:48 | #20 |
Участник
|
А сколько ещё изменений было в этом ревью ? Там же есть зависимость между длинной изменения и качеством его ревью
|
|