Каталог решений - Реализация Ctrl+Z в 1С 7.7 (ТиС)

Реализация Ctrl+Z в 1С 7.7 (ТиС)

Реализация Ctrl+Z в 1С 7.7 (ТиС)

В наличии

В семерке отсутствует возможность отменять последнее действие в формах документов. В данной статье будет рассмотрен пример реализации данной функции. Возможно, кому-нибудь пригодится.

Категория:

Описание

В нашей организации очень часто менеджеры и бухгалтера, привыкшие чуть что, как в Word или  Excel, нажимать Ctrl-Z, часто жаловались, что в 1С-ке отсутствует такая удобная функция. В 1С с помощью предопределенных процедур в модуле формы можно обрабатывать комбинации клавиш.

Я сделала таким образом:

Во-первых, нужно, чтобы система запоминала «последнее состояние», чтобы при нажатии сочетания клавиш было что именно возвращать. Пользователь может удалять строку в табличной части, может добавлять строчку, может редактировать ее — например, поменять цену или количество и т.п. 

В модуле формы определим переменную ВременнаяТаблица, в которой будем хранить текущее состояние табличной части, до внесения изменений.  Тип переменной, таблица значений, нужно определить тип в теле модуля формы:

ВременнаяТаблица=СоздатьОбъект(«ТаблицаЗначений«);

Теперь осталось только вовремя заполнять ее. Для всех действий, которые может проделать пользователь с табличной частью, пропишем загрузку во временную таблицу. В предопределенных процедурах в модуле формы документа пропишем:

Процедура ПриОкончанииРедактированияСтроки(НовСтр)

     Если НовСтр=1 Тогда

        ВыгрузитьТабличнуюЧасть(ВременнаяТаблица);

     КонецЕсли;

КонецПроцедуры

Процедура ПриУдаленииСтроки() 

  ВыгрузитьТабличнуюЧасть(ВременнаяТаблица)

КонецПроцедуры //ПриУдаленииСтроки

Теперь собственно, сама процедура обработки нажатия клавиш:

Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Контрол, Символ, ФСО

// Сообщить(«Код клавиши «+Число(КодКлавиши)); можно обрабатывать и другие комбинации, так можно узнать нужные коды клавиш 

  Если (Контрол=1) и (КодКлавиши=90) Тогда 

     Если ПустоеЗначение(ВременнаяТаблица)=0 Тогда 

        ЗагрузитьТабличнуюЧасть(ВременнаяТаблица); 

    КонецЕсли; 

  КонецЕсли; 

КонецПроцедуры

Данное решение не тормозит, даже если в документе по 100 строк. Возможно, кому-нибудь пригодится.

has been added to your cart:
Оформление заказа