Показать сообщение отдельно
Старый 30.09.2009, 19:57   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Gustav
А теперь попробуйте задать этот Zoom из Аксапты - оператор pageSetup.Zoom(false); вызовет ошибку... Думаем, что делать дальше...
"Чего тут думать?! Трясти надо!" (c)

При работе с COM-объектами параметры надо передавать/принимать не как типы данных Axapta, а как типы ComVariant. То, что ИНОГДА проскакивают значения параметров в виде типов Axapta - это исключения. Обычно это связано с параметрами, которые принимают (или могут принять) целочисленные значения. Поскольку таких параметров большинство, то создается иллюзия, что так и надо. Но, вообще-то, это не корректно.

В общем, нормально работает такой код

X++:
    COM                     comPageSetup;
    ComVariant              comVariantParm;
    ;

    (...)
    comVariantParm = COMVariant::createFromBoolean(false);
    comPageSetup.Zoom(comVariantParm);
PS: О! Уже сам догадался
За это сообщение автора поблагодарили: Gustav (8), decoder (1).