|
v7: Закрытие печатной формы по кнопке "Esc" ПОБЕДА! | ☑ | ||
---|---|---|---|---|
0
varelchik
22.11.13
✎
16:01
|
Кому будет интересно.
Таки поборол падение 1С когда при печати Таблицы Жмут ESC для закрытия диалога печати или просмотра или настроек параметров страницы. Для этого используем RWidjets.dll и formex.dll. 1. ГМ добавляем Переменную БлокироватьЭскейп. 2. Создаем в ГМ процедуру Процедура ПриПолученииКоманды(Команда,Флаг) Экспорт //Сообщить(Команда); Если Команда=32805 Тогда Ответ=Вопрос("Запрещено блокировать сеанс! |Выйти их системы?","Да+Нет"); Флаг=1; Если Ответ="Да" Тогда глВыходВопрос=1; ЗавершитьРаботуСистемы(0); КонецЕсли; ИначеЕсли Команда=57604 Тогда Конт=1; ОткрытьФормуМодально("Обработка.СохранениеТаблицы",Конт); Если Конт=1 Тогда Флаг=1; КонецЕсли; ИначеЕсли Команда=33899 Тогда Флаг=1; ОткрытьФорму("Обработка.АктивныеПользователи"); //ИначеЕсли Команда=32875 Тогда // Конт=1; // ОткрытьФормуМодально("Обработка.УстановкаВремени",Конт); // Если Конт=1 Тогда // Флаг=1; // КонецЕсли; ИначеЕсли Число(глКонвертировать)=1 Тогда Если Команда=57607 Тогда БлокироватьЭскейп=1; Конт=1; ОткрытьФормуМодально("Обработка.ПреобразованиеMXL",Конт); Если Конт=1 Тогда Флаг=1; КонецЕсли; КонецЕсли; ИначеЕсли (Команда=57605) ИЛИ (Команда=58112) Тогда БлокироватьЭскейп=1; КонецЕсли; КонецПроцедуры // ПриПолученииКоманды В нашем случае Команды будут: 57605 параметры страницы 57607 диалог печати 58112 просмотр и эту Процедура ПриНажатииКнопкиКлавиатуры(Конт,Код,Альт,Шифт,Контрл,Символ,ФСО) Перем Табличка; Если Код = 27 Тогда Если глСервис.АктивныйКонтекст (Табличка) = 1 Тогда Если (ТипЗначенияСтр (Табличка) = "Таблица") Тогда Если БлокироватьЭскейп=1 Тогда БлокироватьЭскейп=0; ФСО=1; Возврат; КонецЕсли; ФСО=0; Табличка.Показать(,,-1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Вот и все. Эскейп работает как надо и 1С не падает! |
|||
1
ДенисЧ
22.11.13
✎
16:02
|
И нафига это было нужно?
|
|||
2
Масянька
22.11.13
✎
16:02
|
Пошла пробовать....
(1) Ты просто не в теме :) |
|||
3
varelchik
22.11.13
✎
16:04
|
(1) А задалбывает мышкой закрывать или жать Ctrl+F4.
А если печатных форм открыто дофига? |
|||
4
varelchik
22.11.13
✎
16:05
|
(2) Ну чё?
Эт мене осинило 5 мин. назад в курилке. |
|||
5
Масянька
22.11.13
✎
16:07
|
(4) Подожди, так ты проверил или "просто осенило"?
|
|||
6
varelchik
22.11.13
✎
16:12
|
Если не проверил не кричал бы на весь форум!
|
|||
7
varelchik
22.11.13
✎
16:12
|
(4) И осенило и проверил.
|
|||
8
Масянька
22.11.13
✎
16:17
|
(7) А глКонвертировать - это чего?
|
|||
9
varelchik
22.11.13
✎
16:25
|
(8) Та это примочка Для печати через Excel.
Была ту та ветка по печати из 1С под 2008. Поищи мабуть найдешь. Тама описан алгоритм вызова вместо штатного Excel-ский диалог печати. |
|||
10
Масянька
22.11.13
✎
16:27
|
(9) Та тебя пока дождешься.... :)))
Я первую процедуру заремила (ПриПолученииКоманды). Вроде - работает :)))) Спасибо! |
|||
11
Масянька
22.11.13
✎
16:33
|
+(10) Да, работает....
Ну что же - будем запускать в "промышленную эксплуатацию" :))) PS А говорят, что курить вредно :)))) Еще раз - огромное спасибо! |
|||
12
varelchik
22.11.13
✎
16:34
|
(11) Всегда пжалста!
|
|||
13
varelchik
22.11.13
✎
16:59
|
(11) Очепатка вышла.
команда предпросмотра это 57609 а не 57605 |
|||
14
Масянька
22.11.13
✎
17:01
|
(13) А я уже знаю :)
Не переживай, я тебя подербаню, если что :))) Аська в личке твоя? |
|||
15
varelchik
22.11.13
✎
17:03
|
нуда
|
|||
16
varelchik
22.11.13
✎
17:04
|
57605 это правильно.
57609 это просмотр. а 58112 закрытие просмотра по кнопе закрыть в ней. |
|||
17
Масянька
22.11.13
✎
18:04
|
(16) А можно так или это "неправославно"?
Процедура ПриПолученииКоманды(Команда) Экспорт Перем ТекФорма; глСервис = СоздатьОбъект("Сервис"); Если (Команда = 98848) Тогда Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда Если (ТипЗначенияСтр (ТекФорма) = "Таблица") Тогда ФСО=0; ТекФорма.Показать(,,-1); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриПолученииКоманды |
|||
18
varelchik
22.11.13
✎
18:53
|
(17) а че это за команда?
|
|||
19
Масянька
22.11.13
✎
22:10
|
(18) Она вылезла, когда я в открытой меч. форме нажала Esc.
|
|||
20
Стрелок
22.11.13
✎
22:57
|
это в 7.7?
|
|||
21
serg-lom89
22.11.13
✎
23:08
|
а dll-ки просто бросить в каталог базы? или прописать загрузку их при началеРаботыСистемы()?
|
|||
22
Стрелок
23.11.13
✎
01:55
|
так я не понял = это что такое? что происходит если нажать esc? у меня ничего
|
|||
23
Klesk666
23.11.13
✎
02:26
|
(22) Цитата: Для этого используем RWidjets.dll и formex.dll.
|
|||
24
Klesk666
23.11.13
✎
02:27
|
(21) лучше в каталог программы
|
|||
25
Стрелок
23.11.13
✎
02:27
|
(23) я так понял эти две длл надо использовать чтобы небыло "сваливания"? у меня его и так нет. пытаюсь понять можут и мне такое надо. но не могу понять что не так?
|
|||
26
Злопчинский
23.11.13
✎
02:33
|
(22) да они там обкурились, наверное
. у себя: открыл печатную форму. нажал печать - вывалился штатный далог печати - нажал эскейп, диалог закрылся ничего не упало. нажал предпросмотр - открылся предпросмотр - нажал эскейп, диалог закрылся ничего не упало. нажал параметры страницы - вывалился штатный далог параметров страницы - нажал эскейп, диалог закрылся ничего не упало. забыл еще один вариант - полезу посмотрю, вот он: нажал предпросмотр - открылся предпросмотр - нажал печать - закрылся предпросмотр - открылся штатный диалог печати - нажал эскейп, диалог закрылся ничего не упало. что еще...? |
|||
27
Злопчинский
23.11.13
✎
02:34
|
формекс юзаю, рвиджетс не юзаю
|
|||
28
Злопчинский
23.11.13
✎
02:35
|
блин.. я уже не помню когда у меня 1Ска падала в обычном режтимек..? пофигуратор бывает рушится - непонимает кое-что в опенкофе при нажатии точки...
|
|||
29
Стрелок
23.11.13
✎
02:39
|
(28) есть такое - валится по точке иногда
|
|||
30
Злопчинский
23.11.13
✎
03:26
|
(29) причем по моим наблюдениям - перед этим долго думает, потом реагирует, потом валится.
причем как-то это с вязан с неоднозначностью контекста, к которому применяется точка |
|||
31
Стрелок
23.11.13
✎
03:27
|
чаще всего у меня валится на перечислениях почему то
|
|||
32
Zhuravlik
23.11.13
✎
05:10
|
(30) в глобальнике падает? Когда я себе пообновлял скрипты и плагины, стал вылетать только в ГМ...
|
|||
33
varelchik
23.11.13
✎
13:33
|
народ мы походу отклонились от темы.
вообще-то здесь разговор не опофигураторе. работает. все. |
|||
34
varelchik
23.11.13
✎
13:34
|
Масяня.
Стучись в аську пообщаемся. |
|||
35
vcv
23.11.13
✎
20:41
|
(26) Ты не в теме. Вот захочешь сделать, что бы печатные формы документов по ESC закрывались. Поймаешь FormEx, кинешь таблице Таб.Показать(,-1) (или как оно там). Работает вроде как.
Потом в этой печатной форме вызовешь, например, параметры страницы. Нажмёшь Esc. И вот где-то тут 1С и упадёт со страшной силой. |
|||
36
Злопчинский
23.11.13
✎
23:35
|
(35) возможно, не в тоеме..
. однако хорошо бы изъясняться внятно. дано, выполнено, имеем. . а то . "Поймаешь FormEx, кинешь таблице Таб.Показать(,-1) (или как оно там). Работает вроде как. Потом в этой печатной форме вызовешь, например, параметры страницы. Нажмёшь Esc. И вот где-то тут 1С и упадёт со страшной силой." - в какой "этой печатнйо форме вызовешь.."..???? - она уже (написано выше) по Таб(-1) закрылась... . где вызывать-то..? |
|||
37
Стрелок
23.11.13
✎
23:47
|
(35) они и так по esc у меня закрываются
|
|||
38
Злопчинский
24.11.13
✎
01:09
|
(37) полез проверять
|
|||
39
Злопчинский
24.11.13
✎
01:12
|
(37) ээээ... у меня не закрываются
. открыл документ заявка покупателя, сформировал печформу, закрыл документ, осталась печформа - по ескайпу не закрывается.. . также не закрывается если оставить открытой форму документа . что вообщем понятно. . непонятно как они у тебя закрываются .. штатно...? |
|||
40
Стрелок
24.11.13
✎
01:19
|
(39) переплутал ;) закрываются диалоги просмотра и параметров печати. печ.форма - не закрывается
|
|||
41
Злопчинский
24.11.13
✎
01:23
|
(40), ну, это я еще в (26) написал...
. хотя например с ходу представить для чего постоянно по ескайпу закрывать печформы надо - мну сложновато... |
|||
42
Стрелок
24.11.13
✎
01:35
|
(41) а передумали ;) а мышка отсутствует - ноут например
|
|||
43
vcv
24.11.13
✎
07:19
|
(36) Ладушки. Извиняюсь за невнятность и пытаюсь внятно изложить.
Возникла задача/хотелка закрывать печатные формы не по Alt-F4, а по ESC. Для удобства, что бы не жать комбинацию клавиш и не целиться мышкой в мелкий "крестик". В глобальнке перехватываем с помощью FormEx нажатие клавиш, проверяем, не является ли активный контекст таблицей, если является, скрываем её Таб.Показать(,,-1); Вот тут и возникает проблема в том, что модальные окра типа "Параметров печати" не имеют своего контекста, нажатие клавиш в них ловится, а активное окно как будто бы таблица. Получается, если мы из таблицы вызовет "Параметры печати" и нажмём ESC, закроется сама таблица и при закрытии "Парметров печати" 1С падает. |
|||
44
MSSQL
24.11.13
✎
08:51
|
Какой смысл вообще на клюшках сидеть, если для решения мелкой хотелки, из-за ущербности платформенного функционала, приходиться танцевать с бубном?
|
|||
45
vcv
24.11.13
✎
10:43
|
(44) У каждого инструмента своё применение. 1С8 хороша функционально, но требования к оборудованию в несколько раз выше. У меня на оборудовании, на котором нормально работает две сотни пользователей в 1С (терминал) банальная файловая 1С8 бухгалтерия с минимумом данных только запускается порядка минуты. А как она запускается на ноутах ревизоров, разъезжающих по удаленным подразделениям! А как при этом жрёт батарею! Понятно, что самосвал копает круче лопаты, но перекапывать им грядки в саду нафиг-нафиг.
|
|||
46
Злопчинский
25.11.13
✎
08:13
|
(430 а попытаться получить список открытых окон через виндявые примочки..?
|
|||
47
Масянька
25.11.13
✎
08:14
|
(34) Да стучалась я, стучалась.... Никто не открывает :(
Пардон, уходила на выходные :) И так, проверила на "Заявке" и "Реализации": печ. форма, предпросмотр, диалог печати - все поочереди закрывается по "Esc", не валится, панелька не теряется. Вроде работает... |
|||
48
ADirks
25.11.13
✎
08:46
|
(47) Отлично! Ты молодец!
|
|||
49
Масянька
25.11.13
✎
08:47
|
(48) Не правда!
Молодец - varelchik! |
|||
50
ADirks
25.11.13
✎
09:41
|
(49) не, ну он то по определению :)
|
|||
51
trad
25.11.13
✎
10:23
|
(0) а как тебе такой вариант?
Процедура ПриНажатииКнопкиКлавиатуры(Конт,Код,Альт,Шифт,Контрл,Символ,ФСО) Перем Табличка; Если Код = 27 Тогда Если глСервис.АктивныйКонтекст (Табличка) = 1 Тогда Если (ТипЗначенияСтр (Табличка) = "Таблица") Тогда wsh=СоздатьОбъект("WScript.Shell"); wsh.sendkeys("^+{F4}"); //глСервис.ЭмулироватьКлавиатуру("^+{F4}"); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
52
Масянька
25.11.13
✎
12:05
|
Извините, а что за "галочки" стоят у 2-ух постов?
|
|||
53
Масянька
25.11.13
✎
12:06
|
А я поняла :)
|
|||
54
varelchik
25.11.13
✎
13:40
|
(51) Вполне.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |