AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.05.2018, 01:42   #1  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Первые впечатления от программирования в 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  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Евгений, если не претендовать на точные цифры, то примерно на сколько больше занимает по времени задача, в 7-ке, по отношению к другим версиям?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 12.05.2018, 09:38   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от EVGL Посмотреть сообщение
вроде, все в стандарте есть, но на деле ни хрена не работает
Можно ли узнать, что именно?

Цитата:
Убивает скорость набора кода (это притом, что работаю в метре от сервера с весьма внушительной производительностью; те рахитичные виртуальные машины, что коллеги из Хайдрабада используют, по ощущениям слабее),
Сам по себе набор по моему опыту особо не тормозит (хотя у меня специфический опыт - я в отдельном модуле не зависящем от application suite в основном).

Компиляция (в том числе фоновая) и intellisense (особенно если var используется) гораздо медленнее чем в Ax6.

Цитата:
отладки, компиляции, сборки, а также параноидальные best practices.
Best practice можно отключать - как конкретные так и проверку при сборке.
Отладку можно настраивать - какие символы загружать и какие нет и загружать по требованию.

Цитата:
Да, build занимает около 12 секунд, но само web-приложение перезапускается вдвое дольше. Мука. По ощущениям, производительность сокращается вдвое.
Я на новых виртуалках посматриваю в resmon - иногда получается, что defender начинает проверять то, что компилируется или саму аксапту - можно добавить в exclusions.
За это сообщение автора поблагодарили: Logger (1), EVGL (5).
Старый 12.05.2018, 22:10   #4  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от belugin Посмотреть сообщение
Можно ли узнать, что именно?
Проблема в постановке задачи и отсутствия общего видения процесса. Не работает 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  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Pustik Посмотреть сообщение
Евгений, если не претендовать на точные цифры, то примерно на сколько больше занимает по времени задача, в 7-ке, по отношению к другим версиям?
Мне кажется, что по сравнению с AX2012 времени на 50%-75% процентов больше, а по сравнению с AX2009 - как минимум на 100%, вдвое. Я еще не учитываю работу отдельного человека-администратора, которые только и занимается тем, что тиражирует все это как минимум в три среды. Ранее это мог реально сделать один человек-пароход, но эти времена ушли.
За это сообщение автора поблагодарили: ax_mct (3).
Старый 13.05.2018, 01:57   #6  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от EVGL Посмотреть сообщение
Мне кажется, что по сравнению с AX2012 времени на 50%-75% процентов больше, а по сравнению с AX2009 - как минимум на 100%, вдвое. Я еще не учитываю работу отдельного человека-администратора, которые только и занимается тем, что тиражирует все это как минимум в три среды. Ранее это мог реально сделать один человек-пароход, но эти времена ушли.
Подозреваю что вдвое это время чистого кодирования. Насколько безопасно партнеру/подрядчику использовать коэффициент два при оценке трудоемкости?

А если надо ловить некую багу в режима саппорта?
А если надо тестировать, а тестировать надо всегда и желательно в дебаггере?

Выделенная роль DevOps в тиме и настроенный по уму TFS это я понимаю что неизбежность.
Я кстати наблюдаю появление такой интересной специализации.
Старый 13.05.2018, 21:43   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,936 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от EVGL Посмотреть сообщение
Мне кажется, что по сравнению с AX2012 времени на 50%-75% процентов больше, а по сравнению с AX2009 - как минимум на 100%, вдвое. Я еще не учитываю работу отдельного человека-администратора, которые только и занимается тем, что тиражирует все это как минимум в три среды. Ранее это мог реально сделать один человек-пароход, но эти времена ушли.
Ну а хоть в чем-нибудь выигрыш есть ?
Старый 14.05.2018, 09:14   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Logger Посмотреть сообщение
Ну а хоть в чем-нибудь выигрыш есть ?
Теперь среда разработки - visual studio. Со всеми плюсами и минусами (тут замучаеншься перечислять - от нормальных табов до дебаггера с условными точками останова и трейспоинтами. Правда, например, перекрестные ссылки победнее стали и поиск по солюшенам не до конца удобно работает - издержки того, что формат хранения отличается от формата представления).

Еще X++ немножко доточили (например очень удобно определять переменные по месту первого использвания).

