11.12.2008, 16:36 | #1 |
Участник
|
args в классе от RunBase
Добрый вечер! Прошу меня извинить, если мой вопрос покажется совсем простым, но однако мне непонятно вот что: Скажите, пожалуйста, можно ли в класс, созданный на основе RunBase, каким либо образом передать значения параметра args (нужно в классе как-то в конечном итоге докопаться до FormDataSource)?.. Класс обязательно (???) должен быть extends RunBase, поскольку я перекрываю _LookUp поля диалога...
Помогите, пожалуйста! СПасибо! X++: class cls_GroupSetDeliveryRequest extends RunBase |
|
11.12.2008, 16:54 | #2 |
MCITP
|
Цитата:
Сообщение от Zoe
Добрый вечер! Прошу меня извинить, если мой вопрос покажется совсем простым, но однако мне непонятно вот что: Скажите, пожалуйста, можно ли в класс, созданный на основе RunBase, каким либо образом передать значения параметра args (нужно в классе как-то в конечном итоге докопаться до FormDataSource)?.. Класс обязательно (???) должен быть extends RunBase, поскольку я перекрываю _LookUp поля диалога...
Помогите, пожалуйста! СПасибо! X++: class cls_GroupSetDeliveryRequest extends RunBase типа так X++: server static void main(Args _args) либо заполнить и передавать его самому...
__________________
Zhirenkov Vitaly |
|
11.12.2008, 16:55 | #3 |
Moderator
|
Параметры в класс обычно передаются путем вызова некоего метода этого класса.
В вашем случае неясно: - в какой момент нужно передать args? - при чем здесь RunBase и почему обязательно его наследовать? Хотя это, в общем-то, и не важно , просто вносит какой-то сумбур.
__________________
Андрей. |
|
11.12.2008, 17:20 | #4 |
Участник
|
Да, спасибо, замечания Ваши понятны. Отвечаю. (1). В метод main args пердается без проблем. НО дальше main'а этот args не переходит... Другими словами, передать его в методе run нельзя. А мне в этом методе необходимо обращаться к dataSource. (2) Давайте, я сформулирую задачу целиком:
Итак, есть некая форма. На ней необходимо делать групповую обработку строк. Выбираются строки, нажимается кнопка, вызывается ДИАЛОГ. В диалоге перекрыты LookUp (поэтому и расширение от RunBase - без этого или не работает, или я что-то неправильно делаю ). После выбора соответствующих пунктов LookUp должен выполняться Update строк таблицы. Хочется это сделать в том же классе, чтобы не плодить код на форме. Но для этого update необходимо передать значение dataSource... Вот это-то и проблема... Простите за предыдущую путаницу! |
|
11.12.2008, 17:39 | #5 |
MCITP
|
X++: public static void main(Args _args) { Object obj = _args.caller() ; FormDataSource formDataSourceObjectCaller; ; if (obj && classidget(obj) == classNum(sysSetupFormRun) && obj.name() == formstr(<YourForm>)) { formDataSourceObjectCaller = obj.dataSource(tableStr(<YourTable>)); } .... } Upd: хотя по вашему описанию до сих пор не совсем понятно зачем вам там именно датасорс? Может достаточно табличного буффера? (args.record())
__________________
Zhirenkov Vitaly Последний раз редактировалось ZVV; 11.12.2008 в 17:44. |
|
11.12.2008, 18:20 | #6 |
MCTS
|
Я так понимаю, вам надо в классе обработать несколько выделенных в гриде записей.
Для этого в методе main() надо их "запомнить": X++: FormDataSource fDS; Common common; ; if (args && args.dataset() && args.record().dataSource()) { fDS = args.record().dataSource(); for (common=fDS.getFirst(true) ? fDS.getFirst(true) : args.record(); common; common=fDS.getNext()) { // тут обработать common // как? например сохранить в Set RecId записей, // передать Set в метод run() и там обработать. } }
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
|
|