Показать сообщение отдельно
Старый 04.05.2011, 19:47   #2  
Evgenius is offline
Evgenius
Участник
 
56 / 10 (1) +
Регистрация: 03.11.2010
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вообще-то, Axapta сугубо "филетово" каким образом берется значение для Enum, поскольку физически - это число от 0 до 255. Контроль типов Enum может быть выполнен только и исключительно на этапе компиляции. На этапе исполнения Axapta не контролирует ни тип Enum, ни его значение. Вероятно, это какая-то особенность Connector

Ну, а сообщение об ошибках для Com-объектов стандартно берется из метода Error(). Как правило, он есть у любого Com-объекта, хотя и не всегда описывается в документации. Про AxaptaRecord не уверен, но, теоретически, должно быть что-то вроде такого

X++:
    ComError    comError;
    str         errorMsg;
    ;

           try
            {
                if (axRecord.ValidateWrite())
                { 
                    axRecord.Write();
                    RecId = (Int64)axRecord.get_Field("RecId");
                }

            }
            catch (Exception ExceptionData)
            {
                comError  = axRecord.error();
                errorMsg  = StrFmt("Error %1 (%2)", comError.number(), comError.description());

                info(errorMsg);
                throw ExceptionData;

            }
Это ведь не COM-коннектор, а BusinessConnectorNet (даже если он на деле всего лишь оболочка для COM, я не знаю). Метода такого здесь нет.


Насчет перечисления - интересно, выходит дело было только в обращении к новым данным из той же транзакции...