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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.01.2018, 18:51   #1  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Спасибо. С этим разобрался, да и видел подобные статьи. Теперь другое не получается реализовать. Например в 2012 в стандартные методы типа insert я мог добавить аргумент insert(int _i = 0).
Как сделать подобное в 365?
Старый 24.01.2018, 21:28   #2  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от Skolos Посмотреть сообщение
Спасибо. С этим разобрался, да и видел подобные статьи. Теперь другое не получается реализовать. Например в 2012 в стандартные методы типа insert я мог добавить аргумент insert(int _i = 0).
Как сделать подобное в 365?
Никак. И так же вы сможете передать новый параметр из существующего кода - никак. Остаётся способ передачи переменных через глобальный кеш или статические поля, но это уже на грани с извращением. Вы лучше задачу опишите.

Последний раз редактировалось skuull; 24.01.2018 в 21:32.
Старый 25.01.2018, 01:26   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от skuull Посмотреть сообщение
Никак. И так же вы сможете передать новый параметр из существующего кода - никак. Остаётся способ передачи переменных через глобальный кеш или статические поля, но это уже на грани с извращением. Вы лучше задачу опишите.
А если тащить параметры на самом табличном буфере?
Virtual Field c "SaveContent" = No?
Или завести поле .myParameters типа контейнер и грамотно класть и парсить через свой фрэйморк для этого.
Я бы вообще такой контейнер добавил в .common

А если серьезно то лучше забыть о таких задачах как "как правильно переопределить метод в таблице" в D365. Парадигма программирования изменилась.
Только отсутствие связи или очень слабые связи, то есть или своя таблица или подписка на событие как отмашка.
Старый 25.01.2018, 03:32   #4  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от ax_mct Посмотреть сообщение
А если тащить параметры на самом табличном буфере?
Virtual Field c "SaveContent" = No?
Или завести поле .myParameters типа контейнер и грамотно класть и парсить через свой фрэйморк для этого.
Я бы вообще такой контейнер добавил в .common
Я про это и говорил упоминая извращения. Непонятно что автор собираеться с этим параметром делать.
Старый 25.01.2018, 00:20   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Skolos Посмотреть сообщение
Спасибо. С этим разобрался, да и видел подобные статьи. Теперь другое не получается реализовать. Например в 2012 в стандартные методы типа insert я мог добавить аргумент insert(int _i = 0).
Как сделать подобное в 365?
Тут просто несколько другая парадигма. Для чего мы хотим передать параметр в insert? Чтобы сделать 2 логики, которые будут по-разному отрабатывать при вставке данных в таблицу.

Теперь у нас есть события. Этих событий мы можем наплодить великое множество, гораздо больше, чем 2 варианта. Более того, мы в коде можем управлять последовательностью вызова обработчиков этих событий. Соответственно, теперь каждая логика будет иметь свой обработчик события insert().
Название: SNAG_Program-0024.png
Просмотров: 813

Размер: 15.7 Кб

Тут есть 3 варианта развития. Можно как-то внутри себя договориться и использовать единый обработчик insert-а (один класс) и в нем реализовывать все 100500 вариантов логики. Пример в прошлых версиях - класс InventUpdate и его наследники InventUpd_*. В нашем случае через GlobalCache можно будет создать единый инстанс этого обработчика и следить за этим. Минус такого подхода в том, что должен быть единый и постоянный архитектор, который за этим будет следить. Не все компании считают нужным содержать такого человека.

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

Ну и последний вариант - стараться отучать себя от программирования на insert/update/delete. Всегда можно найти способ этого не делать. Просто очень часто туда вставляют код, т.к. тяжело найти все те места в системе, которые могут вылезти уже после приема разработки. Но такой подход - лишь отсрочка этой проблемы, т.к. постепенно на insert / update / delete переползет вся бизнес-логика модификаций.

Еще маленькое замечание - в целом неважно как "обрастет" код и насколько будет сложно его поддерживать. Конечно есть еще компании, у которых работает AX 3.0, но в большинстве своем жизненный цикл конкретной версии системы не настолько большой (лет 10), поэтому рано или поздно ее все равно будут менять и по сути перевнедрять, т.к. много воды уже утечет с момента первого внедрения. Причем что примечательно, что как раз-таки те компании, которые до сих пор сидят на 3.0 вероятнее всего не имеют и давно уже не имели того единого архитектора, который бы мог все контролировать. Так что плюс-минус неважно насколько "плохим" или "хорошим" со стороны окажется Ваше решение по выбору обходного пути.

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

Последний раз редактировалось sukhanchik; 25.01.2018 в 00:31.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
alirazazaidi: Custom financial Dimension shows in lookup D365 for Finance and operations Blog bot DAX Blogs 0 14.09.2017 13:11
organicax: D365 applying application hotfix Blog bot DAX Blogs 0 11.04.2017 01:31
Фильтрование записей при "переходе к основной таблице" demID DAX: Программирование 10 18.11.2015 12:52
Использование метода merge на таблице Lucky13 DAX: Программирование 38 14.04.2011 11:12
Не удаётся правильно настроить DataSource через метод init Dronas DAX: Программирование 1 08.10.2007 09:10

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

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

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