Не стал создавать новую тему, запостю здесь.
Стоит почти такая же задача, как и у топикастера: необходимо при изменении одного из полей, в данном случае Статус оплаты ( Расчёты с поставщиками\клиентами -> Журнал платежей - Строки) закрывать для редактирования определённые поля.
Сделал метод, в котором выполняется проверка на статус оплаты, если он равен нужному - поля закрываются для редактирования.
Этот метод вызываю в ините формы, 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()
Подскажите, пожалуйста, в какую сторону копать?