На самом деле идея, я так подозреваю, не новая, так что, сорри, если повторяюсь
А заключается она в следующем. Есть такой замечательный оператор - Выполнить().
Создаём обработку, в которой пишем экспортную функцию, которая возвращает нам что-то (на самом деле неважно что):
//************************************************************
Функция ВыполнитьКод(ТекстКода, П1 = "", П2 = "", П3 = "") Экспорт
Попытка
Выполнить(ТекстКода);
Исключение
Возврат ОписаниеОшибки()
КонецПопытки;
Возврат Истина;
КонецФункции
//************************************************************
И помимо всего прочего, выполняет текст кода, который мы ей передали.
Теперь во время отладки, вызывая "Вычислить выражение...", меняем значения переменных "на лету".
Например, если во время выполнения следубщего участка кода:
Перем1 = 1;
Перем2 = 3;
Сообщить(Перем1 + Перем2);
поставим точку останова на последней строке, вызовем "Вычислить выражение", передадим туда строку:
ВнешниеОбработки.Создать("D:\ВыполнитьКод.epf").ВыполнитьКод("П1 = 2", Перем2)
В результате в окне сообщения у нас появится "3" вместо "4".
Для удобства можно эту функцию написать в модуле приложения.
У этой фичи есть еще одна полезная штука - можно прерывать выполнение каких-нибудь зациклившихся веток кода или просто какой-нибудь огромный цикл без перезапуска отладки. Для этого нужно присвоить какой-нибудь переменной некорректное значение. Например, агрегатный объект заменить на число или строку, тогда при обращении к полю агрегатного объекта 1Ска вывалится с сообщением об ошибке.