Имя: Пароль:
1C
1C 7.7
v7: При закрытии печатной формы
0 Масянька
 
02.06.16
16:27
День добрый!
Вопрос: как при закрытии печатной формы внешней обработки выполнить некоторые действия?
Спасибо.
1 Волшебник
 
модератор
02.06.16
16:28
Сделай для печатной формы экранную и отрабатывай событие "ПрмЗакрытии"
2 Масянька
 
02.06.16
16:28
(1) А для печатной - никак?
3 ДенисЧ
 
02.06.16
16:48
Это не нужно. Поэтому этого нет
4 пипец
 
02.06.16
16:53
(2) штатно - способов нет
5 Ёпрст
 
гуру
02.06.16
16:56
(4) есть
6 ДенисЧ
 
02.06.16
16:57
(5) Прямо-таки штатно? Без ВК?
7 Масянька
 
02.06.16
17:00
(5) Подскажи, пожалуйста.
8 Ёпрст
 
гуру
02.06.16
17:03
(6) fuf
9 Ёпрст
 
гуру
02.06.16
17:08
Тупо проверяешь типзначения(таб) на равенство 100 и усё.
10 Масянька
 
02.06.16
17:09
(9) Где проверять-то?
11 Ёпрст
 
гуру
02.06.16
17:10
(10) там, где действия нужны
12 Масянька
 
02.06.16
17:13
(11) При формировании печ. формы происходит проверка и может быть выведена инфа в окно сообщений (а может и не выводиться - по условиям проверки). И хочу, чтобы при закрытии печ. формы закрывалось окно сообщений. Именно, при закрытии печ. формы. А не формы обработки.
Где?
13 Масянька
 
02.06.16
17:14
+(12) Блин... Где проверять-то? Как поймать закрытие печ. формы?
14 Ёпрст
 
гуру
02.06.16
17:15
(12) ну запусти обработку ожидания у формы, в ней и проверяй, если тип значения не равен 100 - таблица закрыта, я не помню, работает ли типзначения для таблицы, ежели нет, проверяй на областьтаблицы
15 Ёпрст
 
гуру
02.06.16
17:16
делов то..
16 Масянька
 
02.06.16
17:18
(14) Про обработку ожидания - не понял...
ТипЗначения для таблицы - работает.
17 Ёпрст
 
гуру
02.06.16
17:19
У каждй формы можно штатно запустить обработку ожидания
18 Ёпрст
 
гуру
02.06.16
17:20
а можно и в формуле текста на форме ловить
19 ДенисЧ
 
02.06.16
17:21
Сделал обработку, она сформировала ПФ, форму закрыли, Пф висит....
Где ловить? )
20 Масянька
 
02.06.16
17:21
(17) Кинь примерчик. Пожалуйста.
21 Ёпрст
 
гуру
02.06.16
17:42
22 Ёпрст
 
гуру
02.06.16
17:43
(19) ну как маленький, лови в глобальнике. Повесь глобальную обработку ожидания, жалко что ле ?
:)
23 Масянька
 
02.06.16
17:45
(21) Блин... Даже не знаю, чего сказать...
Чего ругаться сразу-то?
24 Ёпрст
 
гуру
02.06.16
17:58
(23) не подходит ?
25 Масянька
 
02.06.16
18:02
(24) Не арбайтен почему-то...

Процедура ПроверкаФормы()

    Если (ТипЗначенияСтр(Таб) <> "Таблица") Тогда
        wshShell.appActivate("1С:Предприятие");
        wshShell.sendKeys("^+(z)");
        wshShell.sendKeys("^+(я)");    
        Форма.ОбработкаОжидания("ПроверкаФормы",0);
    КонецЕсли;
КонецПроцедуры // ПроверкаФормы

В ПриОткрытии -     Форма.ОбработкаОжидания("ПроверкаФормы",1)
26 Ёпрст
 
гуру
02.06.16
18:07
(25) ну, у тя же написана ерунда..
ТипЗначенияСтр(Таб) всегда будет Таблица.
27 Масянька
 
02.06.16
18:33
(26) Вот так - арбайтен.

Процедура ПроверкаФормы()

    Перем ТекФорма;

    Если ((глСервис.АктивныйКонтекст (ТекФорма) = 1) и (ТипЗначенияСтр(ТекФорма) <> "Таблица")) Тогда
        wshShell.appActivate("1С:Предприятие");
        wshShell.sendKeys("^+(z)");
        wshShell.sendKeys("^+(я)");    
    КонецЕсли;
    
КонецПроцедуры // ПроверкаФормы


Вельми понеже… весьма вами благодарен! :))))
28 Злопчинский
 
02.06.16
19:02
(19)  форму закрыл - убери бяку закрой и печформу автоматом
29 Злопчинский
 
02.06.16
19:03
(27)  сомнительно
Сделай активным окно печформы
30 Масянька
 
03.06.16
11:12
(26) Все равно фигня получается...
В обработке 2 кнопки - "Показать" и "Печать". По "Показать" - открывается печ. форма, а по "Печать" - открывается печ. форма, а форма обработки закрывается. И вот в жтом случае - не арбайтен.

