|  18.02.2008, 18:57 | #1 | 
| Участник | Значение по умолчанию параметра типа EDT c array elements либо просто массива 
			
			Ребята, очередной вопрос из разряда: ламер хочет всё и сразу, поэтому не обессудте. Во время написания парм метода для поля, которое базируется на EDT real типа с количеством ArrayElements равным двум, столкнулся с проблемой присвоения значений по умолчанию. 0, равно как и Null в качестве значения по умолчанию метод не принимает. Вспомнил, что есть известное EDT Dimensions с несколькими ArrayElements. От рациональности реализации парм-метода для поля, которое базируеццо на эту Идетешку просто офигел. При передаче параметра вызывается статический метод(на какой таблице уже не помню) и возвращает неинициализированную переменную этого же типа. Ну что-то на подобии Хедер парма: X++: public Dimension parmDimesion(Dimension _dim =SomeTable::emptyDim())X++: public static Dimension emptyDim() { Dimension dim; ; return dim; } Так же усложняет ситуацию то, что параметр по умолчанию может быть лишь один, поэтому такой трюк не пройдёт: X++: public Dimension parmDimesion(real x=0, y=0) Конечно можно отказаться от использования массивного поля и разделить его релизацию в 2 отдельных поля, но это так же не выход. Может кто-нибудь из гуру сталкивался с такой проблемой, будет очень интересно узнать есть ли всё-таки для неё вразумительный солюшн. Зарание спасибо. 
				__________________ Axapta has seduced me deadly!   Последний раз редактировалось HorrR; 18.02.2008 в 19:10. | 
|  | 
|  18.02.2008, 19:02 | #2 | 
| Участник | 
			
			Про параметры - их может быть много Для каждого надо указывать тип данных | 
|  | 
|  18.02.2008, 19:14 | #3 | 
| Участник | 
			
			Нет слов, одни выражения. Вот это я тупица! Громадное спасибо)))
		 
				__________________ Axapta has seduced me deadly!   | 
|  | 
|  20.02.2008, 15:33 | #4 | 
| Участник | 
			
			Не понял, зачем городить огород с инициализацией в сигнатуре метода. Можно "старым дедовским способом": X++: class MyClass
{
    Dimension dim;
}X++: public Dimension parmDimesion(Dimension _dim = dim) | 
|  | 
|  20.02.2008, 15:48 | #5 | 
| Участник | 
			
			А в данном примере вы параметр не в сигнатуре инициализируете?))) В любом случае, этот способ ничем не отличается от преведённого мной, за исключением того, что по всей видимости в вашем способе переменная обьявляется в декларейшене этого же класса, а в моём её значение возвращается статической функцией на родной таблице(как в общем-то это и реализовано в стандартном функционале). Так вот, повторюсь, не работает этот способ с ЭДТ, которые базируются на числовой тип, строковые  - да, а числовые - нет. с Dimension трюк катит ибо этот EDT строкового типа.
		 
				__________________ Axapta has seduced me deadly!   | 
|  | 
|  20.02.2008, 15:58 | #6 | 
| Участник | 
			
			Проверил на Ax 3.0 SP3 KR1 - работает. Параметр инициализируется не в сигнатуре, а при создании экземпляра класса. В сигнатуде он определяется по-умолчанию. Вещи разные, на мой взгляд. Если вы считаете ваш подход эстетически выигрышным - ок. Успехов. PS. Что такое "родная" табличка для EDT c arrayElements? ;-) | 
|  | 
|  20.02.2008, 16:05 | #7 | 
| Участник | Цитата: 
		
			Сообщение от mau
			   Проверил на Ax 3.0 SP3 KR1 - работает. Параметр инициализируется не в сигнатуре, а при создании экземпляра класса. В сигнатуде он определяется по-умолчанию. Вещи разные, на мой взгляд. Если вы считаете ваш подход эстетически выигрышным - ок. Успехов. PS. Что такое "родная" табличка для EDT c arrayElements? ;-) Цитата: 
		
			Во время написания парм метода для поля, которое базируется на EDT real типа с количеством ArrayElements
		
	 
				__________________ Axapta has seduced me deadly!   | 
|  | 
|  20.02.2008, 16:07 | #8 | 
| Участник | 
			
			Я так понял, что автор имел ввиду ту табличку на которую настроены relations данного EDT.
		 
				__________________ Функциональное тестирование сайтов | 
|  | 
|  20.02.2008, 16:10 | #9 | 
| Участник | 
			
			С типом real? В контексте аксапты, оригинально.
		 | 
|  | 
|  20.02.2008, 16:17 | #10 | 
| Участник | 
			
			Вы бы огласили целиком решаемую задачу, не не отдельные технические трудности при её решении. Тогда ответ был бы получен быстрее и точнее. Судя по другой ветке, вы руководствуетесь шаблонами решения другого языка и , скорее всего, скриптового. Не все стандартные шаблоны других языков будут работать в аксапте. В аксапте есть шаблоны решения типовых задач. Называется Best practice. Так что, пожалуйста, опишите задачу. | 
|  | 
|  20.02.2008, 16:22 | #11 | 
| Участник | 
			
			Нда ужж. Чего-то и не подумал об этом :-))) Цитата: Ошибку есть. Содал новый EDT типа Real. Добавил в array к нему парочку элементов. На новой табличке написал статический метод(аля метод emptyDimension на табличке Dimensions),который возвращает пустой EDT. Создал джобик и попытался проинитить этим статическим методом переменную. Ругается на несовместимость типов 
				__________________ Функциональное тестирование сайтов | 
|  | |
| За это сообщение автора поблагодарили: HorrR (1). | |
|  20.02.2008, 16:28 | #12 | 
| Участник | |
|  | |
| За это сообщение автора поблагодарили: HorrR (1). | |
|  20.02.2008, 16:33 | #13 | 
| Участник | Цитата: 
		
			Сообщение от Red Stranger
			   Нда ужж. Чего-то и не подумал об этом :-))) Проверил на Ax 4.0 sp1 Ошибку есть. Содал новый EDT типа Real. Добавил в array к нему парочку элементов. На новой табличке написал статический метод(аля метод emptyDimension на табличке Dimensions),который возвращает пустой EDT. Создал джобик и попытался проинитить этим статическим методом переменную. Ругается на несовместимость типов 
				__________________ Axapta has seduced me deadly!   | 
|  | 
|  20.02.2008, 18:20 | #14 | 
| Участник | 
			
			Создал запрос - возможно, в след. версии исправят. Но это очень незначительная фигня. | 
|  | 
|  20.02.2008, 18:31 | #15 | 
| Участник | 
			
			А чем такой-то вариант не устраивает? X++: public ReaArraylDemo parmReaArraylDemo(ReaArraylDemo _reaArraylDemo = _reaArraylDemo) { ; reaArraylDemo = _reaArraylDemo; return reaArraylDemo; } | 
|  | |
| За это сообщение автора поблагодарили: HorrR (1). | |
|  20.02.2008, 19:15 | #16 | 
| Участник |   
			
			Бгг, гениально просто!!!
		 
				__________________ Axapta has seduced me deadly!   | 
|  | 
|  20.02.2008, 19:18 | #17 | 
| Участник | 
			
			Благодарю, общественность тебя не забудет)
		 
				__________________ Axapta has seduced me deadly!   Последний раз редактировалось HorrR; 20.02.2008 в 19:21. | 
|  |