gifts2017

Undo (Ctrl+Z ) история выбора реквизитов формы для 7.7

Опубликовал Епрст (Ёпрст) в раздел Программирование - Инструментарий

Небольшой класс, реализует "историю" выбора реквизитов формы.


Позволяет по "Ctrl+z" сделать откат на предыдущее значение( аналогично, как в любом текстовом редакторе, например). Т.е. возвращает предыдущее состояние всех реквизитов формы при любом редактировании - выбора реквизитов, сортировки/удалении/добавлении/редактировании строк табличной части документа и т.д.

 

ЗЫ:Соответственно для работы, должны быть загружены formex.dll и 1cpp.dll

ЗЫ: в новой версии, "Ctrl+x" - возвращает "вперёд", "Ctrl+z" - назад и так по кругу, пока не надоест... :)

 

Для тех кто хочет попробовать, но не знает как:

1. Качаем 2 внешние компоненты:

1cpp.dll      http://www.1cpp.ru/images/3/32/Icpp-latest.rar

formex.dll  http://www.dorex.ru/files/?formex_t.zip

2. Кидаем их в каталог с базой, либо в папку \Bin основной программы

3. В ПриначалеРаботыСистемы пишем 2 строчки :

    ЗагрузитьВнешнююКомпоненту("1cpp.dll") ;

    ЗагрузитьВнешнююКомпоненту("formex.dll") ;

4. Из скаченого архива Undo.rar все файлики кидаем в папку с базой.

5. Запускаем 1с-предприятие, открываем в ней обработку Undo.ert и нажимаем на "Подключить".

6. Пробуем открыть документ/элемент справочника и изменять в нём реквизиты. Затем нажимаем Ctrl+z (Ctrl+x)

Наслаждаемся положительными эмоциями.

 

Скачать файлы

Наименование Файл Версия Размер
Ctrl+z 176
.1242653396 19,34Kb
01.11.12
176
.1242653396 19,34Kb Бесплатно
Ctrl+z Ctrl+x 118
.1242810174 19,37Kb
01.11.12
118
.1242810174 19,37Kb Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

2. Епрст (Ёпрст) 19.05.09 09:37
(2) И чего ? Он тоже используется.
:)
3. Алексей (begemot) 19.05.09 10:55
(2) да ничего :).
Разбирал текст модулей... это мне пригодилось... решил, что другим то же может пригодиться....
4. Епрст (Ёпрст) 19.05.09 11:16
Вообще, тут Abadonna возмущался, что Ctrl+z не реализовали 1-ниги вообще..
Вот собственно, попытка исправить сей недочет :)
5. kiruha Дронов (kiruha) 20.05.09 11:01
А цепочка отменить/вернуть возможна ?
И как быть если повешены функции - например на цену - пресчет
суммы и НДС ?
6. Епрст (Ёпрст) 20.05.09 11:55
(5) Я по кругу сделал... а так, да, перехватить еще и Ctrl+x, например, и сдвигать в другую сторону :)
Можно реализовать.
7. Епрст (Ёпрст) 20.05.09 11:58
(5) А там пофик - каждый раз копируются все атрибуты формы... Это конечно, немерянная избыточность ... :(
8. kiruha Дронов (kiruha) 20.05.09 12:44
(7) А переменные?
В типовой например используются
Перем СуммаДокументаСтараяРуб,ВалютаДоговораСтарая;


(6) Да, это было бы гуд :)
9. Епрст (Ёпрст) 20.05.09 12:55
(8) вот про переменные, я даже как-то и не думал вообще..Да и лишнее это, по идее, они же всё равно только чтоб формулы не вызывались, если значения не меняются...

10. Епрст (Ёпрст) 20.05.09 13:03
(8) Добавил событие, чтоб в другую сторону мотало :)
по Ctrl+x
11. kiruha Дронов (kiruha) 20.05.09 13:10
(9) Ну мало ли кто как их использует ...

Если и переменные вернуть - то состояние формы после undo
будет совпадать с предыдущим полностью. В 1С++ вроде доступны
переменные модуля формы.
12. Епрст (Ёпрст) 20.05.09 13:21
(11) надо подумать.. тогда и глобальные переменные нужно "пасти" :)
Да, еще пасти реквизиты самого объекта, которых нет на форме...
Блин... надо подумать...
13. Епрст (Ёпрст) 20.05.09 13:23
+12 типа СуммаВзаиморасчетов ....
14. Епрст (Ёпрст) 20.05.09 13:27
Хотя, вроде всё корректно, в типовых весь пересчет этих переменных или реквизитов , которых нет на форме запихан в функции текстов на форме, а у меня, после установки предыдущих значений идёт обновление формы, следовательно работают функции текстовых реквизитов - реквизты становятся такими как надо..
:)
15. kiruha Дронов (kiruha) 20.05.09 13:45
(12) Не, глобальные переменные - это перебор - мало ли как они менялись.
Можно вернуть таблицу значений после undo -
имя реквизита, значение до undo, значение после (для измененных)
тогда можно программно реагировать, если навешены спец обработчики.
16. Епрст (Ёпрст) 20.05.09 13:50
(15) в принципе , можно проще сделать, после undo - вызвать оригинальную формулу(если она есть) у каждого реквизита, если он изменен был..
Хотя с ТЧ дока я не стал вообще заморачиваться - тупо целиком храню и привет...
:)
17. kiruha Дронов (kiruha) 20.05.09 14:21
(16) Да, так лучше )
Тогда это будет эквивалентно интерактивному изменению реквизита
и не должно вызывать траблов.
18. kiruha Дронов (kiruha) 20.05.09 14:29
Хотя возможны проблемы типа при измененении типа цен -
пересчет табличной части ....
Не заново же пересчитывать.

Наверно лучше вернуть пременные формы, а дальше пусть прог решает , что делать
19. Епрст (Ёпрст) 20.05.09 14:40
(18) ага, вот поэтому я и забил..
Изначально вообще "пас" модифицированность формы и сбрасывал её принудительно, но долго всё это и не очень корректно работало.
20. napala@ (napala@) 24.05.09 15:44
иногда очень даже не хватает, спасибо, теперь поэкспериментируем! ;)
21. Андрей (Свой) 13.07.09 15:37
должно быть полезно когда в большой таблице документа удалил лишнюю строку...
хотелось бы глобального "ундо" для базы чтобы спасти ситуацию "ой, я перепровела не тот документ"
22. Епрст (Ёпрст) 13.07.09 17:02
(21)Тогда потребовалось бы хранить где-то эту инфу...
Тут задача немного другая.
23. Дмитрий Елисеев (w-divin) 01.12.09 11:56
прЫкольненько )))
только ИМХО по кругу не оч удобно - если поменять 5-6 реквизитов - потом очень трудно определить какое состояние было исходным... вот если бы как везде - дошел до исходного по стрл-з и остановился и вперед так же - до макс изменений и стоп... было бы ваабче супер )))
:oops:
24. Епрст (Ёпрст) 03.12.09 14:44
(23) Да это легко сделать.. все изменения в ТЗ хранятся.. просто при сдвиге запретить "цикличность"
25. Дмитрий Елисеев (w-divin) 03.12.09 14:48
(24) угу ))) просто модуль не смотрел пока ))) но штука прЫкольная )))
26. Gen Tay (GenTay) 16.12.14 23:59
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа