Показать сообщение отдельно
Старый 24.09.2018, 18:51   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Приведение типов для таблиц ax2012
Всем привет.

Коллеги, ковыряюсь с наследованием табличек.

Возможно ли приводить тип таблички к типу не определенному на этапе компиляции?
Штатный способ
X++:
common as tableName
требует чтобы tableName был именем таблички, т.е. жестко определяется на этапе компиляции. Нельзя поставить переменную.

Сделал вот такой способ
X++:
// приводит табличный буфер к заданному типу
// работает аналогично оператору as
// отличие в том, что 2-м операндом принимает переменную
// т.е. на этапе компиляции тип может быть неизвестен
public static Common as(
    Common          _common,
    TableName       _tableName)
{
    anyType         anyBuffer;
    Common          ret;
    ;

    if (tableName2id(_tableName))
    {
        // anyBuffer = _common as _tableName
        anyBuffer = new SysDictTable(tableName2id(_tableName)).makeRecord();
        anyBuffer = _common;
        ret       = anyBuffer;
    }

    return ret;
}
Работает.
Но он немного хакерский.

Есть что-то более документированное ?
За это сообщение автора поблагодарили: sukhanchik (6).