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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.01.2017, 18:10   #1  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
FormDataSource метод delete. Пропустить подтверждение
Добрый день!
Такой вопрос возник.
Есть такой код:
X++:
public void clicked()
{
    TMR_PortalModulesForDoc  createRecord;
    super();
    if(this.checked())
    {
        createRecord.TMR_KPDocumentCode = TMR_AttachedDocsforKPLines.TMR_KPDocumentCode;
        createRecord.TMR_ModuleKPType =  TMR_ModuleKPType::Logistics;

        TMR_PortalModulesForDoc.data(createRecord);
        TMR_PortalModulesForDoc_DS.write();
    }
    else
    {
        TMR_PortalModulesForDoc.data(TMR_PortalModulesForDoc);
        TMR_PortalModulesForDoc_DS.delete();
    }

}
Собственно при отрабатывании метода delete возникает подтверждающее окно про удаление записей. Как то можно его обойти?

Изначальная постановка задачи.
Есть таблица документов. Есть зависимая по номеру документов таблица состоящая из Enum(Логистика, Торговля) и номера документа.

Задача звучит так - реализовать поле признак на форме из вариантов Enum(Логистика, Торговля). При этом для одного документа может быть одно или несколько значений.
Старый 30.01.2017, 18:38   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Не понял как ваш вопрос связан с изначальной постановкой задачи, которую вы привели.

По сути вопроса: сообщение вызывается внутри super() метода validateDelete датасурса. Если не хотите, чтобы он вызывался, перекройте этот метод и не вызывайте super().
Подтверждение удаления на форме

Альтернативный вариант - это удалять напрямую в таблице, а не через датасурс.
Старый 30.01.2017, 22:25   #3  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
Да, спасибо, это работает. Я просто не очень представляю как выполнить требование - какие контролы использовать для этой задачи.
Старый 31.01.2017, 09:11   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Посмотрите в сторону edit-методов
Старый 31.01.2017, 09:28   #5  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Это из-за того, что на таблице TMR_PortalModulesForDoc включен запрет на каскадное удаление записей в связанной таблице.
Найдите в АОТ эту таблицу и зайдите внутри нее в узел DeleteActions. Там перечислены таблицы, в которых при удалении строки из вашей таблицы, данные либо удалятся автоматически, либо удалятся по вопросу (как у вас), либо запретят удаление из вашей таблицы. За эти три варианта поведения отвечает свойство DeleteAction: если оно равно Cascade, то все подчиненные записи удалятся втихую, если равно Cascade + Restricted, то удалятся с подтверждением пользователя (как у вас), если равно Restricted, то удаление не сработает с сообщением, что "Существуют строки".

Последний раз редактировалось Ace of Database; 31.01.2017 в 09:31.
Старый 31.01.2017, 12:33   #6  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
На самом деле я просто в 6 Аксаптой еще не очень, как в прочем и с аксаптой в целом. Вообще как оказалось мне нужен был вариант мультиселекта по значениям Enum'а. В стандарте есть интересный класс SysLookupMiltiSelect. Проект во вложении.
Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 354
Размер:	176.7 Кб
ID:	11167
Нажмите на изображение для увеличения
Название: 2.PNG
Просмотров: 312
Размер:	55.5 Кб
ID:	11168
Название: 3.PNG
Просмотров: 539

Размер: 51.4 Кб
PrivateProject_Tutorial_TestMultiLookUpCtrl.xpo
За это сообщение автора поблагодарили: Ace of Database (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Аккуратнее! Метод delete запускается даже для пустого курсора S.Kuskov DAX: Программирование 1 19.11.2010 10:28
Как вызвать метод для поля в FormDataSource? Maxim Gorbunov DAX: Программирование 3 08.05.2007 11:28
Метод prev() класса FormDataSource всегда возвращает True Morpheus DAX: Программирование 3 08.09.2006 11:13
Различные типы связей (LinkType) для FormDataSource Maxim Gorbunov DAX: База знаний и проекты 1 16.05.2004 13:20
Для чего придумали метод FormDataSource.ForceWrite()??? parovoz DAX: Программирование 1 09.10.2003 15:35
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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