Ребята, очередной вопрос из разряда: ламер хочет всё и сразу, поэтому не обессудте.
Во время написания парм метода для поля, которое базируется на 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;
}
Выглядит дико, но хотя бы работает. Что интересно, такой трюк не проходит с массивными EDT, которые базируются на числовые базовые типы(компиль ругается на несовместимость типов, хотя это, конечно же, бред).
Так же усложняет ситуацию то, что параметр по умолчанию может быть лишь один, поэтому такой трюк не пройдёт:
X++:
public Dimension parmDimesion(real x=0, y=0)
Опять таки, можно использовать в качестве параметра обьект типа лист, рек или контейнер, но таким образом в метод можно будет передать какое угодно количество параметров и хоть внутри самого парма можно будет устроить проверку, реализация явно получится через одно место.
Конечно можно отказаться от использования массивного поля и разделить его релизацию в 2 отдельных поля, но это так же не выход. Может кто-нибудь из гуру сталкивался с такой проблемой, будет очень интересно узнать есть ли всё-таки для неё вразумительный солюшн. Зарание спасибо.