В общем получилось решить меняя местами эти теги при сохранении. Код для этого ниже
X++:
using DocumentFormat.OpenXml;
[ExtensionOf(classstr(OxmlWorksheet_RU))]
final class OxmlWorksheet_RUDEV_Extension
{
private OpenXmlElement DEVsavedLastDrawingElement;
public void save()
{
if (this.rowBreaks().elements())
{
this.DEVremoveDrawing(worksheet);
}
next save();
if (DEVsavedLastDrawingElement != null)
{
OXML_RU::appendChild(worksheet, DEVsavedLastDrawingElement);
}
}
//fixing the bug where page break element should be before the drawing
public void DEVremoveDrawing(DocumentFormat.OpenXml.OpenXmlElement _parent)
{
OpenXmlElement lastDrawingElement;
int i;
i = worksheet.ChildElements.get_Count();
lastDrawingElement = _parent.get_LastChild();
str name = lastDrawingElement.get_LocalName();
if (name == "drawing")
{
DEVsavedLastDrawingElement = lastDrawingElement.CloneNode(true);
lastDrawingElement.Remove();
}
}
}