|
01.07.2008, 11:00 | #1 |
Участник
|
финансовые аналитики в диалог
Добрый день,
Подскажите, если я использую RunBaseBatch как базовой класс для создания диалога, как можно добавить в диалог поле Финансовые аналитики раздельно ? Т.е 3 поля в диалог типа Dimension/ Спасибо. |
|
01.07.2008, 11:06 | #2 |
Сенбернар
|
__________________
Best Regards, Roman |
|
|
За это сообщение автора поблагодарили: longson (1). |
01.07.2008, 14:55 | #3 |
Member
|
Интересно стало.
Вот один из способов достижения результата. Код, правда, не дописан. Но как академический пример сойдет. X++: #Define.underline("_") #Define.fieldNameTemplate("\%1_\%2") static server void glibs(Args _args) { Dialog dialog = new Dialog(); DialogField dialogField; FormStringControl formStringControl; FieldName fieldName; Counter pos, i; ; dialogField = dialog.addField(typeid(Dimension)); fieldName = dialogField.name(); pos = strfind(fieldName, #underline, 1, 9999); if (pos) { fieldName = substr(fieldName, 1, pos - 1); } for (i = 1; i <= 3; i++) { if (i != SysDimension::Department + 1) { formStringControl = dialogField.control(strfmt(#fieldNameTemplate, fieldName, i)); formStringControl.visible(false); } } formStringControl = dialogField.control(dialogField.name()); dialog.run(); } Но это теория. Просто хотелось разобраться и узнать что-то новое. На практике лучше так не делать. Проще создать расширенный тип. Я так делаю всегда.
__________________
С уважением, glibs® |
|
01.07.2008, 15:55 | #4 |
Участник
|
DialogField.fieldControl([...])
Цитата:
Сообщение от glibs
Интересно стало.
Вот один из способов достижения результата. Код, правда, не дописан. Но как академический пример сойдет. X++: #Define.underline("_") #Define.fieldNameTemplate("\%1_\%2") static server void glibs(Args _args) { Dialog dialog = new Dialog(); DialogField dialogField; FormStringControl formStringControl; FieldName fieldName; Counter pos, i; ; dialogField = dialog.addField(typeid(Dimension)); fieldName = dialogField.name(); pos = strfind(fieldName, #underline, 1, 9999); if (pos) { fieldName = substr(fieldName, 1, pos - 1); } for (i = 1; i <= 3; i++) { if (i != SysDimension::Department + 1) { formStringControl = dialogField.control(strfmt(#fieldNameTemplate, fieldName, i)); formStringControl.visible(false); } } formStringControl = dialogField.control(dialogField.name()); dialog.run(); } Но это теория. Просто хотелось разобраться и узнать что-то новое. На практике лучше так не делать. Проще создать расширенный тип. Я так делаю всегда. X++: static void jobDimensionFields(Args _args) { Dialog dialog ; DialogField dialogFieldDimension; FormStringControl formStringControl ; Counter idx ; ; dialog = new Dialog() ; dialogFieldDimension = dialog.addField(typeId(Dimension)); for( idx=2; idx<=Dimensions::numOfDimensions(); idx++ ) { formStringControl = dialogFieldDimension.fieldControl(idx) ; formStringControl.visible( false ) ; } dialog.run() ; } |
|
|
За это сообщение автора поблагодарили: glibs (1). |
01.07.2008, 15:20 | #5 |
Боец
|
Цитата:
Т.е 3 поля в диалог типа Dimension
Цитата:
Проще создать расширенный тип. Я так делаю всегда.
|
|
01.07.2008, 15:29 | #6 |
Member
|
Так все три (точнее все имеющиеся сразу) аналитики можно и так добавить. В 4.0, по крайней мере.
Я думал вопрос в том, как добавить одну.
__________________
С уважением, glibs® |
|
02.07.2008, 03:23 | #7 |
Участник
|
Спасибо за ответы. Собственно я сделал следующим образом
В методе dialog бдут X++: dlgDimension = dialog.addFieldValue(typeId(Dimension), dimension); ну и естественно в методе getFromDialog будет X++: dimension = dlgDimension.value(); После этого в классе, где нужно использовать значения выбранной аналитики, просто пишу X++: str dimension1, dimension2, dimension3;
dimension1 = dimension[1];
dimension2 = dimension[2];
dimension3 = dimension[3]; Последний раз редактировалось longson; 02.07.2008 в 03:39. |
|