Показать сообщение отдельно
Старый 30.05.2007, 09:44   #38  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
тогда буду вопросы задавать, я еще жить хочу . уважаемые эксперты и не очень вот такой первый вопрос знаю просто, но не могу сделать. Есть форма. Нужно, чтобы при создании новой записи, появлялась новая форма. По нажатию ок - данные сохранялись, при нажатии отмена - нет. Я делаю так:
1. Перекрываю метод датасорса главной формы create():

X++:
void create(boolean _append = false)
{
   if (salesForm.create()) // в классе реализована
            super(_append);
}
---------------------------
// salesForm.create()
X++:
boolean create()
{
    Args            _args = new Args();
    FormRun          CreateSales;
;
   _args.name(formstr(CreateSales));
    _args.caller(this);
    CreateSales = ClassFactory.formRunClass(_args);
    CreateSales.init();
    CreateSales.run();
    CreateSales.wait();
        if (CreateSales.closedOk())
        return true;
    else
        return false;
}
нормально формачка появилась

2. Перекрываю метод init() вызываемой формы:
X++:
public void init()
{
    super();
      if (!element.args().caller())
    {
        throw error("@SYS22539");
    }
    salesForm = element.args().caller();
}
3. Перекрываю методы write() и validatewrite() датасорса вызываемой формы
X++:
public boolean validateWrite()
{
    boolean ret;
  if (!element.closedOK())
       return true;
    ret = super();
    return ret;
}
 
public void write()
{
    //super();
    if (!element.closedOK())
       return;
   try
    {
        ttsbegin;
        SalesTable.insert();
        ttscommit;
    }
        catch(Exception::error)
    {
        SalesTable.recid = 0;
        element.close();
        throw Exception::error;
    }
    SalesTable_ds.research();
    SalesTable_ds.refresh();
    salesForm.newSalesId(salesTable.salesId);
}
4. Перекрываю метод canclose() вызываемой формы
X++:
boolean  canClose()
{;
    if (element.closedOk() && !salesTable_ds.validateWrite())
    {
        return false;
    }
    salesTable_ds.write();
    if (!element.closedOk())
    {
        return true;
    }
    return super();
}
и не работает нифига не сохраняет данные