|
15.12.2018, 00:10 | #1 |
Участник
|
D365 Добавляю адрес на экстеншене формы. Как перекрыть super() на write()?
D365 8.1 pu20.
На форме в чужой модели уже есть logisticsLocationPostalAddress datasource для отображения и выбора адреса с помощью стандартного LogisticsLocationFormHandler. Я добавила еще один - в своей модели на экстеншене формы. Все работает отлично, если запись не редактируется на уровне формы или если редактируется и значение второго адреса не пустое. Если значение второго адреса пустое, но на logisticsLocationPostalAddress_ds.validateWrite пользователь получает сообщение о том что поле location пустое. Потому что в классическом исполнении на датасорсе надо перекрыть методы write и validateWrite для датасорса, чтобы super не вызывался. как это сделать на экстеншене? Проблема именно на форме, потому что из table browser все работает как задумано. Нашелся вот такой вариант, ошибка так не появляется, но со строки уйти нельзя. X++: [FormDataSourceEventHandler(formDataSourceStr(CreditCardTable, *****LogisticsPostalAddress), FormDataSourceEventType::ValidatingWrite)] public static void ****LogisticsPostalAddress_OnValidatingWrite(FormDataSource sender, FormDataSourceEventArgs e) { var datasource = sender as FormDataSource; var args = e as FormDataSourceCancelEventArgs; if (args != null && datasource != null) { args.cancel(true); } } |
|
15.12.2018, 00:52 | #2 |
северный Будда
|
ValidateEventArgs validateEventArgs = e;
validateEventArgs.parmValidateResult(true); так вы, по идее, уйдёте со строки но не факт, что это заменит перекрытие супера
__________________
С уважением, Вячеслав |
|
15.12.2018, 01:04 | #3 |
Участник
|
Цитата:
X++: Error Cannot implicitly convert from type 'FormDataSourceEventArgs' to type 'ValidateEventArgs'. |
|
15.12.2018, 00:55 | #4 |
Участник
|
Как вариант - немного подождать
Цитата:
Add the ability to skip the Write and ValidateWrite form datasource methods on extended datasources so they can be made read-only (Ref# 198754).
|
|
15.12.2018, 04:00 | #5 |
Участник
|
22 должен быть ну очень скоро, подождите уже.
|
|