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

15.07.13

Задачи пользователя - Адаптация типовых решений

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

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

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

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

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

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

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

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

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

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

     КонецЕсли;

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

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

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

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

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

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

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

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

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

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

    КонецЕсли; 

  КонецЕсли; 

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

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

См. также

Печатные формы Адаптация типовых решений Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Приятное улучшение обработки "Внешние печатные формы" для типовых конфигураций на базе 1С 7.7 для более комфортной работы с "любимой семерочкой".

1 стартмани

04.02.2022    3361    1    igor7777    0    

3

Адаптация типовых решений Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бухгалтерский учет ФОМС, ЕФС Бесплатно (free)

В этой статье описано, какие небольшие изменения можно внести в модуль документа Начисление налогов с ФОТ, чтобы правильно рассчитывались страховые взносы с 1 апреля 2020 г.

09.04.2020    20714    Юджин58    39    

5

Адаптация типовых решений Программист Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Управленческий учет Бесплатно (free)

Описан способ работы с учетом расписания с приоритетными покупателями - торговыми сетями (основными покупателями) в торговой или комплексной учетной системе на 1С 7.7. Множественная заявка покупателя на несколько торговых точек.

14.10.2019    6361    ksnik    14    

3

Операции по ВЭД Адаптация типовых решений Программист Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Бухгалтерский учет НДС Бесплатно (free)

В данной статье хотел поделиться опытом, как в Торговле 7.7 ( релиз 994) сделать возможность выводить код ТНВЭД в печатную форму счета-фактуры. Сразу скажу, что нужно это только тем, кто осуществляет экспорт в страны таможенного союза. Остальные могут не волноваться.

15.11.2017    12062    AndKovalchuk    0    

1

Зарплата Адаптация типовых решений Программист Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)

Реализация Постановления Правительства РФ 1316 от 04.12.14 для типовой конфигурации "Бухгалтерский учет 7.7" рел. 7.70.590

1 стартмани

31.12.2014    24063    9    Sergey1CSpb    2    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1065 15.07.13 12:08 Сейчас в теме
http://infostart.ru/public/20038/

и это, отформатируйте статью - ничерта не видать
2. Ёпрст 1065 15.07.13 12:10 Сейчас в теме
Ну и самое главное, вы забыли упомянуть некоторый момент - загрузку ВК formex.dll, без которой это усё не возможно.
3. a.o.popova 7 15.07.13 12:47 Сейчас в теме
Спасибо, отформатировала, понадеялась, что местный Insert Code нормально сработает. Если честно, нечасто здесь пишу, все особенности инфостартовского редактора не знаю.
4. a.o.popova 7 15.07.13 12:50 Сейчас в теме
formex.dll - это да, без него все вышеописанное было бы невозможно,
в глобальном модуле в процедуре ПриНачалеРаботыСистемы() нужно обязательно прописать загрузку компоненты

ЗагрузитьВнешнююКомпоненту("FormEx.dll");
5. Ёпрст 1065 15.07.13 13:06 Сейчас в теме
Да, еще, у тебя не всё "ловит":

сортировку строк, обработку подбора.. + "запоминание" только последнего действия.

Смотри мою поделку - запоминает все реквизиты формы, + все действия "по кругу".
Если бы щас доделывал бы - всё запихнул бы в один файл - и класс и его подключение и вк.
Лень.
6. a.o.popova 7 15.07.13 13:18 Сейчас в теме
а у нас просто этими кнопками в принципе не пользуются, я даже про них и не подумала. На будущее буду знать.
7. via 93 16.07.13 00:26 Сейчас в теме
Надо поддерживать "женскую" составляющую.. Без них совсем здесь скучно будет.
не дрейфь.. и всё получится.
8. 13jaguar 94 17.07.13 08:12 Сейчас в теме
Хорошая идея. Только, как это будет работать, если в табличной части N тысяч строк? Было бы лучше запоминать состояние текущей строки.
9. a.o.popova 7 17.07.13 08:33 Сейчас в теме
На тысяче строк честно не пробовала :) Нашла у нас документ, там было 112 строк - работало без каких-либо тормозов (при этом проверялось в рабочее время, т.е. при обычной нагрузке системы). Можно как-нибудь нагенерировать тысячу строк программно в какой-нибудь документ, проверить что будет - если будет тормозить, тогда уже заморачиваться насчет запоминания конкретной строки, тогда реализация будет чуть сложнее. В моем случае я фактически использую две команды - загрузить и выгрузить. Конечно, все зависит от особенностей бизнес-процесса конкретной организации. У нас не набивают накладные больше, чем 100-150 строк. В принципе, не представляю, что такое могут продавать, чтобы набивать по 1000 строк - бедный бухгалтер :)
Оставьте свое сообщение