В нашей организации очень часто менеджеры и бухгалтера, привыкшие чуть что, как в Word или Excel, нажимать Ctrl-Z, часто жаловались, что в 1С-ке отсутствует такая удобная функция. В 1С с помощью предопределенных процедур в модуле формы можно обрабатывать комбинации клавиш.
Я сделала таким образом:
Во-первых, нужно, чтобы система запоминала "последнее состояние", чтобы при нажатии сочетания клавиш было что именно возвращать. Пользователь может удалять строку в табличной части, может добавлять строчку, может редактировать ее - например, поменять цену или количество и т.п.
В модуле формы определим переменную ВременнаяТаблица, в которой будем хранить текущее состояние табличной части, до внесения изменений. Тип переменной, таблица значений, нужно определить тип в теле модуля формы:
ВременнаяТаблица=СоздатьОбъект("ТаблицаЗначений");
Теперь осталось только вовремя заполнять ее. Для всех действий, которые может проделать пользователь с табличной частью, пропишем загрузку во временную таблицу. В предопределенных процедурах в модуле формы документа пропишем:
Процедура ПриОкончанииРедактированияСтроки(НовСтр)
Если НовСтр=1 Тогда
ВыгрузитьТабличнуюЧасть(ВременнаяТаблица);
КонецЕсли;
КонецПроцедуры
Процедура ПриУдаленииСтроки()
ВыгрузитьТабличнуюЧасть(ВременнаяТаблица);
КонецПроцедуры //ПриУдаленииСтроки
Теперь собственно, сама процедура обработки нажатия клавиш:
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Контрол, Символ, ФСО)
// Сообщить("Код клавиши "+Число(КодКлавиши)); можно обрабатывать и другие комбинации, так можно узнать нужные коды клавиш
Если (Контрол=1) и (КодКлавиши=90) Тогда
Если ПустоеЗначение(ВременнаяТаблица)=0 Тогда
ЗагрузитьТабличнуюЧасть(ВременнаяТаблица);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Данное решение не тормозит, даже если в документе по 100 строк. Возможно, кому-нибудь пригодится.