Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / ОбработкаПрерыванияПользователя() не работает / 25 сообщений из 29, страница 1 из 2
09.08.2011, 10:29
    #37386454
ОбработкаПрерыванияПользователя() не работает
1с82
Не прерывается работа такой обработки.

Обработка запускается автосатартом
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Отказ = истина;

Так же не обновляется строка состояния если окно 1с свернуть/развернуть или переключиться на него после.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Выполнено= 0 ;
	Пока СтрокаРез.Следующий() Цикл
		
			ОбработкаПрерыванияПользователя();
			
			Выполнено=Выполнено+ 1 ;
			Состояние("Осталось " + Формат(( 1 -(Выполнено/ВсегоСтрок))* 100 , "ЧЦ=10; ЧДЦ=1") + "%");
			
	    Попытка
			
			АДОДБКоннект.Execute("Insert INTO " + ТаблицаSQL + " values ("
										+ "'" + СтрокаРез.ВидДокумента + "',"
										+ "'" + СтрокаРез.ДатаПроводки + "',"
										+ "" + Формат(СтрокаРез.Сумма,"ЧГ=0; ЧРД='.'; ЦДЧ=2; ЧН=0") + ","
										+ "" + Формат(СтрокаРез.СуммаУпр,"ЧГ=0; ЧРД='.'; ЦДЧ=2; ЧН=0") + ","
										+ "'" + СтрокаРез.Номер + "',"
										+ "'" + СтрокаРез.КонтрагентКод + "',"
										+ "'" + СтрокаРез.ОрганизацияКод + "',"
										+ "'" + СтрокаРез.ВидОперации + "',"
										+ "'" + СтрокаРез.СтатьяДвиженияКод + "',"
										+ "'" + СокрП(СтрЗаменить(СтрЗаменить(СтрокаРез.Назначение,"'","`"),Символы.ПС," ")) + "')"
			);
			
			
		Исключение 
			Сообщить("Ошибка вставки данных в SQL: " + ОписаниеОшибки());
			АДОДБКоннект.Execute("Commit");
			АДОДБКоннект.Execute("set implicit_transactions on");
			АДОДБКоннект.Close();
			ОшибкаSQL=ТаблицаSQL;
			ВызватьИсключение;
		КонецПопытки; 
		
	КонецЦикла;
...
Рейтинг: 0 / 0
09.08.2011, 11:22
    #37386581
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Событие на форме надеюсь прописано?
...
Рейтинг: 0 / 0
09.08.2011, 12:14
    #37386737
ОбработкаПрерыванияПользователя() не работает
rigusСобытие на форме надеюсь прописано?

О каком событии идет речь?
В событии ПередОткрытием вызов ПередОткрытием
...
Рейтинг: 0 / 0
09.08.2011, 19:22
    #37387843
Sokruto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Прерывания выполнения допускается если оно инициировано определенным интерактивным действием пользователя. К таким действиям относятся:
нажатие кнопки в форме;
выбор пункта меню или кнопки командной панели в форме;
выбор пункта меню или кнопки панели инструментов интерфейса;
действия инициируемые обработчиками событий "Выбор" элементов управления.
...
Рейтинг: 0 / 0
10.08.2011, 08:56
    #37388282
ОбработкаПрерыванияПользователя() не работает
SokrutoПрерывания выполнения допускается если оно инициировано определенным интерактивным действием пользователя. К таким действиям относятся:
нажатие кнопки в форме;
выбор пункта меню или кнопки командной панели в форме;
выбор пункта меню или кнопки панели инструментов интерфейса;
действия инициируемые обработчиками событий "Выбор" элементов управления.

Не понял :-)
Что, всё дело в том что форма "физически" не появляется на экране т.к используется событие ПередОткрытием?
...
Рейтинг: 0 / 0
10.08.2011, 09:00
    #37388289
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Дмирий РомановскийЧто, всё дело в том что форма "физически" не появляется на экране т.к используется событие ПередОткрытием?

Именно так. ОбработкаПрерывания работает только в работающей форме, и больше нигде.
...
Рейтинг: 0 / 0
10.08.2011, 12:42
    #37388854
ОбработкаПрерыванияПользователя() не работает
pailДмирий РомановскийЧто, всё дело в том что форма "физически" не появляется на экране т.к используется событие ПередОткрытием?

Именно так. ОбработкаПрерывания работает только в работающей форме, и больше нигде.

