![]() |
![]() |
![]() |
|
Как выводить прогресс на клиенте, если обработка идет на сервере? | ☑ | ||
---|---|---|---|---|
0
Picnky
05.02.19
✎
07:31
|
Собственно сабж. Обрабатываю список файлов на сервере, как вывести прогресс на клиенте, чтобы пользователь знал, что процесс идет, а не зависла программа?
Сначала вынес обработку массива файлов на клиент, но теперь выяснилось, что файлы идут в неправильном порядке, надо грузить имена их в таблицу значений, изменять, потом сортировать по измененному имени и по соответствию "измененное имя"-"имя"-"строка массива по имени" грузить соответствующий файл. Т.к. таблицы значений на клиенте недоступны, все застопорилось. |
|||
1
Провинциальный 1сник
05.02.19
✎
07:34
|
(0) Что мешает воспользоваться другими коллекциями, доступными и на клиенте и на сервере? Массив, список значений, структура?
|
|||
2
Picnky
05.02.19
✎
07:39
|
Наверное неумение с ними работать. Пытаюсь передавать через ТЗ на форме,
Обработка.ЗагрузкаДанныхХарвестеров.Форма.Форма.Форма(73)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы) ЗначениеВРеквизитФормы(ТЗ, "ТЗ"); по причине: Недопустимое значение параметра (параметр номер '2') Недопустимое значение параметра (параметр номер '2') Вот что выдает |
|||
3
Mankubus
05.02.19
✎
07:59
|
(2) посмотри в БСП подсистему ДлительныеОперации.
там через фоновые задания сделано |
|||
4
hhhh
05.02.19
✎
08:04
|
(2) не нужно там ЗначениеВРеквизитФормы. С ТЗ прекрасно можно работать и без этого.
|
|||
5
Cyberhawk
05.02.19
✎
08:07
|
1С на Арракисе?
|
|||
6
Cyberhawk
05.02.19
✎
08:18
|
На клиенте надо обработчиком ожидания периодически получать прогресс, а на сервере периодически его куда-нибудь складывать, откуда потом клиент сможет этот прогресс получить.
|
|||
7
Picnky
05.02.19
✎
11:35
|
{Обработка.ЗагрузкаДанныхХарвестеров.Форма.Форма.Форма(103,43)}: Ожидается выражение
ЗаданиеВФоне = ФоновыеЗадания.Выполнить(<<?>>«ЗаполнитьТаблицуФайловНаСервере»); |
|||
8
Picnky
05.02.19
✎
11:35
|
Пытаюсь переделать через фоновые задания, с периодическим опросом через сообщения. Вываливается куча таких ошибок
|
|||
9
Picnky
05.02.19
✎
11:37
|
{Обработка.ЗагрузкаДанныхХарвестеров.Форма.Форма.Форма(139,40)}: Ожидается выражение
ОтключитьОбработчикОжидания(<<?>>«ПроверитьСтатусЗадания»); (Проверка: Сервер) причем тут процедура наклиенте а проверка почему-то насервере |
|||
10
Вафель
05.02.19
✎
11:38
|
держи пример
http://catalog.mista.ru/public/943888/ |
|||
11
Picnky
05.02.19
✎
11:45
|
(10) да я с примера содрал все подчистую, а ругается чуть ли не на каждую строку
|
|||
12
hhhh
05.02.19
✎
12:03
|
(11) кавычки почему здесь?
|
|||
13
Cyberhawk
06.02.19
✎
07:55
|
(10) Так типового БСПшного кода чтоб взлетело силами БСП (по сравнению с 2-3 года назад) копейки уже - никаких ни обработчиков подключаемых уже не надо делать, ни реквизитов на форму добавлять. Формочка уже готовая, уведомения в правом нажнем углу уже готовые, сообщение прогресса одной строчкой делается, параметры нужные инициализируются и сам старт тоже не длиньше 5 строк. Красота.
|
|||
14
ДенисЧ
06.02.19
✎
09:07
|
Офф
"ЗагрузкаДанныхХарвестеров" Харконнен или Атридес? ))) |
|||
15
TormozIT
гуру
06.02.19
✎
09:35
|
(13) Через какое хранилище они передают прогресс?
- регистр - хранилищеНастроек - сообщения пользователю |
|||
16
Cyberhawk
06.02.19
✎
21:26
|
(14) Повторюша)
|
|||
17
palsergeich
06.02.19
✎
21:41
|
(15) Только что код глянул - Сообщения пользователю
|
|||
18
palsergeich
06.02.19
✎
21:43
|
||||
19
Cyberhawk
06.02.19
✎
21:45
|
(15) Ну дополню предыдущего оратора)
// Регистрирует информацию о ходе выполнения длительной операции. // В дальнейшем ее можно считать при помощи функции ДлительныеОперации.ПрочитатьПрогресс. // Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции // не следует сообщать прогресс более 100 раз. // // Параметры: // Процент - Число - Процент выполнения. // Текст - Строка - Информация о текущей операции. // ДополнительныеПараметры - Произвольный - Любая дополнительная информация, которую необходимо передать на клиент. // Значение должно быть простым (сериализуемым в XML строку). // Процедура СообщитьПрогресс(Знач Процент = Неопределено, Знач Текст = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт Если ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание() = Неопределено Тогда Возврат; КонецЕсли; ПередаваемоеЗначение = Новый Структура; Если Процент <> Неопределено Тогда ПередаваемоеЗначение.Вставить("Процент", Процент); КонецЕсли; Если Текст <> Неопределено Тогда ПередаваемоеЗначение.Вставить("Текст", Текст); КонецЕсли; Если ДополнительныеПараметры <> Неопределено Тогда ПередаваемоеЗначение.Вставить("ДополнительныеПараметры", ДополнительныеПараметры); КонецЕсли; ПередаваемыйТекст = ОбщегоНазначения.ЗначениеВСтрокуXML(ПередаваемоеЗначение); Текст = "{" + СообщениеПрогресса() + "}" + ПередаваемыйТекст; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |