ОбработкаПрерыванияПользователя() не работает.

1. German_Tagil 43 20.06.23 13:23 Сейчас в теме
Запускаю на клиенте - ставил и до и после серверного вызова.
Может что-то дополнительно надо указать - все что было посмотрел.
Обработка формирует отчет производства за месяц - желательно иметь возможность прервать выполнение программы.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 20.06.23 13:32 Сейчас в теме
и до и после - без разницы! Прерывание пользователя работает только НаКленте
вот в цикле (На Клиенте) например вставили и этот цикл сможете прервать!
то что выполняется на Сервере - не прерывается!
user1619761; starik-2005; +2 Ответить
3. German_Tagil 43 20.06.23 13:38 Сейчас в теме
(2) Счас покажу

	Пока Не ТекДень = КонецВыборки Цикл 
				ОбработкаПрерыванияПользователя();
		текДата=ТекДень;
        	СоздатьНаСервере(ТекДень,общкол);

		ТекДень = ТекДень+86400;//Добавим 1 День
		текДата=ТекДень;
		СостояниеОбработки = Формат(ТекДень, "ДЛФ=D");
		инд=инд+окр(пар);
		Индикатор =  инд;
				ОбновитьОтображениеДанных();
			ОбработкаПрерыванияПользователя();
			
	конеццикла;	

Показать
4. user5300 1028 20.06.23 13:50 Сейчас в теме
(3)
СоздатьНаСервере(ТекДень,общкол);

Выполняется на сервере

Можно переделать на "Фоновое выполнение"
7. spacecraft 20.06.23 16:13 Сейчас в теме
(3) как вызывается этот код?
Для прерывания есть ограничения. Они описаны в СП:
Прерывания выполнения допускается если оно инициировано определенным интерактивным действием пользователя. К таким действиям относятся:
нажатие кнопки в форме;
выбор пункта меню или кнопки командной панели в форме;
выбор пункта меню или кнопки панели инструментов интерфейса;
действия инициируемые обработчиками событий "Выбор" элементов управления.
5. truba 20.06.23 14:48 Сейчас в теме
Если в терминале дело - там проблемы с передачей нажатых клавиш.
Но если поищешь по инету то увидишь что этой багофиче лет уже много и никаких подвижек с этой багофичей нет. У меня тоже не работает в нескольких местах, при этом работает в других местах и это на одном и том же клиенте, одном и том же железе, в одних и тех же контекстах.
я опустил руки.
6. German_Tagil 43 20.06.23 15:41 Сейчас в теме
(5) Вот и я думаю что делать.....
8. German_Tagil 43 26.06.23 06:51 Сейчас в теме
9. user5300 1028 26.06.23 08:15 Сейчас в теме
(8)
&НаКлиенте
Процедура Команда1(Команда)
    ПараметрыФоновогоЗадания = Новый Массив;
	ПараметрыФоновогоЗадания.Добавить(ТекущаяДата());	
	ФоновоеЗаданиеЗагрузкаДанных = ФоновыеЗадания.Выполнить("ОбщийМодульСервер.ВыполнитьФоново",ПараметрыФоновогоЗадания);
	ИдентификаторОбменДанных = ФоновоеЗаданиеЗагрузкаДанных.УникальныйИдентификатор;
	
	ПодключитьОбработчикОжидания("ПроверитьФоновыеЗадания",2,Истина);    // Так же можно вызвать форму Длительные операции

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



 &НаКлиенте                                                                                                            
Процедура ПроверитьФоновыеЗадания()			
	
	РезультатФЗ = ПроверитьФоновыеЗаданияНаСервере(ИдентификаторОбменДанных);
	Если РезультатФЗ.Выполнено Тогда   
		ПоказатьОповещениеПользователя("Успешно загружены цены на: " + Формат(ТекущаяДата(),"ДЛФ=DD"));  
	ИначеЕсли РезультатФЗ.Выполняется Тогда
		ПодключитьОбработчикОжидания("ПроверитьФоновыеЗадания",5,Истина);
		Возврат;	
	ИначеЕсли ЗначениеЗаполнено(РезультатФЗ.ТекстОшибки) Тогда
		Сообщить("Возникла ошибка при загрузке цен: " + РезультатФЗ.ТекстОшибки);
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьФоновыеЗаданияНаСервере(ИДЗадания)				
	
	/// Проверка статуса фонового задания  
	РезультатПроверкиФЗ = новый Структура;
	РезультатПроверкиФЗ.Вставить("Выполнено",Ложь);
	РезультатПроверкиФЗ.Вставить("Выполняется",Истина);
	РезультатПроверкиФЗ.Вставить("ТекстОшибки","");	
	
	ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИДЗадания);
	Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
		РезультатПроверкиФЗ.Выполнено 	= Истина;
		РезультатПроверкиФЗ.Выполняется = Ложь;	
	ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
		РезультатПроверкиФЗ.Выполняется = Ложь;	
		РезультатПроверкиФЗ.ТекстОшибки	= КраткоеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке); 
	ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
		РезультатПроверкиФЗ.Выполняется = Ложь;
	КонецЕсли;
	
	Возврат РезультатПроверкиФЗ;
	
КонецФункции

Показать
10. German_Tagil 43 26.06.23 08:53 Сейчас в теме +0.5 $m
(4) И куда мне воткнуть - СоздатьНаСервере(ТекДень,общкол);?
11. user5300 1028 26.06.23 08:55 Сейчас в теме
(10) в общий модуль
  ФоновоеЗаданиеЗагрузкаДанных = ФоновыеЗадания.Выполнить("ОбщийМодульСервер.СоздатьНаСервере",ПараметрыФоновогоЗадания);
    ИдентификаторОбменДанных = ФоновоеЗаданиеЗагрузкаДанных.УникальныйИдентификатор;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот