Фоновое выполнение алгоритмов у пользователей без обработчика ожиданий #777110


#0 by ИС-2
При подборе номенклатуры, в режиме реального времени, выводятся остатки номенклатуры. Параллельно должен идти подбор похожих позиций. Его хочу ыполнить в фоновом режиме, чтобы не тормозить основную работу пользователей. ПодключитьОбработчикОжидания не подходит т.к это тормозит работу системы. Через вызвать исключение какое-то некрасивое решение и непонятно, где оно выйдет боком. Как можно определить, что фоновое задание завершилось и можно вывести результат расчета на экран?
#1 by DrZombi
И в какой момент ты это предлагаешь делать, без обработчика?
#2 by DmitrO
Обработчик ожидания не тормозит работу системы, работу системы тормозит то что в нем написано. :)
#3 by DmitrO
"Как можно определить, что фоновое задание завершилось.." И мы в очередной раз подходим к вопросу о том что платформа не умеет делать асинхронные вызовы к собственному серверу.
#4 by ИС-2
повесить бы какой-то обработчик. Пример, внешнее событие...
#5 by Jija Grenkov
По производительности передача результата через исключение должена быть лучшим вариантом. Из побочных явлений Будут сообщения в логах. На сколько я понимаю, обработчик ожидания не поможет получить данные без записи в БД. Ещё наверняка есть ВК которые помогут передать результат через память.
#6 by Jija Grenkov
хотя наверное все же можно передать данные через хранилище значений или повторно возвращающий результат общий модуль
#7 by Stepa86
Без обработчика ожидания непонятно как ты код будешь стартовать, который проверяет выполнение фонового задания. И с каких пор он тормозит? В типовых используется схема - создал пустое временное хранилище, запустил задание в фоне, передав ему УИД хранилища, сохранил ИД задания и УИД на форме, обработчиком ожидания проверяешь выполнение задания по ИД с увеличивающимся интервалом, типа каждая последующая проверка через 1.6*предИнтервал. Когда задание отработало, смотришь чо лежил в УИДе. Причем форма по отработке может быть отдельной, правда фокус она будет перехватывать иногда
#8 by hhhh
ну любой отчет возьми как пример. Там они все через фоновое задание работают. И все выводят на экран.
#9 by Jija Grenkov
там написано, что можно через исключение оповестить о завершении. Но не спорю, что в данном случае обработчик ожидания нужен как минимум, что бы не стартовать - это задание мгновенно при активации строки.
#10 by Jija Grenkov
но нужно еще выяснить версию платформы
#11 by Fragster
фоновое + обработчик ожидания на проверку. Жалко, что фоновые нельзя навесить на методы самой формы.
#12 by Fragster
на проверку завершения
#13 by Fragster
еще можно в фоне СКД формировать, а из результирующего документа доставать данные
#14 by Stepa86
Там это где? Не в курсе про передачу управления кодом на клиент через вызов исключения в фоновом задании. Да и вообще использование обработки исключений в логике не по назначению чревато ухудшением качества кода. А зачем похожие позиции рассчитывать? Может их отдельно считать и тупо хранить? Как в подсистеме "НоменклатураПродаваемаяСовместно" в УП и УТ11
#15 by EvgeniuXP
ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор).Состояние = СостояниеФоновогоЗадания.Завершено
#16 by EvgeniuXP
Не нравится обрботчик ожиданий - пиши в базу и от туда читай - если для тебя это лучше
#17 by Stepa86
а читать из базы когда?
#18 by EvgeniuXP
Но узнаешь всё равно через обработчик ;)
#19 by EvgeniuXP
при активизации, при изменении, при закрытим - всё дело рук программиста
#20 by Stepa86
Этими обработчиками можно и фоновое задание проверить. С тем же успехом можно кнопку "Нажми меня, вдруг там посчиталось" сделать
#21 by ИС-2
тормозит. Особенно если частота выполнения 1 секунда
#22 by Stepa86
а тормозит это сколько в секундах? У меня вот проверка выполнения фонового задания в обработчике ожидания - 0.008983сек. Это с учетом сбегать на сервер и дернуть менеджер фоновых заданий
#23 by Jija Grenkov
там - это в первом сообщении данного топика. Так учениям 1с слепо следовать == высокого перформанса не видать. Вы уверены, что не получится сохранить в бд заранее максимально подготовленные данные и уже нечего не считать, а простым запросом к 1 таблице вытянуть данные? Запрос можно запускать в обработчике ожидания через 1 секунду после активизации строки.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С