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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.06.2003, 12:46   #4  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
2 Artild
Как я понимаю, ты хочешь создать что-то вроде мастера.
На днях решил подобную задачу, может и не очень элегантно, но работает без проблем.
Из create() вызываешь новую форму, через menuFunction, передаешь ей текущую форму, через args.caller() и датасорс, через parmObject(). В create нужно добавить дополнительный аргумент, чтобы его вызове из внешней формы создавалась строка, а не вызывалась форма.
void create(boolean aPPEND = false,
boolean extern = false // If created externally
){
Args args;
;
if(!extern){
args = new args();
args.caller(element);
args.parmObject(custTable_ds);
new menuFunction(menuItemDisplayStr(ISP_CustWizard),MenuItemType:isplay).run(args);
} else {
super(aPPEND);
}
}
В новой форме, в run, после super, создаешь временную таблицу, создаешь в ней новую запись и подставляешь ее в датасорс.
custTableTmp.setTmp();
custTableTmp.initValue();
custTableTmp.doInsert();
custTable.setTmpData(custTableTmp);
custTable_ds.executeQuery();
в датасорсе перебиваешь init:
public void init()
{
super();
custTable.setTmp();
}
Так же запрещаешь пользователю все лишние движения, кроме редактирования созданной записи.
По завершении редактирования (я ловлю closeOk), переносишь данные из временной в реальную, берешь курсор вызывавшей формы, создаешь новую запись и загоняешь в нее данные из временной таблицы.
public void closeOk()
{
FormDataSource formDataSource;
Object formDatasourceObj;
CustTable custTableDB;
;
select custTableTmp;
custTableDB.data(custTableTmp);
custTableDB.insert();
formDataSource = element.args().caller().dataSource(1);
formDatasourceObj = formDataSource;
formDatasourceObj.create(false,true);
formDataSource.cursor().data(custTableDB);

super();
}
Если что-то не сработало, сверься с InventTableWizard, я с него списывал, все работает.
P.S. Не бойся разбираться в коде, это полезно и не так долго, как кажется
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как в динамическом запросе использовать исловие OR между двумя полями? yooshi DAX: Программирование 12 07.08.2009 16:34
Как сделать AND между двумя датасорсами на одном уровне в query rkorchagin DAX: Программирование 15 15.01.2009 17:42
Кэш данных с двумя АОСами Paul_ST DAX: Администрирование 4 15.08.2007 11:39
Передача данных между формами в Axapta AcNoD DAX: Программирование 2 03.08.2007 16:17
Как упростить, ускорить обмен данных: между 3-х уровневым клиентом и АОСом. Yura_Leon DAX: Администрирование 6 13.01.2005 08:55

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

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

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