Тема: OpenXml. C# -> X++
Показать сообщение отдельно
Старый 21.10.2020, 15:33   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Посмотрите на использование OXML_RU\invokeGeneric в приложении.

Например, вот так используется при добавлении нового листа
OxmlWorkBook_RU\insertSheet :

X++:
...
Array                                                       parameters = new Array(Types::Class);
DocumentFormat.OpenXml.Spreadsheet.Sheet                    newSheet, sheetAfter;
...
newSheet = new DocumentFormat.OpenXml.Spreadsheet.Sheet();
...
if (sheetAfter)
{
    parameters.value(1, newSheet);
    parameters.value(2, sheetAfter);
    OXML_RU::invokeGeneric(sheets, 'InsertAfter', newSheet.GetType(), parameters);
}
else
{
    OXML_RU::appendChild(sheets, newSheet);
}
...
Есть правда один момент - почему то стандартный код у нас валился при выполнении в CIL из за типа элемента массива, пришлось слегка поправить, добавив строку в начале метода

X++:
...
if (xSession::isCLRSession())
{
    parameters = new Array(Types::AnyType);
}
...
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: decoder (1), Logger (5), gl00mie (5).