Ясно.
Но как мне тогда совместить "приятное с полезным"?
Надо стартовать процедуру формы автоматически и иметь возможность вызвать прерывание пользователя?
...
Рейтинг: 0 / 0
10.08.2011, 12:58
    #37388899
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
В ПриОткрытии
Подключите обработчик ожидания с задержкой 1 секунда, который и вызовет вашу процедуру
...
Рейтинг: 0 / 0
10.08.2011, 13:04
    #37388918
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Дмирий РомановскийНадо стартовать процедуру формы автоматически и иметь возможность вызвать прерывание пользователя?
Нуу... можно, например, дать форме открыться, а потом пнуть ОбработчикОповещения этой формы через Оповестить()
...
Рейтинг: 0 / 0
10.08.2011, 13:39
    #37389032
ОбработкаПрерыванияПользователя() не работает
pailДмирий РомановскийНадо стартовать процедуру формы автоматически и иметь возможность вызвать прерывание пользователя?
Нуу... можно, например, дать форме открыться, а потом пнуть ОбработчикОповещения этой формы через Оповестить()

Подскажите как?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	ПодключитьОбработчикОповещения("ОбработчикОповещения");
КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
       Если ИмяСобытия = "Выгрузить" Тогда Выгрузить();
КонецПроцедуры

Процедура ПриОткрытии()
	   Оповестить("Выгрузить", ,ЭтаФорма.Объект.Ссылка);
КонецПроцедуры
...
Рейтинг: 0 / 0
10.08.2011, 13:47
    #37389058
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Дмирий Романовский,

не совсем так.

- это надо писать во внешнем контексте, там же, где производится открытие формы
Код: plaintext
1.
2.
3.
4.
 	Форма = ПолучитьФорму("ПутьКнужнойФорме");
	Форма.Открыть();
        Оповестить("Выгрузить");

...
Рейтинг: 0 / 0
10.08.2011, 13:52
    #37389073
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Сделайте проще

Процедура ПриОткрытии()
ПодключитьОбработчикОжидания("ОбработчикОжидания",1,Истина); //параметры мог перепутать посмотрите в каком порядке идут
КонецПроцедуры

Через секунду начнется ваш ОбработчикОжидания
...
Рейтинг: 0 / 0
10.08.2011, 14:45
    #37389234
ОбработкаПрерыванияПользователя() не работает
XenoXСделайте проще

Процедура ПриОткрытии()
ПодключитьОбработчикОжидания("ОбработчикОжидания",1,Истина); //параметры мог перепутать посмотрите в каком порядке идут
КонецПроцедуры

Через секунду начнется ваш ОбработчикОжидания

Нет, так обработка прерывания не работает.
...
Рейтинг: 0 / 0
10.08.2011, 14:47
    #37389238
ОбработкаПрерыванияПользователя() не работает
pailДмирий Романовский,

не совсем так.

- это надо писать во внешнем контексте, там же, где производится открытие формы
Код: plaintext
1.
2.
3.
4.
 	Форма = ПолучитьФорму("ПутьКнужнойФорме");
	Форма.Открыть();
        Оповестить("Выгрузить");



Не могу понять где такое надо делать?
...
Рейтинг: 0 / 0
10.08.2011, 15:48
    #37389452
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
У вас случаем не УФ?
...
Рейтинг: 0 / 0
10.08.2011, 16:08
    #37389529
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Дмирий РомановскийpailДмирий Романовский,

не совсем так.

- это надо писать во внешнем контексте, там же, где производится открытие формы
Код: plaintext
1.
2.
3.
4.
 	Форма = ПолучитьФорму("ПутьКнужнойФорме");
	Форма.Открыть();
        Оповестить("Выгрузить");



Не могу понять где такое надо делать?

именно там, где
Дмирий РомановскийОбработка запускается автосатартом
...
Рейтинг: 0 / 0
10.08.2011, 16:22
    #37389563
ОбработкаПрерыванияПользователя() не работает
XenoXУ вас случаем не УФ?

Форма обычная, не управляемая
...
Рейтинг: 0 / 0
10.08.2011, 16:33
    #37389599
ОбработкаПрерыванияПользователя() не работает
pailДмирий Романовскийпропущено...


Не могу понять где такое надо делать?

именно там, где
Дмирий РомановскийОбработка запускается автосатартом


Сделал так. Запускается без открытия формы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	Отказ = Истина;
	Форма = ПолучитьФорму("Форма");
	Форма = ЭтаФорма;
	Форма.Открыть();
	Оповестить("Выгрузить");


	//ПодключитьОбработчикОжидания("Выгрузить", 5 ,Истина); 
	//ПодключитьОбработчикОповещения("ОбработкаОповещения");

КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
       Если ИмяСобытия = "Выгрузить" Тогда Выгрузить() конецесли;
КонецПроцедуры
...
Рейтинг: 0 / 0
10.08.2011, 16:54
    #37389664
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
Дмирий РомановскийXenoXСделайте проще

Процедура ПриОткрытии()
ПодключитьОбработчикОжидания("ОбработчикОжидания",1,Истина); //параметры мог перепутать посмотрите в каком порядке идут
КонецПроцедуры

