|
v7: Хочу закрывать журналы по Esc | ☑ | ||
---|---|---|---|---|
0
Масянька
30.06.14
✎
16:23
|
День добрый!
Итак, хочу, чтобы журналы документов закрывались по кнопке "Esc". Процедура ПриНажатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт Перем ТекФорма; ФСО = 0; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(ТекФорма.Форма); Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда ТекФорма.Закрыть(0); КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() Выдает ошибку: РасшФормы.УстановитьФорму(ТекФорма.Форма); {Глобальный модуль(532)}: Поле агрегатного объекта не обнаружено (Форма) Почему? |
|||
1
Wobland
30.06.14
✎
16:23
|
а что за ТекФорма?
|
|||
2
Ёпрст
30.06.14
✎
16:25
|
РасшФормы.УстановитьФорму(Форма);
|
|||
3
Масянька
30.06.14
✎
16:32
|
(2) Ругается сразу при входе в Предприятие :(
РасшФормы.УстановитьФорму(Форма<<?>>); {Глобальный модуль(532)}: Переменная не определена (Форма) Забыла сказать - процедура в глобальнике. |
|||
4
Ёпрст
30.06.14
✎
16:34
|
ааа..
РасшФормы.УстановитьФорму(мКонтекст.Форма); |
|||
5
Масянька
30.06.14
✎
16:37
|
(4) Не ругается, но клава - не реагирует :(
Ни стрелки, ни Enter, ни Esc. |
|||
6
Ёпрст
30.06.14
✎
16:38
|
>>> Если глСервис.АктивныйКонтекст (ТекФорма)
вот этот мусор хоть поправила ? |
|||
7
eshtrey
30.06.14
✎
16:40
|
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт
ФСО = 0; Если КодКлавиши = 27 Тогда Сервис = СоздатьОбъект("Сервис"); РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(Конт.Форма); Если Сервис.АктивныйКонтекст(Конт.Форма) = 1 Тогда Конт.Форма.Закрыть(0); КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() |
|||
8
Ёпрст
30.06.14
✎
16:41
|
там должно быть тип того:
Процедура ПриОтжатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт ФСО = 1; Если КодКлавиши = 27 Тогда ФСО = 0; глСервис = СоздатьОбъект("Сервис"); Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда мКонтекст.Форма.Закрыть(0); КонецЕсли; КонецЕсли; КонецПроцедуры // ПриОтжатииКнопкиКлавиатуры() |
|||
9
Ёпрст
30.06.14
✎
16:42
|
даже, лучше так
Процедура ПриОтжатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт ФСО = 1; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда ФСО = 0; мКонтекст.Форма.Закрыть(0); КонецЕсли; КонецЕсли; КонецПроцедуры // ПриОтжатииКнопкиКлавиатуры() |
|||
10
Масянька
30.06.14
✎
16:43
|
(8) Ты - как всегда - УМНИЦА!!!!
Вот так работает: Процедура ПриНажатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт Перем ТекФорма; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(мКонтекст.Форма); Если глСервис.АктивныйКонтекст (мКонтекст.Форма) = 1 Тогда Если (РасшФормы.ТипОбъекта() = "Журнал") Тогда мКонтекст.Форма.Закрыть(0); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() Дальше - буду ковырять. ОГРОМНОЕ СПАСИБО! Чмоки! |
|||
11
Масянька
30.06.14
✎
16:43
|
+(9) ФСО - буду пробовать.
Еще раз - СПАСИБО!!!! |
|||
12
Ёпрст
30.06.14
✎
16:45
|
(10) не помню ужо, но разве в АктивныйКонтекст форма передается ?
Был же контекст раньше.. :) |
|||
13
Ёпрст
30.06.14
✎
16:46
|
ну и, лучше ПриОТжатии пользовать, а не приНажатии..
|
|||
14
Масянька
30.06.14
✎
16:48
|
(13) Не понял?
Тут еще грабли оказались: Процедура ПриНажатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт Перем ТекФорма; ФСО = 1; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(мКонтекст.Форма); Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда Если (РасшФормы.ТипОбъекта() = "Журнал") Тогда ФСО = 0; мКонтекст.Форма.Закрыть(0); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() //************ Закрытие печатной формы по кнопке "Esc" ************************* Процедура ПриПолученииКоманды(Команда) Экспорт Перем ТекФорма; глСервис = СоздатьОбъект("Сервис"); Если (Команда = 98848) Тогда Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда ФСО = 0; ТекФорма.Показать( , , -1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриПолученииКоманды ПриПолученииКоманды - закрывает только открытую печ. форму. Теперь, если в открытой печ. форме нажать Esc - ругается - РасшФормы.УстановитьФорму(мКонтекст.Форма); {Глобальный модуль(531)}: Значение не представляет агрегатный объект (Форма) Дурдом какой-то. |
|||
15
Ёпрст
30.06.14
✎
16:50
|
(14) см. (9)
работает ? |
|||
16
Масянька
30.06.14
✎
16:55
|
(15) Да... Но открыла журнал, открыла док-т, открыла печ. форму. Нажала Esc - закрылась печ. форма (ура - не ругается), опять нажимаю Esc - закрывается и док-т и журнал. Оба сразу.
По-моему, я знаю в чем грабли... |
|||
17
Масянька
30.06.14
✎
16:56
|
+(16) Да нет ФСО при открытии 1...
А нельзя, чтобы док-т отдельно закрывался, а журнал отдельно? |
|||
18
Ёпрст
30.06.14
✎
17:00
|
(17) проверяй тип контекста
|
|||
19
Ёпрст
30.06.14
✎
17:01
|
у тебя же еще там и команды рвджетсом вроде перехватываются, не ?..
хз, че там у тебя, а так, всё можно :) |
|||
20
Масянька
30.06.14
✎
17:04
|
(19) Вот обе две процедуры.
Процедура ПриОтжатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт Перем ТекФорма; ФСО = 1; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(мКонтекст.Форма); Если (РасшФормы.ТипОбъекта() = "Журнал") Тогда ФСО = 0; мКонтекст.Форма.Закрыть(0); ФСО = 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() //************ Закрытие печатной формы по кнопке "Esc" ************************* Процедура ПриПолученииКоманды(Команда) Экспорт Перем ТекФорма; глСервис = СоздатьОбъект("Сервис"); Если (Команда = 98848) Тогда Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда ФСО = 0; ТекФорма.Показать( , , -1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриПолученииКоманды Больше нигде Я клаву и команды не хватаю. |
|||
21
Масянька
30.06.14
✎
17:05
|
(18) Групповой. И для документа, и для журнала.
|
|||
22
Ёпрст
30.06.14
✎
17:06
|
в ПриПолученииКоманды бред же написан.. с ТекФормой..
|
|||
23
Масянька
30.06.14
✎
17:08
|
(22) Согласна. Но "бред" работает. Там столько проблем было, пока "бред" заработал...
И "бред касается только печ. формы. Или нет? |
|||
24
Ёпрст
30.06.14
✎
17:11
|
(23)
ты объявила Перем ТекФорма и далее у неё проверяешь Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда там всегда 0 будет, ибо ТекФорма - дырка от бублика. |
|||
25
Масянька
30.06.14
✎
17:15
|
(24)
Если (Команда = 98848) Тогда Сообщить("! - " + глСервис.АктивныйКонтекст (ТекФорма)); Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда ФСО = 0; ТекФорма.Показать( , , -1); КонецЕсли; КонецЕсли; КонецЕсли; Пишет: ! - 1 |
|||
26
eshtrey
30.06.14
✎
17:36
|
(20) а если зайти в форму нового элемента справочника и нажать ESC, что будет?
|
|||
27
Масянька
30.06.14
✎
17:41
|
(26) Стандарт отрабатывается - Сохранить - да, нет.
|
|||
28
Ёпрст
30.06.14
✎
17:43
|
(25) хрень полная..
|
|||
29
Ёпрст
30.06.14
✎
17:43
|
одна из черепашек врёт :)
|
|||
30
eshtrey
30.06.14
✎
17:43
|
у меня с твоим кодом сыпет ошибки на РасшФормы.УстановитьФорму(мКонтекст.Форма);
при ESC в форме нового элемента справочника |
|||
31
eshtrey
30.06.14
✎
17:44
|
это к (27)
|
|||
32
Масянька
30.06.14
✎
17:47
|
(30) А у меня - нет.
(28) Ну работает же! Там были заморочки: если в печ. форме открыть предпросмотр, еще там чего-то. Сейчас печ. форма отлично закрывается. А сам док-т остается открытым. Теперь журнал не закрывается. И не ругается :( Процедура ПриОтжатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт Перем ТекФорма; ФСО = 1; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда Если (ТипЗначенияСтр(ТекФорма) = "ГрупповойКонтекст") Тогда РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(мКонтекст.Форма); Если (РасшФормы.ТипОбъекта() = "Журнал") Тогда ФСО = 0; мКонтекст.Форма.Закрыть(0); //ФСО = 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() |
|||
33
Масянька
30.06.14
✎
17:48
|
(32) Уже вижу.
|
|||
34
Масянька
30.06.14
✎
17:49
|
+(32) Поправила. Закрывается и док-т, и журнал. По одному Esc.
|
|||
35
Масянька
30.06.14
✎
17:54
|
Если в начале процедуры воткнуть Сообщить(...), то выводится 2 раза. Esc нажат 1 раз. Почему?
|
|||
36
Масянька
30.06.14
✎
18:05
|
Упс...
А ПриНажатии.... тот же код отрабатывает... |
|||
37
vcv
01.07.14
✎
07:35
|
Нафиг, нафиг. Я когда-то боролся, так все глюки не победил. То что-то лишнее закрывается по Esc, то наоборот, не закрывается. Самая суровая проблема была с системными окнами типа выбора периода и поиска по номеру.
|
|||
38
Масянька
01.07.14
✎
09:01
|
(37) В принципе - да. Но - печ. формы (хотя Ё и ругается) отрабатывает. Без глюков и вылетов.
|
|||
39
vcv
01.07.14
✎
09:05
|
Может попробовать обходным манёвром? Ну что-то типа распаковать конфу GComp, руками поправить хоткей на кнопке Закрыть в журналах и запаковать снова? Если, конечно, GComp позволит произвольный хоткей поставить.
|
|||
40
Масянька
01.07.14
✎
09:10
|
(39) Да нет. Так глубоко копать - не знаешь, что выкопаешь. Сегодня проверю ПриНажатии...
|
|||
41
ADirks
01.07.14
✎
10:40
|
(39) gcomp то сможет, но что характерно, 1С всё это сожрёт. Вплоть до всяких NumLock, Pause и т.д.
|
|||
42
Масянька
01.07.14
✎
10:42
|
У меня - работает:
//************ Закрытие журналов и справочников по кнопке "Esc" ******************************* Процедура ПриНажатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт ФСО = 1; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда Если (ТипЗначенияСтр(мКонтекст) = "ГрупповойКонтекст") Тогда РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(мКонтекст.Форма); Если ((РасшФормы.ТипОбъекта() = "Журнал") или (РасшФормы.ТипОбъекта() = "Справочник")) Тогда ФСО = 1; мКонтекст.Форма.Закрыть(1); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() //************ Закрытие печатной формы по кнопке "Esc" ************************* Процедура ПриПолученииКоманды(Команда) Экспорт Перем ТекФорма; глСервис = СоздатьОбъект("Сервис"); Если (Команда = 98848) Тогда Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда ФСО = 0; ТекФорма.Показать( , , -1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриПолученииКоманды FomEx v 2.0.5.108 |
|||
43
vcv
01.07.14
✎
10:52
|
Попробуйте теперь в этом журнале открыть, например, окно выбора периода (штатное) и нажать Esc.
|
|||
44
Ёпрст
01.07.14
✎
10:53
|
(41)есть ограничение - не больше 40 хоткеев в одной форме.
|
|||
45
Масянька
01.07.14
✎
10:55
|
(43) Закрыл усе... Зараза...
|
|||
46
Ёпрст
01.07.14
✎
10:57
|
В ПриПолученииКоманды не рабочий код + не ясно, нафига всё это там надо, когда Таблица и так всегда по Esc сама закрывается всегда, штатно
|
|||
47
Масянька
01.07.14
✎
10:59
|
(46) Да не закрывается открытая печ. форма по ESC. Не закрывается...
|
|||
48
vcv
01.07.14
✎
10:59
|
(46) Где? Первый раз слышу, что бы таблицы штатно закрывались по Esc.
|
|||
49
vcv
01.07.14
✎
11:00
|
Похоже у Ёпрст 1С версии 7.8.3 :)
|
|||
50
Масянька
01.07.14
✎
11:02
|
(49) Пусть делится :)
|
|||
51
Масянька
01.07.14
✎
11:03
|
+(47) Грабли...
А кто-нибудь знает команды для журналов? |
|||
52
Ёпрст
01.07.14
✎
11:04
|
не туда посмотрел, в активный контекст возвращается сам контекст в параметры функции, тогда да, будет работать
:) |
|||
53
Ёпрст
01.07.14
✎
11:05
|
всё равно, не проще так то ?
Процедура ПриОтжатииКнопкиКлавиатуры(Конт,Код,Альт,Шифт,Контрл,Символ,ФСО) Перем Табличка; Если Код = 27 Тогда Если Сервис.АктивныйКонтекст (Табличка) = 1 Тогда Если (ТипЗначенияСтр (Табличка) = "Таблица") Тогда ФСО=0; Табличка.Показать(,,-1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
54
Ёпрст
01.07.14
✎
11:05
|
нафига тебе приПолученииКоманды ?
|
|||
55
Ёпрст
01.07.14
✎
11:05
|
менюшку ловить ?
|
|||
56
Масянька
01.07.14
✎
11:06
|
(54) попробуй в открытой печ. форме октрыть предпросмотр.
|
|||
57
Ёпрст
01.07.14
✎
11:07
|
да.. есть еще системные формы полного и доп журнала - у них нет "контекста" и его типа, если че..
|
|||
58
Масянька
01.07.14
✎
11:08
|
(57) Обойти - никак?
|
|||
59
Ёпрст
01.07.14
✎
11:09
|
(56) ты не хочешь, чтоб при предпросмотре, форма таблицы закрывалась.. логично
|
|||
60
Ёпрст
01.07.14
✎
11:09
|
(58) запретить их открытие разве что
|
|||
61
vcv
01.07.14
✎
11:09
|
(53) Такой код, на сколько помнится, косячит, когда жмёшь Esc при открытой системной форме. Например, параметров страницы.
|
|||
62
Ёпрст
01.07.14
✎
11:10
|
+60 точнее, нужно всего лишь в одном из общих журналов воткнуть галки - что он используется как полный и доп журнал
|
|||
63
Ёпрст
01.07.14
✎
11:11
|
чтоб всегда его форма открывалась
|
|||
64
Масянька
01.07.14
✎
11:16
|
(61) Не-а. Поэтому и код не окшерный (Ё ругается :( ).
|
|||
65
Масянька
01.07.14
✎
11:18
|
То есть (57) не обойти?
|
|||
66
Ёпрст
01.07.14
✎
11:18
|
(64) не-не, я затупил, снеговик съедает мозг, не обращай внимания, код рабочий
|
|||
67
Ёпрст
01.07.14
✎
11:19
|
(65) см (62)
|
|||
68
Масянька
01.07.14
✎
11:36
|
(67) Чего-то у меня не получается :(
|
|||
69
ivsher
01.07.14
✎
11:52
|
Название темы навеяло :) https://www.youtube.com/watch?v=j2fDEZOvVBc ,
"хочу окна мышкой открывать, и не смотря на советскую власть хочу чтобы на рабочем столе иконки были" |
|||
70
Масянька
01.07.14
✎
12:38
|
Извините, но я еще спрошу.
А в телепате нельзя переопределить кнопки? |
|||
71
Ёпрст
01.07.14
✎
12:48
|
(70) можно, только не в "телепате", а в примитивном скрипте к опенконфу
|
|||
72
Масянька
01.07.14
✎
12:49
|
(71) А кинь пример, пожалуйста.
|
|||
73
Масянька
01.07.14
✎
13:42
|
Чёт не получается у меня :)
Сделала файл - Keyboards.vbs, в нем написала следующее: function CtrlF()' Поиск Set wsh = CreateObject("wScript.Shell") wsh.SendKeys("^{F3}") end function Sub CtrlH() 'Поиск с заменой Set wsh = CreateObject("wScript.Shell") wsh.SendKeys("^+{F3}") End Sub Sub Esc() 'Закрытие Set wsh = CreateObject("wScript.Shell") wsh.SendKeys("^+{F4}") End Sub В конфигураторе - все вижу. А не работает... |
|||
74
Масянька
01.07.14
✎
17:12
|
Подскажите, пожалуйста, можно ли (если да, то как) сделать так, чтобы скрипты работали в режиме Предприятия?
|
|||
75
Масянька
01.07.14
✎
17:30
|
Не, никак (74)?
|
|||
76
acanta
01.07.14
✎
17:31
|
А это принципиально чтоб скриптами?
Имхо всегда такое работало: Процедура ПриОткрытии(Отказ) ЭтаФорма.Параметры.РежимВыбора = Истина; КонецПроцедуры |
|||
77
Масянька
01.07.14
✎
17:36
|
(76) Хочу кнопке Esc назначить комбинацию Ctrl + F4. В режиме Предприятия.
|
|||
78
acanta
01.07.14
✎
17:40
|
(77) в неуправляемых формах Параметры не нужны (ругается..)
ЭтаФорма.РежимВыбора = Истина и любая форма закроется по ESC |
|||
79
Масянька
01.07.14
✎
17:43
|
(78) В каждой форме писать надо?
|
|||
80
acanta
01.07.14
✎
17:43
|
(79) в каждой
|
|||
81
Масянька
01.07.14
✎
17:46
|
(80) Во-о-о-от. А хочется: один раз и для всех.
|
|||
82
acanta
01.07.14
✎
17:49
|
(81) а скрипты работают в режиме предприятия?
|
|||
83
Масянька
01.07.14
✎
17:50
|
(82) Я и спрашиваю. Да или нет?
|
|||
84
vcv
01.07.14
✎
19:02
|
(77)
Процедура ПриОтжатииКнопкиКлавиатуры(Конт,Код,Альт,Шифт,Контрл,Символ,ФСО) ... Сервис.ЭмулироватьКлавиатуру("^{F4}"); ... КонецПроцедуры |
|||
85
vcv
01.07.14
✎
19:09
|
(81) "Во-о-о-от. А хочется: один раз и для всех."
Не всегда благо то, что для всех. Вот сделаешь закрытие Таблиц по кнопке Esc. Для печатных форм документов самое то. А для отчетов очень спорно. За такое, как говорится, можно и канделябром по морде. Как будешь отличать таблицу отчета от таблицы печатной формы документа? |
|||
86
vcv
01.07.14
✎
19:12
|
+(85) Аналогично для журналов. Закрытие их по Esc спорный функционал. Например, пользователь в журнале пользуется инкрементальным поиском. Этот поиск в 7.7 временами сильно тупит, тормозит и не сразу прерывается по Esc. Пользователь раздраженно Esc-Esc-Esc. В конце концов у него прерывается поиск и, заодно, еще и пара журналов закрывается :)
|
|||
87
acanta
01.07.14
✎
21:50
|
(86) В 8ке по Esc ничего не прерывается.
|
|||
88
vcv
01.07.14
✎
22:43
|
(87) 8ка обсуждается в соседней теме.
|
|||
89
ADirks
02.07.14
✎
07:22
|
(83) есть куча всяких фиговин, которые перехватывают очередь клавиатуры, и модифицируют её. Например AutoHotKey
у меня используется в пофигураторе, чтобы раскладку поменьше переключать (всякие < > # $ | ~ и т.п.) скрипт выглядит так Ctrl_A = ^{SC01E} Ctrl_L = ^{SC026} Ctrl_Shift_Z = ^+{SC02C} WM_COMMAND := 0x111 #IfWinActive 1С:Предприятие ;ahk_class Afx:400000:0:0:0:c08df ;Ctrl-A - select all ;$^SC01E::SendMessage %WM_COMMAND%, 0xe12a, 0,, A ;======================================================================== ;Закрытие окна сообщение Ctrl+z (не всем нравится) ;$^SC02C::SendMessage %WM_COMMAND%, 0x1802c, 0,, A ;======================================================================== ;символ '<' по Ctrl-, $^SC033::Send < ;======================================================================== ;символ '>' по Ctrl-. $^SC034::Send > #IfWinActive Конфигуратор ;Ctrl-4 --> $ ^SC005::Send $ ;======================================================================== ;символ '[' по Alt-[ $!SC01A::Send [ ;символ ']' по Alt-] $!SC01B::Send ] ;символ '~' по Alt-~ $!SC029::Send ~ $!SC003::Send @ $!SC004::Send # $!SC005::Send $ $!SC02B::Send | У меня запускается при старте системы. Можно при старте 1С запускать, или ещё как. В твоём случае в скрипте д.б. строчка $SC001::Send ^+{F4} (001 - это скан-код Esc) |
|||
90
Масянька
02.07.14
✎
09:19
|
(89) Скажи, пожалуйста, куда вставить эту строчку и как запустить при старте.
|
|||
91
Масянька
02.07.14
✎
09:59
|
В глобальнике ПриНачалеРаботыСистемы добавила
// скрипт Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.Language = "vbscript"; Скрипт.AddCode(" |Function Esc() |Set wsh = CreateObject(""wScript.Shell"") |wsh.SendKeys(""^{F4}"") |MsgBox ""Hello, my macro!"" |end Function |"); Скрипт.Run("Esc"); Hello - выводится, а вот по Esc не закрывается... |
|||
92
Масянька
02.07.14
✎
10:09
|
Что не так-то?
|
|||
93
Ёпрст
02.07.14
✎
10:12
|
чем тебе (84) не нравится ?
|
|||
94
Масянька
02.07.14
✎
10:13
|
(93) Упс... Пропустила... Попробую. А со скриптом - что не так?
|
|||
95
Масянька
02.07.14
✎
10:19
|
Фигасе себе...
Процедура ПриОтжатииКнопкиКлавиатуры(мКонтекст, КодКлавиши, Альт, Шифт, Контрол, Символ, ФСО) Экспорт ФСО = 1; Если КодКлавиши = 27 Тогда глСервис = СоздатьОбъект("Сервис"); глСервис.ЭмулироватьКлавиатуру("^{F4}"); //Сообщить("актив - " + глСервис.АктивныйКонтекст (мКонтекст)); // Если глСервис.АктивныйКонтекст (мКонтекст) = 1 Тогда // Если (ТипЗначенияСтр(мКонтекст) = "ГрупповойКонтекст") Тогда // // РасшФормы = СоздатьОбъект("РасширениеФормы"); // РасшФормы.УстановитьФорму(мКонтекст.Форма); //Сообщить("тип - " + РасшФормы.ТипОбъекта()); // Если ((РасшФормы.ТипОбъекта() = "Журнал") или (РасшФормы.ТипОбъекта() = "Справочник")) Тогда // ФСО = 1; // мКонтекст.Форма.Закрыть(1); // КонецЕсли; // // КонецЕсли; // // КонецЕсли; КонецЕсли; КонецПроцедуры // ПриНажатииКнопкиКлавиатуры() Намертво повисла... Предупреждать надо. |
|||
96
Масянька
02.07.14
✎
10:23
|
А если открыть в журнале выбор периода - тоже самое - закрывает и выбор, и журнал.
|
|||
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) так и надо было делать - тупой копи-пасте..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |