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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2013, 12:53   #7  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Не стал создавать новую тему, запостю здесь.

Стоит почти такая же задача, как и у топикастера: необходимо при изменении одного из полей, в данном случае Статус оплаты ( Расчёты с поставщиками\клиентами -> Журнал платежей - Строки) закрывать для редактирования определённые поля.
Сделал метод, в котором выполняется проверка на статус оплаты, если он равен нужному - поля закрываются для редактирования.
Этот метод вызываю в ините формы, active датасоурса и modified поля Статус оплаты датасоурса.
При изменении всё замечаетельно отрабатывает, поля закрываются, НО, стоит перейти на другую строку или сохранить текущую строку - значения снова доступны для редактирования, хотя не должны. Искал корни в методе leaveRecord датасоурса, но там нет ничего связанного с этим, так же искал в методе write, тоже ничего не нашёл.
Метод проверки:
X++:
//Если стоит статус Утверждено - закрывать для редактирования поля
void AllowEditCollums()
{
   LedgerJournalTrans LJT;
    ;
   //выбираю те строки, где статус журнала стоит Утверждено
    select firstonly * from LJT where LJT.PaymentStatus == CustVendPaymStatus::Confirmed;

    if (LJT.PaymentStatus == CustVendPaymStatus::Confirmed)
    {
       LedgerJournalTrans_ds.object(fieldnum(LedgerJournalTrans,TransDate)).allowEdit(false);
     //  LedgerJournalTrans_ds.object(fieldnum(LedgerJournalTrans,TransDate)).visible(false);
       LedgerJournalTrans_ds.object(fieldnum(LedgerJournalTrans, Txt)).allowEdit(false);
       LedgerJournalTrans_ds.object(fieldnum(LedgerJournalTrans,TransDate)).allowEdit(false);
       allowEdit(false);


   // Global::allowEditFieldsOnFormDS_W(LedgerJournalTrans_ds, false);

    }
    else
    {
     LedgerJournalTrans_ds.object(fieldnum(LedgerJournalTrans,TransDate)).allowEdit(true);
    }
}
Метод на форме для инициализации метода проверки с датасоурса:

X++:
void AllowEditFields()
{
    element.lock();

    LedgerJournalTrans_ds.AllowEditCollums();

    element.unLock();
}
Вызываю метод AllowEditFields в active датасоурса, init формы и modified поля датасоурса после супера

X++:
 element.AllowEditFields()

Подскажите, пожалуйста, в какую сторону копать?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
emeadaxsupport: Fill Utility incorrectly updates a field that is not in the field list of the main datasource Blog bot DAX Blogs 0 27.01.2012 01:12
axaptapedia: Table Field Group Blog bot DAX Blogs 0 25.06.2011 06:33
Халтура в AX2009: идентификаторы из USR в GLS, GLP и даже SYS-слоях EVGL DAX: Программирование 2 21.02.2011 19:44
DynamicsAxSCM: The InventTrans table. Explore various field usages. Blog bot DAX Blogs 0 09.11.2010 19:10

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

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

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