|
v7: Хочу закрывать журналы по Esc | ☑ | ||
---|---|---|---|---|
0
Масянька
30.06.14
✎
16:23
|
День добрый!
Итак, хочу, чтобы журналы документов закрывались по кнопке "Esc". Процедура ПриНажатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт Перем ТекФорма; ФСО = 0; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(ТекФорма.Форма); Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда ТекФорма.Закрыть(0); КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() Выдает ошибку: РасшФормы.УстановитьФорму(ТекФорма.Форма); {Глобальный модуль(532)}: Поле агрегатного объекта не обнаружено (Форма) Почему? |
|||
97
vcv
02.07.14
✎
10:36
|
(95) ФСО = 0 забыла. Нужно же Esc "проглотить" и заменить его на Ctrl+F4
У меня работает, не виснет ничего. |
|||
98
ADirks
02.07.14
✎
10:38
|
(90) минимальный скрипт
#IfWinActive 1С:Предприятие ;ahk_class Afx:400000:0:0:0:c08df ;======================================================================== ;CtrlF4 по Esc - весьма спорно $SC001::Send ^+{F4} Автозапуск: в винде в меню пуск, в папку автозапуск запихать командный файл, с таким примерно содержимым. start P:\AutoHotkey\AutoHotkey.exe X:\AHK\V7.ahk Если надо в терминале, то там тоже где-то прописывается скрипт при запуске сессии. Игры с SendKeys в обработчике события клавы - штука тонкая, очень легко всё поломать. |
|||
99
Масянька
02.07.14
✎
10:52
|
(98) Всё, поняла. Не буду.
|
|||
100
Масянька
02.07.14
✎
10:54
|
(97) В таком варианте:
Процедура ПриОтжатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт ФСО = 0; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); глСервис.ЭмулироватьКлавиатуру("^{F4}"); КонецЕсли; если открыть выбор периода - закрывается и выбор, и журнал. |
|||
101
varelchik
03.07.14
✎
10:35
|
А что мешает использовать ПриПолученииКоманды()
формексом определить тип контекста, если журнал то Контект.Форма.Закрыть(). Делов то. |
|||
102
varelchik
03.07.14
✎
10:36
|
Что-то типа того что ты просила для закрытия Таблиц по ECS.
|
|||
103
vcv
03.07.14
✎
10:42
|
(101) Проблема в системных окнах типа выбора периода или настроек страницы. Они не имеют своего контекста. Ты получил контекст формексом, считаешь, что отчет открыт, а на самом деле активно окно параметров страницы и закрывать таблицу, перехватив Esc, нельзя. 1Ска рухнет, когда родительское окно, из которого было открыто модальное системное, незапланированно исчезнет.
|
|||
104
varelchik
03.07.14
✎
11:10
|
(103)Ну так это ж не проблема.
Отловить Получение команды ВыбораПериода. Это ж тоже команда. Я таким образом для закрытия табличного документа в случае открытых Настройки параметра страницы и диалога печати тож использую такие извращения. |
|||
105
varelchik
03.07.14
✎
11:12
|
а в журналах не так много системных окон.
их можно тоже отловить. |
|||
106
varelchik
03.07.14
✎
11:12
|
тут главное подход, а реализация это дело второе.
|
|||
107
ADirks
03.07.14
✎
11:12
|
Кстати, а что никто до сих пор не предложил все журналы на ТП переписать?
Вот, предлагаю :) Обработки то штатно по Esc закрываются. |
|||
108
varelchik
03.07.14
✎
11:13
|
(107) кстати это тож вариант.
только ж скоко ж журналов переписывать....... |
|||
109
varelchik
03.07.14
✎
11:14
|
я вот взялся переписать общий журнал с множественными фильтрами, да так и не закончил.
|
|||
110
ADirks
03.07.14
✎
11:16
|
(108) Процесс конечно не быстрый
Мы тут у себя не где-то с год назад довели технологию до ума - и теперь любой журнал клепается за час. |
|||
111
Злопчинский
03.07.14
✎
11:20
|
(110) уй! дайте шаблон! ;-) ато меня псевдожурнал мой на ТЗ противоречит моему чувству прекрасного...
|
|||
112
varelchik
03.07.14
✎
11:27
|
(111) Он тя щас своими классами закидает.
Вряд ли с первого раза въедешь. |
|||
113
varelchik
03.07.14
✎
11:28
|
я его знаю.
в него вся конфа классами прошита. |
|||
114
Масянька
03.07.14
✎
11:29
|
(101) У каждого журнала своя команда (уже проверила).
|
|||
115
Масянька
03.07.14
✎
11:30
|
+(114) И у справочников тоже - у каждого своя.
Причем, команда возвращается при открытии. По Esc - нету команды. |
|||
116
varelchik
03.07.14
✎
11:32
|
(114) не журнала а системных команд.
Выбор периода во всех журналах имеет одну и туже команду. ESC ловим принажатииКнопкиКлавиатуры. вот там и разруливаем нужные действия. |
|||
117
varelchik
03.07.14
✎
11:33
|
так я использую Таблица.Показать(-1);
если активный контекст это Таблица. Что тебе мешает делать тоже если активныйконтекст имеет тип Журнал. |
|||
118
Масянька
03.07.14
✎
11:34
|
(116) Ну дык - попробуй. У меня не вышло.
ПриПолученииКоманды - возвращает команду при открытии журнала. При нажатии Esc в журнале - тишина... |
|||
119
Масянька
03.07.14
✎
11:34
|
(117) АктивныйКонтекст (в приполучениикоманды) - Групповой.
|
|||
120
Масянька
03.07.14
✎
11:35
|
(117) Печ. формы по Esc - работает :)
|
|||
121
varelchik
03.07.14
✎
11:38
|
1.Заводи глобальныу переменную БлокироватьЕСкейп.
2. В ПриполученииКоманды Ловим что за команда имея список системных команд либо делаем что-то или не далаем. 3. В ПриНажатииКнопкиКлавиатуры смотрим в каком состоянии БлокироватьЕскейп. 4.Если блокировать ни чего не далем, в противном выполняем нужные действия. 5.В результате получаем правильное поведение нажатия ESC по системным командам и то что нам нежно если это не системная команда. |
|||
122
varelchik
03.07.14
✎
11:39
|
все просто доупопения.
|
|||
123
Масянька
03.07.14
✎
11:41
|
(121) А сам пробовал?
|
|||
124
varelchik
03.07.14
✎
11:44
|
(121)яж кажу.
Таким макаром я перехватил системные команды ПараметрыСтраницы и диалог печати. |
|||
125
varelchik
03.07.14
✎
11:44
|
что мешает перехватить все остальные?
|
|||
126
Масянька
03.07.14
✎
11:45
|
(124) Покажи код, а? Пожалуйста.
|
|||
127
varelchik
03.07.14
✎
11:45
|
о!
кстати это идея! это ж можно таким макаром и закрывать системные кона для выгона пользователей! |
|||
128
varelchik
03.07.14
✎
11:46
|
Процедура ПриПолученииКоманды(Команда,Флаг) Экспорт
Сообщить(Команда); Если Команда=32805 Тогда Ответ=Вопрос("Запрещено блокировать сеанс! |Выйти их системы?","Да+Нет"); Флаг=1; Если Ответ="Да" Тогда глВыходВопрос=1; ЗавершитьРаботуСистемы(0); КонецЕсли; ИначеЕсли Команда=57604 Тогда Конт=1; ОткрытьФормуМодально("Обработка.СохранениеТаблицы",Конт); Если Конт=1 Тогда Флаг=1; КонецЕсли; ИначеЕсли Команда=33899 Тогда Флаг=1; ОткрытьФорму("Обработка.АктивныеПользователи"); //ИначеЕсли Команда=32875 Тогда // Конт=1; // ОткрытьФормуМодально("Обработка.УстановкаВремени",Конт); // Если Конт=1 Тогда // Флаг=1; // КонецЕсли; ИначеЕсли Число(глКонвертировать)=1 Тогда Если Команда=57607 Тогда БлокироватьЭскейп=1; Конт=1; ОткрытьФормуМодально("Обработка.ПреобразованиеMXL",Конт); Если Конт=1 Тогда Флаг=1; КонецЕсли; КонецЕсли; ИначеЕсли (Команда=57605) ИЛИ (Команда=57609) ИЛИ (Команда=57607) Тогда БлокироватьЭскейп=1; КонецЕсли; КонецПроцедуры // ПриПолученииКоманды Процедура ПриНажатииКнопкиКлавиатуры(Конт,Код,Альт,Шифт,Контрл,Символ,ФСО) Перем Табличка; Если Код = 27 Тогда Если глСервис.АктивныйКонтекст (Табличка) = 1 Тогда Если (ТипЗначенияСтр (Табличка) = "Таблица") Тогда Если БлокироватьЭскейп=1 Тогда БлокироватьЭскейп=0; //ФСО=1; Возврат; КонецЕсли; ФСО=0; Табличка.Показать(,,-1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
129
Масянька
03.07.14
✎
11:47
|
(128) Спасибо. Буду пробовать.
|
|||
130
varelchik
03.07.14
✎
11:47
|
только вместо
(Команда=57605) ИЛИ (Команда=57609) ИЛИ (Команда=57607) можно создать список команд и проверять на вхождение. |
|||
131
varelchik
03.07.14
✎
11:47
|
спасибо за идею.
|
|||
132
Ёпрст
03.07.14
✎
11:50
|
||||
133
varelchik
03.07.14
✎
11:55
|
как всегда.
твои щаманства над компаундом? |
|||
134
varelchik
03.07.14
✎
11:56
|
как бы взял и повесил на горячую кнопку кнопу esc?
|
|||
135
varelchik
03.07.14
✎
11:57
|
знаем твои приколы.
|
|||
136
varelchik
03.07.14
✎
11:58
|
только что будешь делать если надо внести в этот журнал изменения?
все нахрен перестанет работать. |
|||
137
varelchik
03.07.14
✎
12:00
|
всмысле твою хитрую кнопку открыть и нажать не esc а ок.
а потом сохранить. все ломается. |
|||
138
Ёпрст
03.07.14
✎
12:00
|
(136) вноси, хоткей не слетит... никогда
|
|||
139
varelchik
03.07.14
✎
12:01
|
нет конечно это тоже вариант.
но это надо постоянно об этом помнить. |
|||
140
varelchik
03.07.14
✎
12:01
|
ну дык уже слетело.
|
|||
141
Ёпрст
03.07.14
✎
12:02
|
не надо ничего помнить, тупо перехватчиком лепим новый атрибут - кнопка при открытии нужных форм, всё.
|
|||
142
Ёпрст
03.07.14
✎
12:02
|
ежели нужна "автоматизация"
|
|||
143
varelchik
03.07.14
✎
12:04
|
а ну если так то посыпаю голову пеплом.
не сообразил сразу. т.е. при открытии журналов или че тама еще надо создаем атрибут с формулой Форма.Закрыть(0) и хоткем ESC правильно понял? |
|||
144
varelchik
03.07.14
✎
12:04
|
а это точно идея!
так ведь моно закрывать любые формы не только журнала но и списков справочников! |
|||
145
varelchik
03.07.14
✎
12:05
|
Ну голова!
|
|||
146
Ёпрст
03.07.14
✎
12:06
|
(143) да
|
|||
147
varelchik
03.07.14
✎
12:06
|
вот что значит нестандартно мыслить.
|
|||
148
varelchik
03.07.14
✎
12:20
|
хотя мой вариант тоже живучь.
вот только кнопки в журнале он не отлавливает. |
|||
149
varelchik
03.07.14
✎
12:28
|
+(148) т.е при нажатии на кнопку выбора периода ситема невходит в процедуру ПриПолученииКоманды.
обидно. хотя в какой-то старой версии виджета оно отлавливалось. |
|||
150
ADirks
03.07.14
✎
13:56
|
(111) Мне не жалко, но это реально большой комплекс всяких классов. Не так то просто выделить отдельно из конфы. Про разобраться я ваще молчу...
|
|||
151
Масянька
03.07.14
✎
14:15
|
(142) Вы меня извините, но я не нашла где отрабатывается перехватчик?
Я уже повесила в журнал кнопку, но в модуле пришлось написать: Процедура ПриНажатииКнопки(Кнопка) Если (Кнопка = "Esc") Тогда Форма.Закрыть(); КонецЕсли; КонецПроцедуры А у тебя в модуле - ничего нет. Расскажи про шаманство, пожалуйста. |
|||
152
Ёпрст
03.07.14
✎
14:59
|
(151)смотри тщательнее - просто кнопка на форме с хоткеем, вк нет .. вообще
|
|||
153
Масянька
03.07.14
✎
15:02
|
(152) Я вижу. Esc где прописано?
|
|||
154
Ёпрст
03.07.14
✎
15:03
|
(153) ?
повешен хоткей на кнопку. фсё. |
|||
155
Ёпрст
03.07.14
✎
15:03
|
там, на закладке Команда
|
|||
156
Масянька
03.07.14
✎
15:04
|
(155) В твоем примере у меня стоит <<>>.
|
|||
157
Ёпрст
03.07.14
✎
15:05
|
(156) Ты суслика види ?.. а он есть!
|
|||
158
Масянька
03.07.14
✎
15:08
|
(157) То есть: если клавиша не назначена (<<>>) - по умолчанию это Esc?
|
|||
159
Ёпрст
03.07.14
✎
15:10
|
(158) конечно нет.
|
|||
160
Масянька
03.07.14
✎
15:11
|
(159) Объясни - ничего не понимаю. Пожалуйста.
|
|||
161
NS
03.07.14
✎
15:14
|
(160) Редактором он клавишу в MD-шнике поменял на ESC скорей всего.
|
|||
162
Ёпрст
03.07.14
✎
15:15
|
||||
163
Ёпрст
03.07.14
✎
15:17
|
(160) че там объяснять то ? повешен на кнопку нужный хоткей и фсё.
|
|||
164
Масянька
03.07.14
✎
15:18
|
(162) Спасибо.
Ты меня убъешь, наверное, но КАК повешен?! :( |
|||
165
Ёпрст
03.07.14
✎
15:18
|
если че, можно повесить любой, есть только ограничения:
-не больше 40 хоткеев на одной форме -некоторые хоткеи не работаею без многострочной части (или тз на форме) |
|||
166
Ёпрст
03.07.14
✎
15:20
|
(164) прямая правка компаунда чем угодно - сторонним софтом, hex редактором, скриптом к опенконфу, короче, любым средством для правки компаунда.
|
|||
167
Масянька
03.07.14
✎
15:20
|
(166) Раньше сказать не мог, противный :)
|
|||
168
Ёпрст
03.07.14
✎
15:29
|
(167) если бы я был противным, то дал бы тебе ЭТО
https://cloud.mail.ru/public/e98ba7b7b7d1/Примерчик.rar |
|||
169
Ёпрст
03.07.14
✎
15:30
|
ищи теперь..
|
|||
170
Масянька
03.07.14
✎
15:30
|
(168) Я же - ласково :) Любя :)
СПАСИБО! |
|||
171
Масянька
03.07.14
✎
17:49
|
(169) Ничего у меня не получается...
В журнале сделала кнопку (обозвала "КнопокаEscape"). Открываю md-шник nex-ом. Нахожу свою кнопку. Открываю твою обработку (тоже в hex'e), нахожу кнопку Esc. Вижу различия (у тебя и у себя). Меняю 0 на 27 (добавляю 1 байт и меняю значение 0 на 27). Пишет, что изменит размер файла. Меняю, сохраняю... Запускаю 1С - общая файловая ошибка при доступе к Users... В Users... файл, на который ругается, есть только в момент запуска 1С. ЧЯДНТ? |
|||
172
Злопчинский
04.07.14
✎
00:57
|
(171) ..не все йогурты одинаково полезны...
|
|||
173
vcv
04.07.14
✎
06:27
|
(171) Сделай не hex-редактором, а разбери конфигурацию gcomp, обычным текстовым редактором поправь что надо и собери gcomp обратно. Заодно, для примера, проделай это над "примерчиком.rar" из (168). Посмотришь, где там в журнале кнопка с хоткеем Esc.
|
|||
174
Масянька
04.07.14
✎
09:24
|
(173) Декомпилировать, поправить - есть. А обратно - как? В смысле собрать?
|
|||
175
Масянька
04.07.14
✎
09:27
|
После декомп - образовался каталог Src. В нем нашла журнал - кнопку - добавила HotKey, сохранила. Теперь - захожу на вкладку "Компиляция" - а там только md дает выбрать, а в папке Src нету md...
|
|||
176
Масянька
04.07.14
✎
09:33
|
Вроде разобралась...
Выдает ошибки: Неуникальный числовой идентификатор - 0:Бухгалтерия Нулевой числовой идентификатор для Бухгалтерия Нулевой числовой идентификатор для Задача Это чего? |
|||
177
Масянька
04.07.14
✎
09:36
|
Всем помогающим - огромное спасибо и много чмоки-чмоки!
|
|||
178
Ёпрст
04.07.14
✎
09:37
|
(176) 'nj hernb c vskjv yflj vsnm cgthdf
^) |
|||
179
Масянька
04.07.14
✎
09:42
|
(178) Переведи :)
|
|||
180
Ёпрст
04.07.14
✎
09:43
|
Это не переводимый русский фольклор
|
|||
181
Масянька
04.07.14
✎
09:44
|
В предприятии сейчас почему-то выдает ошибку - процедура не обнаружена (КнопочкаEscape)...
На форме - кнопка, заголовок - Кнопка, идентификатор - КнопочкаEscape, невидимый, далее - все пусто. |
|||
182
Масянька
04.07.14
✎
09:50
|
(180) У меня чистые руки. Голова только не холодная :)
|
|||
183
Масянька
04.07.14
✎
09:52
|
А все получилось... :))))))))
Огромное СПАСИБО всем! Чмоки! |
|||
184
Масянька
10.07.14
✎
17:54
|
Опять - здравствуйте.
Итак, воткнула кнопки в журналы, проверила. Теперь запихиваю в рабочую БД. Сравнение - объединение... А показывает, что вся конфа поменялась... Так и должно быть? Только в журналах копалась. |
|||
185
Ёпрст
10.07.14
✎
17:56
|
(184) разный стиль винды... будут модифицированны все формы диалога
|
|||
186
Ёпрст
10.07.14
✎
17:57
|
можешь посмотреть, шо менялось..через компаремд
Ну и совсем православно, через версионирование кдиф3 и т.д и т.п |
|||
187
Масянька
10.07.14
✎
17:59
|
(185) Все делалось на одном компе.
Вывод изменения везде (справочники, док-ты, отчеты, журналы (это понятно), обработки). Везде - диалог. |
|||
188
Ёпрст
10.07.14
✎
18:25
|
(187) и под одним юзверем ?
и стиль винды какой ? ставь классика, не ошибешься.. А еще, лучше сжать мд..еще |
|||
189
Ёпрст
10.07.14
✎
18:25
|
и это, мд-ник, пересобирала поди еще , не ?
:) |
|||
190
Масянька
10.07.14
✎
18:32
|
(189) Есесьно. Чет мне кажется, что именно поэтому...
|
|||
191
Ёпрст
10.07.14
✎
18:37
|
(190) какая догадливая, однако :))))))))))))))))))))))))))))0
|
|||
192
Ёпрст
10.07.14
✎
18:37
|
моменяла все потоки в компаунде , еще и удивляется :)))
|
|||
193
Ёпрст
10.07.14
✎
18:38
|
Пересобери мд-ник в рабочей базе, потом ужо сравнивай тогда.
Только разбирай-собирай с одинаковыми параметрами |
|||
194
Масянька
10.07.14
✎
18:38
|
(191) Спасибо (смущаясь и краснея) :)))))))))))))
Я поняла: кнопку делать отдельно, а потом саму кнопку вставлять куда надо. Спасибо!!! |
|||
195
Ёпрст
10.07.14
✎
18:38
|
А так, поставь turbomd и.. половина проблем решена.
|
|||
196
Ёпрст
10.07.14
✎
18:39
|
(194) так и надо было делать - тупой копи-пасте..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |