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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.04.2018, 18:44   #1  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от wojzeh Посмотреть сообщение

код этот, кстати говоря, стандартный и находится в форме Project WBS в части таблицы Estimates. можете попробовать выбрать несколько строк в ней и нажать "удалить".

не понимаю, как пофиксить этот косяк, ибо явно идёт вызов из недоступного для редактирования класса в методе deleteMarked. надо проверить эффект в D365!
Если есть такой стандартный код то тогда однозначно баг, но все равно не согласен с тем что раз не запрещается то можно.

Не вызывать validateDelete на форме Project WBS\Estimates если Estimates_ds,anyMarked или типа того??
Старый 13.04.2018, 18:49   #2  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
681 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Если есть такой стандартный код то тогда однозначно баг, но все равно не согласен с тем что раз не запрещается то можно.

Не вызывать validateDelete на форме Project WBS\Estimates если Estimates_ds,anyMarked или типа того??
validateDelete не вызывает проблем - зовёшь ты его или нет. прочитай уже ВНИМАТЕЛЬНО, что написано.

конкретно в данной ситуации всё более чем кошерно:

- отключаем валидацию на форме, чтоб не задавать вопроса о подтверждении, как доктор прописал;
- перед непосредственным удалением методом delete проверяем, всё ли в порядке табличным валидатором;

описанный подход - просто сказка!

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

можешь привести конкретный пример, где, как ты это называешь, "хакерство" приводит к плачевным последствиям?
__________________
Felix nihil admirari
Старый 14.04.2018, 00:57   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от wojzeh Посмотреть сообщение
validateDelete не вызывает проблем - зовёшь ты его или нет. прочитай уже ВНИМАТЕЛЬНО, что написано.

конкретно в данной ситуации всё более чем кошерно:

- отключаем валидацию на форме, чтоб не задавать вопроса о подтверждении, как доктор прописал;
- перед непосредственным удалением методом delete проверяем, всё ли в порядке табличным валидатором;

описанный подход - просто сказка!

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

можешь привести конкретный пример, где, как ты это называешь, "хакерство" приводит к плачевным последствиям?
Например вызов табличного валидатора в методе delete источника данных

(1)_ds.delete() --> (2)_ds.validateDelete() --> (3) table.validateDelete() --> (4) table.delete().

Согласен что отключение super в (2) _ds.validateDelete() для отключения диалога - нормальный ход который по идее прерывает эту цепочку. Но судя по всему мы не контролируем эту цепочку в случае deleteMarked.

deleteMarked() не вызывает _ds.delete(), а используется вместо. Что за цепочку методов он там использует - непонятно.

Почему не вызывать табличный (3) table.validateDelete() на уровне таблицы в (4) table.delete()?
Можно добавить if (.dataSource() && ) если нужно такое ограничить вызовами с формы.
Старый 14.04.2018, 01:06   #4  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
681 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от ax_mct Посмотреть сообщение
deleteMarked() не вызывает _ds.delete(), а используется вместо. Что за цепочку методов он там использует - непонятно.
посмотри внимательно последнюю картинку в исходном сообщении и скажи, видишь ли ты, что ВЫЗЫВАЕТ? причём бесконечное количество раз, если не положить этому предел.
__________________
Felix nihil admirari
Старый 14.04.2018, 01:18   #5  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от wojzeh Посмотреть сообщение
посмотри внимательно последнюю картинку в исходном сообщении и скажи, видишь ли ты, что ВЫЗЫВАЕТ? причём бесконечное количество раз, если не положить этому предел.
О, cупер, я ВИЖУ

MSDN пишет что
If no records have been selected, the FormDataSource.delete method is executed.
https://msdn.microsoft.com/en-us/lib...or=-2147217396

Но я вижу, что все интереснее. Получается что _ds.DeleteMarked() таки вызывает _ds.delete().

Но я бы переместил табличный validateDelete() в табличный Delete() так как есть чувство что
именно использование его на форме есть неприемлимый хак бага
Теги
ax2012r3, delete, deletemarked, formdatasource

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxse: Dynamics AX 2012 R3 cumulative updates Blog bot DAX Blogs 0 15.03.2017 18:11
dynamicsaxse: February release – Dynamics AX 2012 R3 Blog bot DAX Blogs 0 02.03.2017 01:11
emeadaxsupport: BOM Journal postings in AX 2012 R3 vs. earlier versions of AX 2012 Blog bot DAX Blogs 0 03.10.2015 02:35
emeadaxsupport: [AX 2012 R3] Why is my Kernel build version not changing after installing CU-8 or the latest binary hotfix? Blog bot DAX Blogs 0 31.12.2014 20:20
Dynamics AX Sustained Engineering: Microsoft Dynamics AX 2012 R3 RTM Warehouse Management: How to prevent the creation of two inventDim records considered identical in Dynamics AX 2012 R3 RTM Blog bot DAX Blogs 0 22.12.2014 19:12
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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