Удобно, что исходники хранятся в файлах на диске - раньше при работе с системой контроля версий была рассинхронизация, так же можно их обрабатывать при помощи powershell, например.
За это сообщение автора поблагодарили: alex55 (3).
Старый 14.05.2018, 09:37   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,936 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Спс. А то все один негатив был.
Надо бы сбалансировать впечатление
Старый 14.05.2018, 10:16   #10  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,506 / 428 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от belugin Посмотреть сообщение
Еще X++ немножко доточили (например очень удобно определять переменные по месту первого использвания).
когда-то именно это называли главным негативным свойством бейсика, которое мешает готовить хороших программистов
вот и думай теперь - то ли тогда врали, то ли мс под двоечников прогнулся...
__________________
С уважением,
Вячеслав
Старый 14.05.2018, 10:20   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от pitersky Посмотреть сообщение
когда-то именно это называли главным негативным свойством бейсика, которое мешает готовить хороших программистов
Кто, когда и почему называл? Это уже настолько общее место в современных языках программирования, что уж не помню, когда это критиковали.
Старый 14.05.2018, 10:46   #12  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от pitersky Посмотреть сообщение
когда-то именно это называли главным негативным свойством бейсика, которое мешает готовить хороших программистов, вот и думай теперь - то ли тогда врали, то ли мс под двоечников прогнулся...
Нет, действительно удобно. В языке C это было с самого начала c 80-x годов, если не ошибаюсь.
Старый 14.05.2018, 14:17   #13  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,506 / 428 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от belugin Посмотреть сообщение
Кто, когда и почему называл? Это уже настолько общее место в современных языках программирования, что уж не помню, когда это критиковали.
ну вот когда я изучал в школе Паскаль, то во всех учебниках одним из главных его декларируемых преимуществ над Бейсиком была именно описательная часть. Мол, в правильных языках программирования все переменные сначала описываются в заголовке, а уже потом где-то в теле применяются.
Не так уж и давно это было
__________________
С уважением,
Вячеслав

Последний раз редактировалось pitersky; 14.05.2018 в 14:35.
Старый 14.05.2018, 15:16   #14  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Давно. 30 лет назад. )
Старый 14.05.2018, 17:25   #15  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Сейчас вроде пришли к тому, что явно обзявлять надо, но необязательно в каком-то отдельном месте. То есть в js, наприммер можно вот так:

X++:
x = 1
но рекомендуют вот так:

X++:
var  x = 1;
Старый 14.05.2018, 18:08   #16  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,506 / 428 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Прям бейсик как он есть))))))
__________________
С уважением,
Вячеслав
Старый 14.05.2018, 20:53   #17  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от pitersky Посмотреть сообщение
ну вот когда я изучал в школе Паскаль, то во всех учебниках одним из главных его декларируемых преимуществ над Бейсиком была именно описательная часть. Мол, в правильных языках программирования все переменные сначала описываются в заголовке, а уже потом где-то в теле применяются.
Не так уж и давно это было
Это был как раз раздел VAR. Суммируя объем переменных в разделе можно было определить размер области стека, в которой и размещались локальные переменные. Там же вроде как и параметры были. В Х++ сделали такой раздел "до точки с запятой". Ну а теперь вроде бы можно объявлять переменные в любой локальной области, будь то цикл или if. Теперь все как в Java.
__________________
// no comments
Старый 15.05.2018, 09:25   #18  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от pitersky Посмотреть сообщение
Прям бейсик как он есть))))))
В джаваскрипте много всяких несуразностей (в качестве примера можно зайти на сайт http://www.jsfuck.com/ который превращает строчку на js в строчку только из скобочек, которая, тем не менее делает то же самое).

НО X++ скорее наследует концепции из C#:
  • строгая статическая типизация
  • обязательное декларирование переменных
Более того, начиная с Ax2012 его сделали строже, в том, что касается наследования и привидений типов, в 7 он примерно на уровне C# (бесит, что есть неявное приведение типов при присваивании и передаче параметров и динамические вызовы, но это совместимость)
Старый 15.05.2018, 15:10   #19  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
В джаваскрипте много всяких несуразностей
...
в 7 он примерно на уровне C# (бесит, что есть неявное приведение типов
...
То есть к примеру приведение int к boolean, 0 к false?

Я могу простить все недостатки среде программирования и языку только за то что можно работать локально на макбуке 7-8 летней давности. C понтом, в старбаксе

Вот что лично меня бесит это все увеличивающееся количество требуемого железа для программирования. Есть чувство что это неестественно. Так не должно быть.
Цитата:
Убивает скорость набора кода (это притом, что работаю в метре от сервера с весьма внушительной производительностью; те рахитичные виртуальные машины, что коллеги из Хайдрабада используют, по ощущениям слабее), отладки, компиляции, сборки, а также параноидальные best practices. Да, build занимает около 12 секунд, но само web-приложение перезапускается вдвое дольше. Мука.
Старый 15.05.2018, 16:20   #20  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от ax_mct Посмотреть сообщение
То есть к примеру приведение int к boolean, 0 к false
Это-то ладно, а вот callInventTrans(custTrans) считает что надо скастить касттранс к инвенттранс, а не ругнуться + нету каста на лету:

((CustTrans)common).accountNum
Теги
ax7, dynamics 365 for operations, x++

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
instructorbrandon: April 12th, One Hour D365UG Training Webinar on Undocumented Technique for Performance Tuning D365FO Blog bot DAX Blogs 0 11.04.2018 03:42
D365FO - Как выбрать группу ресурсов (Azure Resource Group) для одно-серверной облачной среды D365FO? MarinaAX DAX: Администрирование 1 14.02.2018 00:03
cleverax: D365FO: Using Bar codes, External codes and GTIN in Warehouse app to identify an item. Blog bot DAX Blogs 0 03.02.2018 21:13
cleverax: D365FO: Manual inbound load rating Blog bot DAX Blogs 0 03.02.2018 21:13
Первые впечатления от АКСАПТЫ Rafael DAX: Прочие вопросы 0 27.11.2001 21:24

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

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

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