Как я понимаю, применение методов
objectSet()и
dataSource() позволяет инициализировать объекты соответствующих классов FormObjectSet и FormDataSource согласно стандартам, определенным в Axapta (Best Practices). Конечно, можно инициализировать экземпляр класса
FormDataSource при помощи метода
objectSet, но это уже будет не столь корректно. Пример из книги Стина Андресена:
X++:
formDataSource = lookupFormRun.objectSet();
Но правильным решением, судя по всему, является приведенное ниже использование вышеуказанных методов (код взят с
http://msdn.microsoft.com/en-us/library/aa885180.aspx).
Метод
dataSource:
X++:
...
FormRun formRun;
FormDataSource formDataSource;
;
...
// Create the run-time form.
formRun = new FormRun(Args);
formRun.run();
formRun.detach();
// Return an object for the first data source,
// and then display a query form.
formdatasource = formRun.dataSource(1);
formdatasource.prompt();
...
Таким образом, метод
prompt() доступен только для объекта класса
Formdatasource:
Цитата:
This method has no functionality in the FormObjectSet class. It is overridden by the FormDataSource.prompt method, which activates the standard form used to limit a query range: SysQueryForm.
Метод
objectSet:
X++:
...
FormRun formRun;
FormObjectSet formObjectSet;
;
...
// Create a run-time form.
formRun = classfactory.formRunClass(args);
formRun.run();
formRun.detach();
formObjectSet = formRun.objectSet(1);
...