Этот диалог - модальный. Поэтому в произвольный момент времени ты его окно не получишь, т.к. windows.getActiveView() не возвращает окон модальных диалогов.
Поэтому надо подписаться на команду "Рассчитать", в ней ставить отлов onDoModal, там запоминать форму.
То есть будет вот так:
Код:
var grid
stdcommands.CDebug.EvalExpr.addHandler(SelfScript.self, "onEvalExpr")
function onEvalExpr(cmd)
{
if(cmd.isBefore) // Вызывается до обработки команды 1С
events.connect(windows, "onDoModal", SelfScript.self)
else // вызывается после обработки команды 1С
{
events.disconnect(windows, "onDoModal", SelfScript.self)
grid = null
}
}
function onDoModal(dlgInfo)
{
try{
if(dlgInfo.stage == afterInitial)
grid = dlgInfo.form.getControl('ResultGrid').extInterface
}catch(e){}
}
function macrosСкопироватьЗначение()
{
if(!grid)
return
var row = grid.currentRow
if(row)
{
var value = row.getCellValue(1)
Message(value)
// Вот тут надо value поместить в клипборд
}
}