12.05.2018, 01:42 | #1 |
Banned
|
Первые впечатления от программирования в D365FO
Ну что же, на этой неделе запрограммировал свою первую полноценную фичу: модификацию импорта не прошедших 'SEPA Direct debit' клиентских платежей на основе существующей конфигурации camt.054 в Electronic Reporting (все как обычно: вроде, все в стандарте есть, но на деле ни хрена не работает).
Сходу пришлось использовать chain on command, создавать entity, но требование все делать через extensions особых проблем не создало. Убивает скорость набора кода (это притом, что работаю в метре от сервера с весьма внушительной производительностью; те рахитичные виртуальные машины, что коллеги из Хайдрабада используют, по ощущениям слабее), отладки, компиляции, сборки, а также параноидальные best practices. Да, build занимает около 12 секунд, но само web-приложение перезапускается вдвое дольше. Мука. По ощущениям, производительность сокращается вдвое. |
|
|
За это сообщение автора поблагодарили: alex55 (1), Ivanhoe (3). |
12.05.2018, 03:04 | #2 |
Участник
|
Евгений, если не претендовать на точные цифры, то примерно на сколько больше занимает по времени задача, в 7-ке, по отношению к другим версиям?
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
12.05.2018, 09:38 | #3 |
Участник
|
Можно ли узнать, что именно?
Цитата:
Убивает скорость набора кода (это притом, что работаю в метре от сервера с весьма внушительной производительностью; те рахитичные виртуальные машины, что коллеги из Хайдрабада используют, по ощущениям слабее),
Компиляция (в том числе фоновая) и intellisense (особенно если var используется) гораздо медленнее чем в Ax6. Цитата:
отладки, компиляции, сборки, а также параноидальные best practices.
Отладку можно настраивать - какие символы загружать и какие нет и загружать по требованию. Цитата:
Да, build занимает около 12 секунд, но само web-приложение перезапускается вдвое дольше. Мука. По ощущениям, производительность сокращается вдвое.
|
|
|
За это сообщение автора поблагодарили: Logger (1), EVGL (5). |
12.05.2018, 22:10 | #4 |
Banned
|
Проблема в постановке задачи и отсутствия общего видения процесса. Не работает end-to-end: pain.008 уходит из журнала платежей клиента, camt.054 с транзакциями без покрытия возвращается обратно.
1) Создаем SEPA direct debit в формате pain.008. Пусть код счета за продажу FTI-0000006. В системе CustTrans.PaymtId никогда не заполняется кроме Бельгии и Финляндии, и, стало быть, никогда, ни в каких условиях кроме этих двух стран не печатается на счете и клиент никогда не узнает, который уникальный номер нужно указать в платеже, чтобы наша система смогла его распознать. Совершенно элементарная задача для любой европейской самописной системы, но в супер-пупер D365FO никто о таких мелочах, как уникальный код платежа, не заботится. Хорошо, модифицируем систему и начнем заполнять это поле. Создаем файл direct debit, счет кодируется в Creditor Reference как RFxxFTI0000006. Разносим журнал, получается платеж и закрытый этим платежом счет. 2) Приходит обратно выписка в формате camt.054. Она особая и содержит только ошибки, т.е. дебеты которые по той или иной причине отфутболиваются обратно. Реализация импорта camt.054 в журнале клиентских платежей сделана в D365FO из расчета на то, что выписка camt.054 содержит переводы-кредиты, инициированные клиентом, хотя на практике полноценная выписка импортируется из MT940 и обработка ее происходит в модуле банка, advanced reconciliation. Напротив, в журнале платежей на практике импортируются ответы из банка (direct debit notification) только для "плохих" транзакций в виде "анти-платежа", его возврата. Система пытается сопоставить с оригинальным счетом, но счет закрыт. На самом деле, надо рассопоставить оригинальный direct debit платеж и сопоставить ее с новым "анти-платежом" из camt.054. Тем самым первоначальный счет становится опять открытым: оплата не прошла. 3) В заимпортированной проводке LedgerJournalTrans.PaymId получает значение RFxxFTI0000006, т.е. не расшифрованный текст с сигнатурой. Чистой воды баг. Последний раз редактировалось EVGL; 12.05.2018 в 22:20. |
|
|
За это сообщение автора поблагодарили: belugin (10), trud (5), NetBus (3). |
12.05.2018, 22:29 | #5 |
Banned
|
Мне кажется, что по сравнению с AX2012 времени на 50%-75% процентов больше, а по сравнению с AX2009 - как минимум на 100%, вдвое. Я еще не учитываю работу отдельного человека-администратора, которые только и занимается тем, что тиражирует все это как минимум в три среды. Ранее это мог реально сделать один человек-пароход, но эти времена ушли.
|
|
|
За это сообщение автора поблагодарили: ax_mct (3). |
13.05.2018, 01:57 | #6 |
Banned
|
Цитата:
Сообщение от EVGL
Мне кажется, что по сравнению с AX2012 времени на 50%-75% процентов больше, а по сравнению с AX2009 - как минимум на 100%, вдвое. Я еще не учитываю работу отдельного человека-администратора, которые только и занимается тем, что тиражирует все это как минимум в три среды. Ранее это мог реально сделать один человек-пароход, но эти времена ушли.
А если надо ловить некую багу в режима саппорта? А если надо тестировать, а тестировать надо всегда и желательно в дебаггере? Выделенная роль DevOps в тиме и настроенный по уму TFS это я понимаю что неизбежность. Я кстати наблюдаю появление такой интересной специализации. |
|
13.05.2018, 21:43 | #7 |
Участник
|
Цитата:
Сообщение от EVGL
Мне кажется, что по сравнению с AX2012 времени на 50%-75% процентов больше, а по сравнению с AX2009 - как минимум на 100%, вдвое. Я еще не учитываю работу отдельного человека-администратора, которые только и занимается тем, что тиражирует все это как минимум в три среды. Ранее это мог реально сделать один человек-пароход, но эти времена ушли.
|
|
14.05.2018, 09:14 | #8 |
Участник
|
Теперь среда разработки - visual studio. Со всеми плюсами и минусами (тут замучаеншься перечислять - от нормальных табов до дебаггера с условными точками останова и трейспоинтами. Правда, например, перекрестные ссылки победнее стали и поиск по солюшенам не до конца удобно работает - издержки того, что формат хранения отличается от формата представления).
Еще X++ немножко доточили (например очень удобно определять переменные по месту первого использвания). Удобно, что исходники хранятся в файлах на диске - раньше при работе с системой контроля версий была рассинхронизация, так же можно их обрабатывать при помощи powershell, например. |
|
|
За это сообщение автора поблагодарили: alex55 (3). |
14.05.2018, 09:37 | #9 |
Участник
|
Спс. А то все один негатив был.
Надо бы сбалансировать впечатление |
|
14.05.2018, 10:16 | #10 |
северный Будда
|
Цитата:
вот и думай теперь - то ли тогда врали, то ли мс под двоечников прогнулся...
__________________
С уважением, Вячеслав |
|
14.05.2018, 10:20 | #11 |
Участник
|
|
|
14.05.2018, 10:46 | #12 |
Banned
|
Нет, действительно удобно. В языке C это было с самого начала c 80-x годов, если не ошибаюсь.
|
|
14.05.2018, 14:17 | #13 |
северный Будда
|
Цитата:
Не так уж и давно это было
__________________
С уважением, Вячеслав Последний раз редактировалось pitersky; 14.05.2018 в 14:35. |
|
14.05.2018, 15:16 | #14 |
Banned
|
Давно. 30 лет назад. )
|
|
14.05.2018, 17:25 | #15 |
Участник
|
Сейчас вроде пришли к тому, что явно обзявлять надо, но необязательно в каком-то отдельном месте. То есть в js, наприммер можно вот так:
X++: x = 1 X++: var x = 1; |
|
14.05.2018, 18:08 | #16 |
северный Будда
|
Прям бейсик как он есть))))))
__________________
С уважением, Вячеслав |
|
14.05.2018, 20:53 | #17 |
Участник
|
Цитата:
Сообщение от pitersky
ну вот когда я изучал в школе Паскаль, то во всех учебниках одним из главных его декларируемых преимуществ над Бейсиком была именно описательная часть. Мол, в правильных языках программирования все переменные сначала описываются в заголовке, а уже потом где-то в теле применяются.
Не так уж и давно это было
__________________
// no comments |
|
15.05.2018, 09:25 | #18 |
Участник
|
В джаваскрипте много всяких несуразностей (в качестве примера можно зайти на сайт http://www.jsfuck.com/ который превращает строчку на js в строчку только из скобочек, которая, тем не менее делает то же самое).
НО X++ скорее наследует концепции из C#:
|
|
15.05.2018, 15:10 | #19 |
Banned
|
Цитата:
Я могу простить все недостатки среде программирования и языку только за то что можно работать локально на макбуке 7-8 летней давности. C понтом, в старбаксе Вот что лично меня бесит это все увеличивающееся количество требуемого железа для программирования. Есть чувство что это неестественно. Так не должно быть. Цитата:
Убивает скорость набора кода (это притом, что работаю в метре от сервера с весьма внушительной производительностью; те рахитичные виртуальные машины, что коллеги из Хайдрабада используют, по ощущениям слабее), отладки, компиляции, сборки, а также параноидальные best practices. Да, build занимает около 12 секунд, но само web-приложение перезапускается вдвое дольше. Мука.
|
|
15.05.2018, 16:20 | #20 |
Участник
|
|
|
Теги |
ax7, dynamics 365 for operations, x++ |
|
|