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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.09.2021, 20:37   #41  
imir is offline
imir
Участник
 
159 / 161 (6) ++++++
Регистрация: 28.05.2010
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
А ещё это освобождает вендора от неприятных раздумий типа «а не breaking ли change я сейчас пилю?»

Вот нашел специально, метод update() в таблице AssetLeaseIndexRateTable - [Hookable(false)]

Т.е. чтобы при апдейте записи по феншую через COC внутри транзакции что-то дописать, придется запрос делать в МС, тупо на табличный метод update? Либо МС избавился не только от неприятных раздумий, а в принципе.. либо одно из двух )
Старый 01.10.2021, 11:36   #42  
axm2017 is offline
axm2017
Участник
 
1,909 / 308 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от belugin Посмотреть сообщение
Мы кажется это обсуждали уже, но я забыл зачем именно это нужно и по-быстрому не нашел.
На текущий момент при запуске ER отчета действует следующая схема, как понимаю:

Формат (format) находит в модели (model) структуру (root?), на основе которой он создан, и далее модель по структуре, находит соответствие (mapping) с данными системы.
Однако соответствий может быть несколько.

В настоящий момент система не позволяет выбрать и для корректной работы администратор ER обязан всегда поддерживать уникальность связки
format - mapping - structure of model.

Для каждого mapping должна быть своя структура иначе любой другой отчет и mapping с той же структурой приведет к проблеме.

На сколько знаю такие коллизии возможны в накладных (т.е. загрузишь отчеты а они будут работать только либо/либо) к примеру да и не только.

Неплохо ввести в форматах явное указание маппинга при необходимости на уровне параметра чтобы решить такие коллизии.

Последний раз редактировалось axm2017; 01.10.2021 в 11:39.
Старый 01.10.2021, 14:30   #43  
axm2017 is offline
axm2017
Участник
 
1,909 / 308 (14) ++++++
Регистрация: 15.05.2017
Промежуточный итог как понимаю:

При задании доступа помни что чем меньше уровень доступа, тем проще анализировать код.

При указании private обоснуй для окружающих почему ты уверен что метод не потребуется извне.

Internal используй если ты из MS и уже смирился с этим.

Юзай final если возможно

Что еще?
Старый 01.10.2021, 14:34   #44  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
Сообщение от imir Посмотреть сообщение
Вот нашел специально, метод update() в таблице AssetLeaseIndexRateTable - [Hookable(false)]

Т.е. чтобы при апдейте записи по феншую через COC внутри транзакции что-то дописать, придется запрос делать в МС, тупо на табличный метод update? Либо МС избавился не только от неприятных раздумий, а в принципе.. либо одно из двух )
В этом случае достаточно к системному событию onUpdating или onUpdated обработчик написать? Но да, в целом выглядит так, будто крупные новые фичи закрываются намеренно.
Старый 02.10.2021, 10:52   #45  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от axm2017 Посмотреть сообщение
При указании private обоснуй для окружающих почему ты уверен что метод не потребуется извне.

Internal используй если ты из MS и уже смирился с этим.
По-моему, если это внутренний код который никто снаружи не использует, то лучше все-таки по умолчанию private. Если кому-то надо будет поиспользовать - он сможет изменить модификатор на какой надо и это будет светиться на code review - "здесь сделан новый интерфейс, проверь, что все сделали правильно".

Если кто используется внешними потребителями у которых нет контрля над вашим кодом, надо понять модель обновления. Если вам не нужно соблюдать обратную совместимость, то можно делать как угодно - если вы что-то измените это будет проблема того, кто воспользовался вашим интерфейсом.

Если вы сделаете что-то protected, то надо рассматривать это как один из интерфейсов расширения. Если вы перекрываете метод с поведением в подклассе, то это как-правило нарушение LSP - обычно более логичная структура кода получается, если выделить абстрактный суперкласс и создать два наследника.

Официльные рекомендации для ISV - вот тут.

Последний раз редактировалось belugin; 02.10.2021 в 10:59.
За это сообщение автора поблагодарили: sukhanchik (6).
Старый 04.10.2021, 09:32   #46  
axm2017 is offline
axm2017
Участник
 
1,909 / 308 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от belugin Посмотреть сообщение
По-моему, если это внутренний код который никто снаружи не использует, то лучше все-таки по умолчанию private.
Не использует != не будет использовать. Фичи вполне позволяют решать конфликтные ситуации (на сколько вижу практику того же МС). Private что был до D365 не предполагал что его нельзя поправить минимальными усилиями. В текущей реализации это уже честный private и неправильно выставленный он принесет больше проблем чем профита.

Сейчас для разработчиков бОльшая проблема недоступность к изменению функционала и время реакции.

Как пример те же закрытые командами МС модули. На сколько помню по циклам это около 4 недель ожидания если признают ошибкой (как понял из общения с коллегами это стандартный цикл разработки текущей версии, а далее cherry-picking на версии идущие к выпуску) и 4 недели * 4-5(?) если признают фичей (текущая версия а далее пройдет этапы до выпуска). Это недопустимо долго в реальности так как жить надо сейчас.

Именно по подобным примерам крайне отрицательно отношусь к необдуманному использованию internal без предоставления минимального интерфейса для коррекции вероятных ошибок алгоритмов.

ЗЫ и это кстати одна из причин почему мне нравится ER: как понимаю там цикл от обнаружения ошибки в логике ER конфигураций до выкладывания новой версии измеряется днями, часами. При этом клиент может сам поправить и спокойно жить в ожидании новой официальной версии.

Последний раз редактировалось axm2017; 04.10.2021 в 10:08.
За это сообщение автора поблагодарили: sukhanchik (6).
Старый 04.10.2021, 13:46   #47  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
1. Имел ввиду ситуацию, когда весь код не поставляется внешним потребителям. Например при кастомерской разработке

2. ER это, фактически, автоматизированный copy-on-write - конфигурации микрософт нельзя менять, но можно делать и подключать свои копии
Старый 04.10.2021, 14:30   #48  
axm2017 is offline
axm2017
Участник
 
1,909 / 308 (14) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от belugin Посмотреть сообщение
2. ER это, фактически, автоматизированный copy-on-write - конфигурации микрософт нельзя менять, но можно делать и подключать свои копии
Это если смотреть на уровне структуры внутренних данных (что кстати тоже интересно в плане архитектурного нафига так как насколько понимаю наследники не могут работать без предка, но при этом содержат данные достаточные для автономной работы).
На уровне пользователя, который не лезет в xml все выглядит как наследник.

Последний раз редактировалось axm2017; 04.10.2021 в 14:42.
Старый 04.10.2021, 18:18   #49  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от axm2017 Посмотреть сообщение
выглядит как наследник.
Наследники не могут переопределять типы данных методов, например.

А тут копия - делай что хочешь.

Последний раз редактировалось belugin; 04.10.2021 в 18:51.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
d365technext: Private, Protected and Public attribute access in Class Extension Blog bot DAX Blogs 0 30.07.2018 20:13
i-neti: X++ in AX7: элементы с уровнями доступа private и public. Часть 4 Blog bot DAX Blogs 0 18.04.2017 13:11
mfp: X++ in AX7: Private and public members Blog bot DAX Blogs 12 10.12.2015 09:08
dynamics-ax: Microsoft Highlights New ERP Public Sector Capabilities for AX 2012 Blog bot DAX Blogs 0 23.05.2011 19:11
Rahul Sharma: Convert Dynamics AX Entity Private Address into Public GAB Address Blog bot DAX Blogs 0 07.04.2011 02:15
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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