AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.08.2006, 23:10   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
В общем, победил я еe (Axapta'у). Сделал на интерфейсах без макросов.
Хотя этот способ можно так-же охарактеризовать как перректальный
X++:
#define.msoPropertyTypeDate(0x00000003)
#define.msoPropertyTypeString(0x00000004)
static void AndyD_Excel_DocProperty(Args _args)
{
    COMExcelDocument_RU     excel;
    FileName                fileName = "";
    COM     doc;
    COM     comDocProp,
            comOneProp;
    ComVariant  var;
    ComDispFunction funcGet;
    ComDispFunction funcSet;
    COMVariant varArg1;
    COMVariant varArg2;
    COMVariant varArg3;
    COMVariant varArg4;
    COMVariant varRet;
    ;

    excel = new ComExcelDocument_RU();
    excel.newFile(fileName,true);
    doc = excel.getComDocument();

    // ------------------ Запись в BuiltinDocumentProperties
    comDocProp  = doc.BuiltinDocumentProperties();

    funcGet = new ComDispFunction(comDocProp, "Item", COMDispContext::PropertyGet);
    varArg1 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BSTR);
    varArg1.bStr("Author");
    varRet  = new COMVariant(COMVariantInOut::OUT_RETVAL, COMVariantType::VT_DISPATCH);
    funcGet.call(varArg1, varRet);

    comOneProp = COM::createFromInterface(varRet.iDispatch());

    funcSet = new ComDispFunction(comOneProp, "Value", COMDispContext::PropertyPut);
    varRet = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BSTR);
    varRet.bStr((select UserInfo where UserInfo.id == curuserId()).Name + "-Builtin");
    funcSet.call(varRet);

    // Пример получения значения
    funcSet = new ComDispFunction(comOneProp, "Value", COMDispContext::PropertyGet);
    varRet = new COMVariant(COMVariantInOut::Out_retVal, COMVariantType::VT_BSTR);
    funcSet.call(varRet);
    info(varRet.bStr());

    funcGet = new ComDispFunction(comDocProp, "Item", COMDispContext::PropertyGet);
    varArg1 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BSTR);
    varArg1.bStr("Creation Date");
    varRet  = new COMVariant(COMVariantInOut::OUT_RETVAL, COMVariantType::VT_DISPATCH);
    funcGet.call(varArg1, varRet);

    comOneProp = COM::createFromInterface(varRet.iDispatch());

    funcSet = new ComDispFunction(comOneProp, "Value", COMDispContext::PropertyPut);
    varRet = new COMVariant(COMVariantInOut::In, COMVariantType::VT_DATE);
    varRet.date(today());
    funcSet.call(varRet);

    // ------------------ Запись в CustomDocumentProperties
    comDocProp  = doc.CustomDocumentProperties();

    funcSet = new ComDispFunction(comDocProp, "Add", COMDispContext::Method);
    varArg1 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BSTR);
    varArg1.bStr("Автор");
    varArg2 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BOOL);
    varArg2.boolean(false);
    varArg3 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_INT);
    varArg3.int(#msoPropertyTypeString);
    varArg4 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BSTR);
    varArg4.bStr((select UserInfo where UserInfo.id == curuserId()).Name + "-Custom");
    funcSet.call(varArg1, varArg2, varArg3, varArg4);

    varArg1.bStr("Дата создания");
    varArg3.int(#msoPropertyTypeDate);
    varArg4 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_DATE);
    varArg4.date(today());
    funcSet.call(varArg1, varArg2, varArg3, varArg4);

    // Пример получения значения

    funcGet = new ComDispFunction(comDocProp, "Item", COMDispContext::PropertyGet);
    varArg1 = new COMVariant(COMVariantInOut::In, COMVariantType::VT_BSTR);
    varArg1.bStr("Автор");
    varRet  = new COMVariant(COMVariantInOut::OUT_RETVAL, COMVariantType::VT_DISPATCH);
    funcGet.call(varArg1, varRet);

    comOneProp = COM::createFromInterface(varRet.iDispatch());

    funcSet = new ComDispFunction(comOneProp, "Value", COMDispContext::PropertyGet);
    varRet = new COMVariant(COMVariantInOut::Out_retVal, COMVariantType::VT_BSTR);
    funcSet.call(varRet);
    info(varRet.bStr());
}
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Владимир Максимов (1), Gustav (3).
Теги
excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Khue Trinh: Alternative Item Blog bot DAX Blogs 0 09.04.2009 16:05
Вызов класса по Menu Item Silphidae DAX: Программирование 9 13.02.2009 02:21
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:55.