Если нет кода нужного Вам, перекрываете на форме метод task(), добавляете точку останова, и ловите TaskID
X++:
#define.taskCopy(771)
#define.taskSelectAll(778)
Вот отличный пример вставки данных в Excel с пом. буфера обмена
X++:
public void insertText(BookMark _bookMark, TextBuffer _text, int _workSheet = 1)
{
COM XLSWorkSheet, XLSrange;
TextBuffer tempBuffer; // To store clipboard contents
int nextI,
maxI = 3;
;
// Если содержимое TextBuffer вообще не введено, то PastSpecial даст ошибку,
// а если заведена пустая строка, то нет смысла делать PastSpecial
if (! _text.size())
{
return;
}
// Initializing XLSWorkSheet object
XLSWorkSheet = this.getWorkSheet(_workSheet);
if (!XLSWorkSheet)
{
throw error("@DIS6043");
}
// Initializing XLSRange object
XLSrange = this.findRange(_bookMark,_workSheet);
if (!XLSrange)
{
throw error("@SYS27391");
}
XLSrange.select();
for (nextI = 1; nextI <= maxI; nextI++)
{
try
{
// Storing clipboard contents
tempBuffer = new TextBuffer();
tempBuffer.fromClipboard();
// Preparing text to be inserted
_text.toClipboard();
// Inserting text from clipboard
///ГЛЮК XLSWorkSheet.pasteSpecial(1); // 1 - "Text only" mode
XLSWorkSheet.pasteSpecial(0);
// Restoring clipboard contents
tempBuffer.toClipboard();
// В случае успеха, прерываю цикл
break;
}
catch(Exception::Error)
{
// в случае ошибки удаляю последнюю строку infolog,
// которая генерится автоматически ошибкой COM
if (infolog.line())
{
infolog.clear(infolog.line()-1);
}
// предпринимаю очередную попытку сделать вставку через буфер
}
} // for (nextI)
// Если выход из цикла for произошел "штатно", то значение счетчика будет больше максимально допустимого значения
if (nextI > maxI)
{
throw error("Ошибка при копировании данных через буфер обмена.");
}
}
а это упрощенный его вариант
X++:
public void pasteSpecialFromTextBuffer(BookMark _bookMark, TextBuffer _buffer, int _workSheet = 1)
{
COM XLSWorkSheet, XLSrange;
;
if (! _buffer.size())
return;
if (! m_comDocument)
throw error(strfmt("@GEE6401", this.getApplicationName()));
XLSWorkSheet = this.getWorkSheet(_workSheet);
if (!XLSWorkSheet)
throw error("@DIS6043");
XLSrange = this.findRange(_bookMark,_workSheet);
if (!XLSrange)
throw error("@SYS27391");
XLSrange.select();
_buffer.toClipboard();
XLSrange.pasteSpecial(0);
}