У меня есть 2 формы, назовем форму А и Б. В форме A у меня есть кнопка (пустая кнопка), при нажатии этой кнопки она перенаправляется на форму B с параметрами, и этот параметр будет введен в источник данных формы B. Мне не удалось получить источник данных формы B, он всегда возвращает null.
[FormControlEventHandler(formControlStr(htVehicleListPage, FormCommandButtonControl1), FormControlEventType::Clicked)]
public static void FormCommandButtonControl1_OnClicked(FormControl sender, FormControlEventArgs e)
{
FormDataSource htVehicleTable= sender.formRun().dataSource(formDataSourceStr(htVehicleListPage,htVehicleTable));
htVehicleTable record=htVehicleTable.cursor();
info(int2Str(record.htVehicleID)); //result: some legit ID.
Args argsObj=new Args();
argsObj.name(formStr(htVehicleMaintenanceDetails));
FormRun formRunObj=new FormRun(argsObj);
FormDataSource openningFormDataSource =formRunObj.dataSource(formDataSourceStr(htVehicleMaintenanceDetails,htVehicleMaintenance)); //result: openningFormDataSource is null, however, formRunObj is not null.
Query queryObj=new Query();
openningFormDataSource.query(queryObj);
QueryBuildDataSource queryBuildDataSourceObj=queryObj.addDataSource(tableNum(htVehicleMaintenance));
queryBuildDataSourceObj.addRange(fieldNum(htVehicleMaintenance,htVehicleID)).value(strFmt("htVehicleMaintenance.htVehicleID=%1",record.htVehicleID));
formRunObj.init();
formRunObj.run(); //if we inorge the null error it will show a form here
formRunObj.wait();
}
FormRun
- это просто ... это объект текущей формы. Ваш openningFormDataSource
будет нулевым просто потому, что вы вызываете его до formRunObj.init();
, а форма еще не запущена.
Сначала идет Form.init()
, потом идет Form...Datasource.init()
, потом в основном Form.run()
.
Переместите ваш formRunObj.init()
выше и попробуйте еще раз.