|
v7: Закрытие печатной формы по кнопке "Esc" | ☑ | ||
---|---|---|---|---|
0
Масянька
05.09.13
✎
14:34
|
День добрый!
Собственно, вопрос в теме :) Есть возможность реализовать? |
|||
1
ДенисЧ
05.09.13
✎
14:35
|
Делай таблицу на форме...
|
|||
2
Масянька
05.09.13
✎
14:37
|
(1) Сколько печатных форм (документы, отчеты)? Все лопатить - легче застрелиться :)
Может есть другие варианты? |
|||
3
Ёпрст
05.09.13
✎
14:38
|
ловить формексом, смотреть активный контекст, если че - закрывать
|
|||
4
Масянька
05.09.13
✎
14:39
|
(3) А как ловить?
|
|||
5
Ёпрст
05.09.13
✎
14:42
|
ПриНажатииКнопкиКлавиатуры + АктивныйКонтекст
|
|||
6
Масянька
05.09.13
✎
14:48
|
(5) Это в открытых печ. формах? То есть в процедуре, где формируется и показывается сама печ. форма?
|
|||
7
Ёпрст
05.09.13
✎
14:48
|
(6) нет.
В глобальничке прописать |
|||
8
Масянька
05.09.13
✎
14:54
|
(7) Понятно :(
А почему доки, например, закрываются? |
|||
9
Ёпрст
05.09.13
✎
14:59
|
Процедура ПриНажатииКнопкиКлавиатуры(Конт,Код,Альт,Шифт,Контрл,Символ,ФСО)
Перем Табличка; Если Код = 27 Тогда Сервис = СоздатьОбъект ("Сервис"); Если Сервис.АктивныйКонтекст (Табличка) = 1 Тогда Если (ТипЗначенияСтр (Табличка) = "Таблица") Тогда Табличка.Показать(,,-1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
10
Ёпрст
05.09.13
✎
14:59
|
(8) закрывается всё, что имеет контекст формы, Таблица/текст/прочий мусор, его не имеет .. вот и не закрывается
|
|||
11
Масянька
05.09.13
✎
15:00
|
(9) Спасибо!!!!!
|
|||
12
Масянька
05.09.13
✎
15:01
|
(10) Как обычно - огромное человеческое спасибо!!!!!!!!!!!!
|
|||
13
Масянька
05.09.13
✎
15:04
|
Упс!
Ё скажи, пожалуйста, почему так: открываю док-т, кликаю по кнопке "Печать" - открывается печ. форма, жму Esc - закрывается и сам печ. форма и док-т? |
|||
14
Масянька
05.09.13
✎
15:08
|
Я нашла!!!!! :)
ФСО = 0; |
|||
15
trad
05.09.13
✎
15:23
|
(10) формs списков имеют контекст, а в обычном режиме по эскепу не закрываются :(
|
|||
16
Ёпрст
05.09.13
✎
15:24
|
(14) только пихай это только сюда:
Если (ТипЗначенияСтр (Табличка) = "Таблица") Тогда фсо=0; Табличка.Показать(,,-1); |
|||
17
Масянька
05.09.13
✎
15:30
|
(16) Уже сама догадалась :) Правда, я хорошая ученица? :))))
|
|||
18
Ёпрст
05.09.13
✎
15:34
|
ага
|
|||
19
BalBess
06.09.13
✎
07:29
|
Можно и я спрошу, раз уж про контексты заговорили
Как мне узнать кто вызвал форму? Т.е. есть форма (обработка), она может вызываться из разных объектов, например из документов, отчетов, обработок В нее я могу передать контекст вызывающего объекта, а дальше что? Мне нужно получить например: "Документ.счет", или "Отчет.Продажи" или "Обработка.такая-то" |
|||
20
BalBess
06.09.13
✎
07:51
|
нарыл что-то.. в формексе
Процедура ПриОткрытии() ФормаРасш = СоздатьОбъект("РасширениеФормы"); ФормаРасш.УстановитьФорму(Форма.Параметр); Сообщить(ФормаРасш.ПолныйТипОбъекта()); КонецПроцедуры В принципе, то что мне надо, не думал что штатно такого нет |
|||
21
1Сергей
06.09.13
✎
07:55
|
||||
22
BalBess
06.09.13
✎
08:50
|
(21) спасибо, полезная функция
но ПолныйТипОбъекта() даже лучше (для меня), т.к. она возвращает и форму списка, например "Справочник.Номенклатура.ФормаСписка" |
|||
23
varelchik
06.09.13
✎
09:35
|
(22) Ну так это всем известно и давно не интересно.
В FormExt эти функции еще хрен знает с каких времен были. |
|||
24
vcv
06.09.13
✎
11:48
|
(16) Возникает только один недостаток - если вызвать печать или параметры страницы и нажать ESC, таблица закрывается, а модальные формы печати/параметров страницы остаются.
|
|||
25
varelchik
06.09.13
✎
13:34
|
(24) Мда.
Да и еще после закрытия окна диалога 1С вылет. |
|||
26
varelchik
06.09.13
✎
13:38
|
причем не просто остаються заварачивается 1С.
|
|||
27
Масянька
06.09.13
✎
13:39
|
(26) Упс! У меня вообще зависла 1С....
|
|||
28
varelchik
06.09.13
✎
14:07
|
отож.
Окуратнее надо с такими весчами. |
|||
29
Масянька
06.09.13
✎
14:39
|
А какой ТипЗначенияСтр (Табличка) если открыто, например, предварительный просмотр? Не могу поймать - виснет и все тут :(
|
|||
30
Масянька
06.09.13
✎
15:18
|
Та что - получается у таких весчей, как Педварительный просморт, Настройка печати - нет контекста?
|
|||
31
Ёпрст
06.09.13
✎
15:19
|
у них нет - это системные окошки
|
|||
32
Ёпрст
06.09.13
✎
15:20
|
тупо оборачиваешь код в попытку и усё.
|
|||
33
Масянька
06.09.13
✎
15:21
|
(32) Прости, но я не понял :( (чего куда завернуть?)
|
|||
34
Ёпрст
06.09.13
✎
15:21
|
проверку в принажатии кнопки
|
|||
35
Масянька
06.09.13
✎
15:24
|
Сделала так:
Процедура ПриНажатииКнопкиКлавиатуры(Конт, Код, Альт, Шифт, Контрл, Символ, ФСО) Перем Табличка; Если Код = 27 Тогда Сервис = СоздатьОбъект ("Сервис"); Если Сервис.АктивныйКонтекст (Табличка) = 1 Тогда Если (ТипЗначенияСтр (Табличка) = "Таблица") Тогда ФСо = 0; Попытка Табличка.Показать(,,-1); Исключение КонецПопытки; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Закрывает печ. форму (хорошо), форма док-та открыта (и хорошо), но висит окошко "Печать" :( |
|||
36
trad
06.09.13
✎
16:16
|
у задачи нет нормально решения потому как ПриНажатииКнопкиКлавиатуры висит на глобальном хуке.
Вот висело бы оно на очереди событий окна - не было бы проблем. |
|||
37
Масянька
06.09.13
✎
16:18
|
(36) А повесить - на очередь событий окна - сложно?
|
|||
38
trad
06.09.13
✎
17:34
|
мне ВК с таким функционалом неизвестны
и маловероятно что кто то будет писать |
|||
39
Torquader
06.09.13
✎
21:22
|
(37) Это уже не ВК называется а перевхатчик - грузишь в код 1С любую DLL, которая меняет оконную процедуру или вешает hook на процедуру извлечения события - и всё.
Вообще-то, задачу можно решить и без 1С - просто повесть глобальный обработчик на Esc, чтобы он ловил handle активного окна и слал ему WM_CLOSE - будет работать с любыми окнами. P.S. я так даже кнопку "Пуск" в системе закрывал. |
|||
40
vcv
07.09.13
✎
20:08
|
Если заменить
Табличка.Показать(,,-1); на Сервис.ЭмулироватьКлавиатуру("^{F4}"); то 1Ска, по крайней мере, не падает. Правда окна печати и параметров страницы перестают закрываться по ESC. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |