powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / ОбработкаПрерыванияПользователя() не работает
25 сообщений из 29, страница 1 из 2
ОбработкаПрерыванияПользователя() не работает
    #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
ОбработкаПрерыванияПользователя() не работает
    #37386581
rigus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Событие на форме надеюсь прописано?
...
Рейтинг: 0 / 0
ОбработкаПрерыванияПользователя() не работает
    #37386737
rigusСобытие на форме надеюсь прописано?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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



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

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

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


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

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


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

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


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

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

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

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

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

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

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


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

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

Не помогает :-(
...
Рейтинг: 0 / 0
ОбработкаПрерыванияПользователя() не работает
    #37395444
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как вы ее вызываете, эту обработку прерывания (сочетание клавиш)?
...
Рейтинг: 0 / 0
ОбработкаПрерыванияПользователя() не работает
    #37395468
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XenoXА как вы ее вызываете, эту обработку прерывания (сочетание клавиш)?И кстати - попробуйте на кнопку любую повесить процедуру с циклом. Прерывает ее?
...
Рейтинг: 0 / 0
ОбработкаПрерыванияПользователя() не работает
    #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
ОбработкаПрерыванияПользователя() не работает
    #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
ОбработкаПрерыванияПользователя() не работает
    #37397345
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А выгрузить() у вас НаСервере или НаКлиенте?
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / [игнор отключен] [закрыт для гостей] / ОбработкаПрерыванияПользователя() не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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