Имя: Пароль:
1C
1С v8
Как прервать формирование отчета
0 sidalexsandr
 
12.08.16
23:15
Как прервать формирование отчета?
1 vicof
 
12.08.16
23:33
Кнопку питания компа нажми
2 sidalexsandr
 
12.08.16
23:38
(1) Только так ?
3 Klesk666
 
12.08.16
23:43
если выполняется запрос то никак, если например в цикле есть ОбработкаПрерыванияПользователя() то ctrl+break, еще вариант подключить отладку и там остановить (если выполняется на сервере то должна быть включена отладка на сервере)
4 youalex
 
12.08.16
23:49
если серверная база - убить процесс в СУБД (как вариант - перезагрузить сервер). Если файловая - убить процесс в диспетчере задач.
5 Franchiser
 
гуру
13.08.16
00:31
Делать отчет через фоновое задание и длительную операцию
6 youalex
 
13.08.16
00:51
(5) это чит. Несчитово.
7 Провинциальный 1сник
 
13.08.16
07:29
(5) А как принудительно остановить фоновое задание? (если клиенту стало пофиг на результат, а сервер нагружать бессмысленной работой не хочется?
8 Franchiser
 
гуру
13.08.16
07:44
(7) см в типовой: обработка ожидания, прерывание по esc
9 Провинциальный 1сник
 
13.08.16
19:23
(8) Вкратце методику можно?
10 Franchiser
 
гуру
13.08.16
22:14
При формировании отчета запускается типовая форма длительной операции, через обработчик ожидание дергается состояние фонового задание, по кнопке esc выскакивает предложение завршить формирование, и при опросе фонового задания выпрлнится его завершение
11 sidalexsandr
 
13.08.16
22:31
(10) По кнопке Esc не прерывается.
12 Franchiser
 
гуру
13.08.16
23:28
(11) твой отчет может и не прерывается, нужно при написании отчетов использовать технологию заложенную в бсп
13 Franchiser
 
гуру
13.08.16
23:30
У тебя толстый или тонкий коиент? Внешний или  внутренний отчет? В зависимости от этого по разному нужно писать отчет
14 Провинциальный 1сник
 
14.08.16
06:49
"и при опросе фонового задания выпрлнится его завершение"
А как это конкретно происходит на уровне платформы? Есть метод "ПрерватьФоновоеЗадание" или типа такого?
15 Franchiser
 
гуру
14.08.16
15:15
(14) Задание.Отменить();

ФоновоеЗадание (BackgroundJob)
Отменить (Cancel)
Синтаксис:

Отменить()
Описание:

Отменяет задание. Задание может отменить только администратор или пользователь, запустивший задание.

Доступность:

Сервер, толстый клиент, внешнее соединение.
16 Franchiser
 
гуру
14.08.16
15:17
(14) если посмотришь общую форму "ДлительнаяОперация", там есть кнопка "Отменить"
17 Franchiser
 
гуру
14.08.16
15:18
(14) по этой кнопке выполняется закрытие формы, код по завершению задания размещен в обработчике ПриЗакрытии()
18 Провинциальный 1сник
 
14.08.16
19:03
(15) И оно отменится в любом случае? А если в нём работает длительный тяжелый запрос - отменится сразу или платформа будет ждать, когда запрос выполнится?
19 Franchiser
 
гуру
14.08.16
20:45
(18) ждать не будет, отменит сразу
20 Jija Grenkov
 
14.08.16
20:48
(19) Сильно сомневаюсь, что отменит длительный запрос.
21 Cyberhawk
 
14.08.16
20:54
(19) Ошибаешься. Проверка отмены выполняется только после каждой строчки кода исполняемого языка. Ты даже на цикле в одну строчку проверь (пусть фоновое, например, каждую секунду пишет в файл кол-во проходов цикла)
22 Franchiser
 
гуру
14.08.16
21:33
(21) не проверял, отменит сразу, но завершит не сразу)
Через кластер серверов тоже ведь не сразу завершается
а почему такие вопросы?
тема про то как прервать выполнение отчета, визуально будет выглядеть что задание прервано, как физически платформа завершит запущенное задание - другой вопрос.
23 Провинциальный 1сник
 
14.08.16
22:14
(22) Ага визуально отменено, а сервер грузится. Такой хоккей нам не нужен.
24 Franchiser
 
гуру
14.08.16
22:35
(21) (23) смысл фоновых заданий в том, что можно выполнять, формирование отчета в нескольких потоках.
Это может потребоваться для повышения производительности формирования обработки/отчета и как бонус можно завершать эти потоки. Так вот по-моему мнению, если мы из одного потока даем отмену на выполнения задания, в котором код выполняется не приостанавливаясь ни на секунду не зависимо от того что выполняется в других потоках,  то утверждение (21) что проверить на цикле, в котором фоновое что-то пишет в файл не может быть убедительным, т.к. выполнения кода в 2-х разных потоках никак не связано. Через какое реально времени произойдет завершение фонового задание возможно знаю разработчики, но с написанным кодом в 1С не думаю что это вообще как-то связано. Максимум это м.б. связано с ожиданием каким-либо от sql-сервера. Чтобы проверить что быдет с тяжелым запросом после отмены задания напишите тяжелый запрос с использованием декартового произведения чтобы подвесить сервер и посмотрите когда реально произойдет отмена.