Показать сообщение отдельно
Старый 15.12.2018, 00:10   #1  
alicedr is offline
alicedr
Участник
 
173 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
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);

        }
    }
Миниатюры
Нажмите на изображение для увеличения
Название: addressOnFormExtension.jpg
Просмотров: 158
Размер:	148.2 Кб
ID:	12165