Через секунду начнется ваш ОбработчикОжидания

Нет, так обработка прерывания не работает.

Я наблюдаю в вашем коде, что вы обработчик ожидания вызывали в ПередОткрытием, а не ПриОткрытии, как советовал я
...
Рейтинг: 0 / 0
11.08.2011, 10:06
    #37390470
ОбработкаПрерыванияПользователя() не работает
XenoXДмирий Романовскийпропущено...


Нет, так обработка прерывания не работает.

Я наблюдаю в вашем коде, что вы обработчик ожидания вызывали в ПередОткрытием, а не ПриОткрытии, как советовал я

Не помогает :-(
...
Рейтинг: 0 / 0
15.08.2011, 11:57
    #37395444
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
А как вы ее вызываете, эту обработку прерывания (сочетание клавиш)?
...
Рейтинг: 0 / 0
15.08.2011, 12:07
    #37395468
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
XenoXА как вы ее вызываете, эту обработку прерывания (сочетание клавиш)?И кстати - попробуйте на кнопку любую повесить процедуру с циклом. Прерывает ее?
...
Рейтинг: 0 / 0
16.08.2011, 10:01
    #37397113
ОбработкаПрерыванияПользователя() не работает
Программист 1сXenoXА как вы ее вызываете, эту обработку прерывания (сочетание клавиш)?И кстати - попробуйте на кнопку любую повесить процедуру с циклом. Прерывает ее?

Так я так уже и сделал для отработки данных советов.

Ничего не прерывает.

Прерывает только когда произошел запуск по нажатию кнопки на форме.

Причем, в данной ситуации форма активна и доступна, но прервывание не срабатывает.

Наверно 1С "считает" что раз пользователь не активировал форму нажатием мыши или клавиши то и прерывание ему ненадо.

Тогда как "вызвать" нажатие програмно?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Процедура ПриОткрытии()
	ПодключитьОбработчикОжидания("Выгрузить", 10 , Истина);
КонецПроцедуры




Процедура Выгрузить()
Если ВводДоступен() Тогда

	i= 0 ;
	ii= 250000 ;
	пока i<ii цикл
		обработкапрерыванияпользователя();
		i=i+ 1 ;
		состояние("всего " + i + " из " + ii);
	конеццикла;
конецесли;	
конецпроцедуры;	
...
Рейтинг: 0 / 0
16.08.2011, 10:40
    #37397178
ОбработкаПрерыванияПользователя() не работает
УРА, Заработало при такой "махинации"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
Процедура ПриОткрытии()
	Shell = Новый COMОбъект("WScript.Shell");
	Shell.SendKeys("^{ENTER}");
КонецПроцедуры


Процедура Выгрузить()

	i= 0 ;
	ii= 250000 ;
	пока i<ii цикл
		обработкапрерыванияпользователя();
		i=i+ 1 ;
		состояние("всего " + i + " из " + ii);
	конеццикла;
конецпроцедуры;	





//Shell.SendKeys("^(A)");
//BACKSPACE {BACKSPACE}, {BS} или {BKSP}
//BREAK {BREAK}
//CAPS LOCK {CAPSLOCK}
//DEL или DELETE {DELETE} или {DEL}
//СТРЕЛКА ВНИЗ {DOWN}
//END {END}
//ENTER {ENTER}или ~
//ESC {ESC}
//HELP {HELP}
//HOME {HOME}
//INS или INSERT {INSERT} или {INS}
//СТРЕЛКА ВЛЕВО {LEFT}
//NUM LOCK {NUMLOCK}
//PAGE DOWN {PGDN}
//PAGE UP {PGUP}
//PRINT SCREEN {PRTSC}
//СТРЕЛКА ВПРАВО {RIGHT}
//SCROLL LOCK {SCROLLLOCK}
//TAB {TAB}
//СТРЕЛКА ВВЕРХ {UP}
//F1 {F1}
//F2 {F2}
//F3 {F3}
//F4 {F4}
//F5 {F5}
//F6 {F6}
//F7 {F7}
//F8 {F8}
//F9 {F9}
//F10 {F10}
//F11 {F11}
//F12 {F12}
//F13 {F13}
//F14 {F14}
//F15 {F15}
//F16 {F16}

//Для описания сочетания клавиши с клавишами SHIFT, CTRL или ALT следует указать один из перечисленных ниже кодов перед кодом обычной клавиши:

//SHIFT +
//CTRL ^
//ALT %
...
Рейтинг: 0 / 0
16.08.2011, 11:51
    #37397345
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОбработкаПрерыванияПользователя() не работает
А выгрузить() у вас НаСервере или НаКлиенте?
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / ОбработкаПрерыванияПользователя() не работает / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]