|
Фоновое выполнение алгоритмов у пользователей без обработчика ожиданий | ☑ | ||
---|---|---|---|---|
0
ИС-2
naïve
22.07.16
✎
09:31
|
При подборе номенклатуры, в режиме реального времени, выводятся остатки номенклатуры. Параллельно должен идти подбор похожих позиций. Его хочу ыполнить в фоновом режиме, чтобы не тормозить основную работу пользователей.
ПодключитьОбработчикОжидания не подходит т.к это тормозит работу системы. Через вызвать исключение какое-то некрасивое решение и непонятно, где оно выйдет боком. Как можно определить, что фоновое задание завершилось и можно вывести результат расчета на экран? |
|||
1
DrZombi
гуру
22.07.16
✎
09:33
|
(0) И в какой момент ты это предлагаешь делать, без обработчика?
|
|||
2
DmitrO
22.07.16
✎
09:38
|
Обработчик ожидания не тормозит работу системы, работу системы тормозит то что в нем написано. :)
|
|||
3
DmitrO
22.07.16
✎
09:40
|
"Как можно определить, что фоновое задание завершилось.."
И мы в очередной раз подходим к вопросу о том что платформа не умеет делать асинхронные вызовы к собственному серверу. |
|||
4
ИС-2
naïve
22.07.16
✎
09:46
|
(1) повесить бы какой-то обработчик. Пример, внешнее событие...
|
|||
5
Jija Grenkov
22.07.16
✎
09:49
|
По производительности передача результата через исключение должена быть лучшим вариантом. Из побочных явлений Будут сообщения в логах.
На сколько я понимаю, обработчик ожидания не поможет получить данные без записи в БД. Ещё наверняка есть ВК которые помогут передать результат через память. |
|||
6
Jija Grenkov
22.07.16
✎
11:00
|
хотя наверное все же можно передать данные через хранилище значений или повторно возвращающий результат общий модуль
|
|||
7
Stepa86
22.07.16
✎
11:10
|
Без обработчика ожидания непонятно как ты код будешь стартовать, который проверяет выполнение фонового задания. И с каких пор он тормозит?
В типовых используется схема - создал пустое временное хранилище, запустил задание в фоне, передав ему УИД хранилища, сохранил ИД задания и УИД на форме, обработчиком ожидания проверяешь выполнение задания по ИД с увеличивающимся интервалом, типа каждая последующая проверка через 1.6*предИнтервал. Когда задание отработало, смотришь чо лежил в УИДе. Причем форма по отработке может быть отдельной, правда фокус она будет перехватывать иногда |
|||
8
hhhh
22.07.16
✎
11:15
|
(4) ну любой отчет возьми как пример. Там они все через фоновое задание работают. И все выводят на экран.
|
|||
9
Jija Grenkov
22.07.16
✎
11:16
|
(7) там написано, что можно через исключение оповестить о завершении. Но не спорю, что в данном случае обработчик ожидания нужен как минимум, что бы не стартовать - это задание мгновенно при активации строки.
|
|||
10
Jija Grenkov
22.07.16
✎
11:17
|
но нужно еще выяснить версию платформы
|
|||
11
Fragster
гуру
22.07.16
✎
11:17
|
фоновое + обработчик ожидания на проверку. Жалко, что фоновые нельзя навесить на методы самой формы.
|
|||
12
Fragster
гуру
22.07.16
✎
11:18
|
на проверку завершения
|
|||
13
Fragster
гуру
22.07.16
✎
11:18
|
еще можно в фоне СКД формировать, а из результирующего документа доставать данные
|
|||
14
Stepa86
22.07.16
✎
11:21
|
(9) Там это где? Не в курсе про передачу управления кодом на клиент через вызов исключения в фоновом задании. Да и вообще использование обработки исключений в логике не по назначению чревато ухудшением качества кода.
(0) А зачем похожие позиции рассчитывать? Может их отдельно считать и тупо хранить? Как в подсистеме "НоменклатураПродаваемаяСовместно" в УП и УТ11 |
|||
15
EvgeniuXP
22.07.16
✎
11:26
|
ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор).Состояние = СостояниеФоновогоЗадания.Завершено
|
|||
16
EvgeniuXP
22.07.16
✎
11:27
|
Не нравится обрботчик ожиданий - пиши в базу и от туда читай - если для тебя это лучше
|
|||
17
Stepa86
22.07.16
✎
11:28
|
(16) а читать из базы когда?
|
|||
18
EvgeniuXP
22.07.16
✎
11:29
|
Но узнаешь всё равно через обработчик ;)
|
|||
19
EvgeniuXP
22.07.16
✎
11:30
|
(17) при активизации, при изменении, при закрытим - всё дело рук программиста
|
|||
20
Stepa86
22.07.16
✎
11:32
|
(19) Этими обработчиками можно и фоновое задание проверить. С тем же успехом можно кнопку "Нажми меня, вдруг там посчиталось" сделать
|
|||
21
ИС-2
naïve
22.07.16
✎
12:25
|
(2) тормозит. Особенно если частота выполнения 1 секунда
|
|||
22
Stepa86
22.07.16
✎
12:52
|
(21) а тормозит это сколько в секундах? У меня вот проверка выполнения фонового задания в обработчике ожидания - 0.008983сек. Это с учетом сбегать на сервер и дернуть менеджер фоновых заданий
|
|||
23
Jija Grenkov
22.07.16
✎
15:05
|
(14) там - это в первом сообщении данного топика. Так учениям 1с слепо следовать == высокого перформанса не видать.
(21) Вы уверены, что не получится сохранить в бд заранее максимально подготовленные данные и уже нечего не считать, а простым запросом к 1 таблице вытянуть данные? Запрос можно запускать в обработчике ожидания через 1 секунду после активизации строки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |