|
|
#1 |
|
Участник
|
args в классе от RunBase
Добрый вечер! Прошу меня извинить, если мой вопрос покажется совсем простым, но однако мне непонятно вот что: Скажите, пожалуйста, можно ли в класс, созданный на основе RunBase, каким либо образом передать значения параметра args (нужно в классе как-то в конечном итоге докопаться до FormDataSource)?.. Класс обязательно (???) должен быть extends RunBase, поскольку я перекрываю _LookUp поля диалога...
Помогите, пожалуйста! СПасибо! X++: class cls_GroupSetDeliveryRequest extends RunBase |
|
|
|
|
#2 |
|
MCITP
|
Цитата:
Сообщение от Zoe
Добрый вечер! Прошу меня извинить, если мой вопрос покажется совсем простым, но однако мне непонятно вот что: Скажите, пожалуйста, можно ли в класс, созданный на основе RunBase, каким либо образом передать значения параметра args (нужно в классе как-то в конечном итоге докопаться до FormDataSource)?.. Класс обязательно (???) должен быть extends RunBase, поскольку я перекрываю _LookUp поля диалога...
Помогите, пожалуйста! СПасибо! X++: class cls_GroupSetDeliveryRequest extends RunBase типа так X++: server static void main(Args _args) либо заполнить и передавать его самому...
__________________
Zhirenkov Vitaly |
|
|
|
|
#3 |
|
Moderator
|
Параметры в класс обычно передаются путем вызова некоего метода этого класса.
В вашем случае неясно: - в какой момент нужно передать args? - при чем здесь RunBase и почему обязательно его наследовать? Хотя это, в общем-то, и не важно , просто вносит какой-то сумбур.
__________________
Андрей. |
|
|
|
|
#4 |
|
Участник
|
Да, спасибо, замечания Ваши понятны. Отвечаю. (1). В метод main args пердается без проблем. НО дальше main'а этот args не переходит... Другими словами, передать его в методе run нельзя. А мне в этом методе необходимо обращаться к dataSource. (2) Давайте, я сформулирую задачу целиком:
Итак, есть некая форма. На ней необходимо делать групповую обработку строк. Выбираются строки, нажимается кнопка, вызывается ДИАЛОГ. В диалоге перекрыты LookUp (поэтому и расширение от RunBase - без этого или не работает, или я что-то неправильно делаю ). После выбора соответствующих пунктов LookUp должен выполняться Update строк таблицы. Хочется это сделать в том же классе, чтобы не плодить код на форме. Но для этого update необходимо передать значение dataSource... Вот это-то и проблема...Простите за предыдущую путаницу!
|
|
|
|
|
#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. |
|
|
|
|
#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() и там обработать.
}
}
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
|
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|