Показать сообщение отдельно
Старый 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()

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