|  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:20 | #4 | 
| Боец | Цитата: 
		
			Т.е 3 поля в диалог типа Dimension
		
	 Цитата: 
		
			Проще создать расширенный тип. Я так делаю всегда.
		
	 | 
|  | 
|  01.07.2008, 15:29 | #5 | 
| Member | 
			
			Так все три (точнее все имеющиеся сразу) аналитики можно и так добавить. В 4.0, по крайней мере. Я думал вопрос в том, как добавить одну. 
				__________________ С уважением, glibs® | 
|  | 
|  01.07.2008, 15:55 | #6 | 
| Участник | 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). | |
|  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. | 
|  |