В общем, я обошла так: в глобальнике есть ПриПолученииКоманды - закрытие печ. форм по Esc. Туда и засунула wScript.
Вроде все нормально арбайтен.
31 Ёпрст
 
гуру
03.06.16
11:17
(30) в (21) нормальный способ определения таблицы. Нафига тебе ТипЗначенияСтр(ТекФорма) - хз
32 Масянька
 
03.06.16
11:21
(31) Не фига. В твоем примере - если форма закрыта, то при закрытии таблицы тоже не отрабатывает.
33 Ёпрст
 
гуру
03.06.16
11:23
(32) ясен пень.
смотря, где тебе ловить надо - там и пихай мой код.
Я ж тебе , точнее бородачу писал - если нет формы - лови в глобальнике.
И.. речь не об этом, речь про правильное определение закрытой таблицы.
34 Масянька
 
03.06.16
11:32
(33) Ясному пню - огромное спасибо! :)
35 пипец
 
03.06.16
13:21
хмм интересный метод - однако затратный )))
36 Масянька
 
03.06.16
13:23
(35) Я тя умоляю...
В глобальнике одна процедура около 10 строчек.
37 пипец
 
03.06.16
13:30
(36) как работает обработка ожидания я в курсе ))) я про отслеживание состояния таблиц )))
ЗЫ вопрос на засыпку - а если печатается сразу 15-ть таблиц ))) в цикле - что тогдой )))
38 Масянька
 
03.06.16
13:32
(37) 15 лень проверять. Открыла 3 печ. формы из одного док-та - по Esc закрывается одна.
39 Злопчинский
 
03.06.16
17:03
(38) какбэ логично. ты же все печформы открываешь через одну и ту же "таб". последняя - живая, остальные - связь с контекстом формы потеряли..
???
40 Ёпрст
 
гуру
03.06.16
17:04
(39) это не проблема. Храни глобальный список открытых таблиц, при их закрытии - удаляй. Делов то
41 Злопчинский
 
03.06.16
17:06
(40) муторно.
42 Масянька
 
03.06.16
17:06
(39) Не понял...
открыто 3 печ. формы. Текущая закрывается по Esc. Одну закрыл - следующая стала текущей, закрываешь...
43 Злопчинский
 
03.06.16
23:34
(42) давай демо-пример?
из обработки открываешь три РАЗНЫЕ таблицы (таб1, таб2, таб3) или три раза таблицу через "таб"?

сами таблицы по ескейпу не закрываются...
при закрытии обработки по ескейпу - можно отлавить и закрыть через "таб" - одну таблицу, последнююю
???
44 Chameleon1980
 
04.06.16
18:40
ну кэш таблиц
45 Масянька
 
06.06.16
10:56
(43) Вот ты Достоевский :)
В глобальник:
Процедура ПриПолученииКоманды(Команда) Экспорт
    
    Перем ТекФорма;
    
    глСервис = СоздатьОбъект("Сервис");
    wshShell = СоздатьОбъект("wScript.shell");

    Если (Команда = 98848) Тогда
        Если глСервис.АктивныйКонтекст (ТекФорма) = 1 Тогда
            Если (ТипЗначенияСтр(ТекФорма) = "Таблица") Тогда
               ФСО = 0;
               ТекФорма.Показать( , , -1);
               // закрываем окно сообщений
               wshShell.appActivate("1С:Предприятие");
               wshShell.sendKeys("^+(z)");
               wshShell.sendKeys("^+(я)");    
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры    // ПриПолученииКоманды

Всё.
wshShell - это для окна сообщений, заремь. Остальное - закрытие печ. по Esc.
Проверяй.
46 Злопчинский
 
06.06.16
11:34
(45) спасибо, я как-нибудь сам Толстой. И проверять не буду, ибо лабуда. как ты таким кодом отловишь печформы, относящиеся к ДАННОЙ закрываемой форме обработки/документа?
47 Масянька
 
06.06.16
11:36
(46) А какая разница - к какой форме относится печ. форма?
Мне - фиолетово. Мне нужно закрыть печ. форму по Esc.
Если тебе важно - ищи пути.
48 Злопчинский
 
06.06.16
11:49
(47) то есть манагер у тебя сформировал из документа на экран три варианта счета, внизу болтается печформа ведомость по контрагентам, печформа отчет по остаткам с мегавымороченным МФ, по эскейпу хреняк закрываем счета - вместе сними закрывается все.. спасибо. речь изначально шала - как закрыть по ескейпу печформы относящиеся к форме обработки. а не все печформы открытые на экране в любое время. так что ваш код - в трубу. вас - на курсы логки и повышения квалификации.
49 Масянька
 
06.06.16
11:54
(48) Товарищ! Вы слишком много на себя берете. Смотрите - не надорвитесь.

Закрывается текущая печ. форма. Советую внимательно читать, а не дуть в трубу. И курсы повышения квалификации Вам не помогут.

Чего ты завелся?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший