|
Не подскажите как грамотнее написать обработку | ☑ | ||
---|---|---|---|---|
0
Klesk666
21.04.16
✎
21:52
|
Знаю что частый вызов сервера, написал порционную обработку, но как то коряво вышло, не подскажите как правильно:
&НаСервере Процедура ОбработатьНаСервере(НачальноеЗначение,КонечноеЗначение) СтруктураПоиска=Новый Структура; СтруктураПоиска.Вставить("Выбран",Истина); ВыбранныеДляДействия=Объект.ТаблицаАдресов.НайтиСтроки(СтруктураПоиска); Для Сч=НачальноеЗначение по КонечноеЗначение Цикл ВыбранныеДляДействия[Сч-1].ТипСправочника="Обработано"; ВыбранныеДляДействия[Сч-1].Ссылка.ПолучитьОбъект(); КонецЦикла КонецПроцедуры &НаКлиенте Процедура Обработать(Команда) СтруктураПоиска=Новый Структура; СтруктураПоиска.Вставить("Выбран",Истина); ВыбранныеДляДействия=Объект.ТаблицаАдресов.НайтиСтроки(СтруктураПоиска); ОбщееКоличество=ВыбранныеДляДействия.Количество(); Если ОбщееКоличество=0 Тогда Возврат; КонецЕсли; Деление=100/ВыбранныеДляДействия.Количество(); РазмерПорции=Объект.РазмерПорции; НачальноеЗначение=1; КонечноеЗначение=МИН(РазмерПорции,ОбщееКоличество); ВремяНачала=ТекущаяДата(); Пока НачальноеЗначение<=ОбщееКоличество Цикл ОбработатьНаСервере(НачальноеЗначение,КонечноеЗначение); Состояние("Обработка...",НачальноеЗначение*Деление); НачальноеЗначение=КонечноеЗначение+1; КонечноеЗначение=МИН(КонечноеЗначение+РазмерПорции,ОбщееКоличество); КонецЦикла; Сообщение=Новый СообщениеПользователю; Сообщение.Текст="Время выполнения: "+Строка(ТекущаяДата()-ВремяНачала)+" сек."; Сообщение.Сообщить(); КонецПроцедуры |
|||
1
Cyberhawk
21.04.16
✎
22:04
|
Фоновое задание + писать прогресс в РС + с клиента периодически читать и отображать этот прогресс
|
|||
2
CepeLLlka
21.04.16
✎
22:06
|
А чё там? Обработка длится 2 часа что-ли?
|
|||
3
CepeLLlka
21.04.16
✎
22:06
|
Или соединение с сервером на низкой скорости?
|
|||
4
CepeLLlka
21.04.16
✎
22:08
|
(1)Хорошая идея кстати. Как-нибудь попробую использовать такое, если вдруг нужно будет кодить чё-нить такое громосткое
|
|||
5
Klesk666
21.04.16
✎
22:09
|
(2) перепроведение документов, и надо следить за процессом
|
|||
6
Shrek_yar
21.04.16
✎
22:10
|
(5) зачем тебе прогресс то, будешь его гипнотезировать?
|
|||
7
Shrek_yar
21.04.16
✎
22:10
|
(0)
Пока НачальноеЗначение<=ОбщееКоличество Цикл ЗАменить на цикл сч= По |
|||
8
CepeLLlka
21.04.16
✎
22:10
|
(5)Ну тогда попробуй, то что в (1).. Мне кажется интересно такое реализовать..
(6)Мдее.. Прогресс бар нужная вещь так-то.. Висит, не висит.. сколько ещё осталось и т.д.. |
|||
9
HEKPOH
21.04.16
✎
22:10
|
(6) оч увлекательное занятие и нужное
|
|||
10
Klesk666
21.04.16
✎
22:10
|
(6) может оно висит там уже
|
|||
11
Shrek_yar
21.04.16
✎
22:11
|
(8) ага, если 50 тыщ единиц, и ты так смотреть будешь.
|
|||
12
Shrek_yar
21.04.16
✎
22:13
|
Сервер тогда уже вызывай без контекста
|
|||
13
Drac0
21.04.16
✎
22:31
|
(8) (1) БСП на вас нет. Открыть последнюю не судьба? Там даже пример есть для фоновой обработки с прогрессом и получением сообщений пользователю.
(12) Фу, таким быть. |
|||
14
Shrek_yar
21.04.16
✎
22:36
|
(12)?? что вам не нравиться в СерверБезКонтекста
|
|||
15
CepeLLlka
21.04.16
✎
22:40
|
(13)Можно написать совсем по другому..
"Ребят, в БСП отлично решение есть, поглядите! Мне кажется это именно то, что вам нужно" |
|||
16
Zamestas
21.04.16
✎
22:48
|
(0) А запросом на сервере точно не собрать?
|
|||
17
Shrek_yar
21.04.16
✎
22:50
|
(15) )))))) Я когда обработывал справоник номенклатуры запускал 10 фоновых заданий, за неделю обработал
|
|||
18
mingw
21.04.16
✎
23:03
|
Если в конфе нет нужного функционала. И менять конфу нельзя. Только внешней обработкой удобно никак.
http://xn----1-bedvffifm4g.xn--p1ai/articles/как-ускорить-1с-многопоточность/ http://forum.infostart.ru/forum86/topic118582/ http://forum-1c.ru/index.php?topic=15951.0 Можно использовать ВК. Для передачи данных с сервера на клиент. Если клиент доступен с сервера. |
|||
19
Drac0
21.04.16
✎
23:06
|
(14) Если есть хотя бы гипотетическая вероятность, что кто-то запустит эту обработку под Веб-клиентом, то это будет граблями, т.к. большинстов браузеров просто начнут отваливать по тайм-ауту. И если Хром хотя бы предлагает подождать, то Сафари просто предложить грохнуть соединение. (15) Ути-пути, какие мы нежные :)
|
|||
20
Klesk666
22.04.16
✎
01:08
|
а чем объяснить что в файлов режиме, тоже прирост в скорости если порции больше?
|
|||
21
Fram
22.04.16
✎
01:26
|
(19) а в случае с контекстом как себя ведут браузеры?
|
|||
22
hhhh
22.04.16
✎
02:04
|
(20) количество порций тогда меньше, что непонятно?
|
|||
23
Klesk666
22.04.16
✎
02:41
|
(22) сервера то нет, все на одной машине
|
|||
24
hhhh
22.04.16
✎
03:26
|
(23) есть там сервер. Куда он по вашему делся? И насчет машины нет разницы, в клиент-серверном варианте тоже можно всё на одной машине запустить.
|
|||
25
Drac0
22.04.16
✎
09:16
|
(21) Аналогично. В Веб-приложении нельзя делать серверные вызовы дольше нескольких секунд.
|
|||
26
Cyberhawk
22.04.16
✎
09:26
|
(13) В какой типовой и в каком виде пример? Или на ИТС в документации? Подсистемы название хотя бы скажи ("Длительные операции"?).
P.S. А падение сеанса фонового задания логируется в базе? |
|||
27
Drac0
22.04.16
✎
11:50
|
(26) саму БСП смотри. Есть демо обработка в составе, где показываются для примера все возможности подсистемы ДлительныеОперации.
|
|||
28
Cyberhawk
22.04.16
✎
16:08
|
(27) Ага, посмотрел. Отличие в том, что прогресс хранится во временном хранилище, а не в базе, и только на время, пока это нужно на клиенте.
Для написания примочек к конфигурациям на базе БСП, а особенно к тем, что на замке, вариант оптимальный, ибо все удобства уже встроены и сделаны. Но если прогресс (и сопутствующие метаданные) нужно иметь возможность получить в других сеансах, то без своих метаданных и хранении результата в базе не обойтись (кажется). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |