|
Можно ли заставить управляемое приложение досрочно отобразить сообщения пользователю? | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
24.07.20
✎
22:18
|
Создай управляемую форму с командой
Для Счетчик = 1 По 20 Цикл ОбработкаПрерыванияПользователя(); Сообщить(Счетчик); Для Счетчик2 = 1 По 50000 Цикл Пустышка = 0; КонецЦикла; КонецЦикла; Открой ее в режиме клиентского приложения и выполни эту команду. Сообщения пользователю после задержки будут выведены все сразу, т.е. они выводятся после завершения выполнения обработчика, а не при каждом вызове Сообщить(). Иными словами они буферизуются. В обычном приложении они выводятся сразу при вызове метода Сообщить(). Можно ли как то в управляемом приложении тоже сделать, чтобы они выводились сразу при вызове Сообщить()? |
|||
1
NcSteel
24.07.20
✎
22:28
|
Асинхронные вызовы, посмотри как работают прогресбары в типовых
|
|||
2
TormozIT
гуру
24.07.20
✎
22:30
|
Интересует синхронный вариант. С асинхронным все понятно.
|
|||
3
lEvGl
гуру
24.07.20
✎
22:33
|
гггггг
|
|||
4
TormozIT
гуру
24.07.20
✎
22:40
|
(3) А вот и тяжелая артилерия. Чувствую сейчас выкатит свое решение.
|
|||
5
Ёпрст
24.07.20
✎
23:05
|
(0)
Ну так, разве что..хз, не силён в УФ //Сообщить(Счетчик); ОтобразитьИзменениеДанных(Счетчик,ВидИзмененияДанных.Изменение); |
|||
6
acht
24.07.20
✎
23:07
|
(2) Нельзя.
Используй Состояние или ПоказатьОповещениеПользователя. Там есть целая концепция деления сообщений по категорям: https://its.1c.ru/db/pubv8devui/content/227/hdoc |
|||
7
acht
24.07.20
✎
23:10
|
(5) > ОтобразитьИзменениеДанных
Аццкая конструкция с побочными эффектами: Доступность: ... Вызов метода выполняет обращение к серверу Примечание: В случае добавления или изменения данных вызов метода приводит к очистке кэшей на клиенте. В частности, очищается кэш представлений ссылок, кэш данных через точку, кэш данных быстрого выбора, кэш ограничений по типу. |
|||
8
TormozIT
гуру
24.07.20
✎
23:15
|
(6) Все там классно, но только не рассмотрен вывод лога в реальном времени, т.е. относительно большого количества текстовой информации. Для вывода лога подходит никакой из перечисленных там вариантов. Состояние и ПоказатьОповещениеПользователя конечно тоже не подходят.
|
|||
9
acht
24.07.20
✎
23:21
|
(8) "Лог в реальном времени, т.е. относительно большое количества текстовой информации" надо выводить в файл.
Желание программиста похвастатся всеми кишочками своего продукта перед пользователем, оно конечно похвально. Но только приводит к интерфейсу, которым невозможно пользоваться. Ты же сам из всего этого "лога" воспринимаешь только последние строчки 3. А для "расследования" начинаешь что-то делать, например проматывать окошко обратно. |
|||
10
acht
24.07.20
✎
23:31
|
(8) Попробуй с полем HTML документа извратится - положить внутрь js для добавления строки и дернуть его из потока выполнения 1С. Оно вроде в отдельном потоке отрисовывается.
|
|||
11
Ёпрст
24.07.20
✎
23:51
|
да уж..даже заголовок не меняется в цикле.
Это, так еще кто-то делал: https://habr.com/ru/post/278521/ |
|||
12
Ёпрст
24.07.20
✎
23:55
|
а блин, это для оф
|
|||
13
acht
25.07.20
✎
00:03
|
(11) Ошметки общей архитектуры с веб-клиентом. Тихо заметается под ковер, в отличие от асинхронщины и немодальности =)
|
|||
14
Garykom
гуру
25.07.20
✎
00:15
|
(0) По уму это делается выносом кода на сервер в фоновое, а на клиенте через обработчик ожидания сообщай прогресс периодически
|
|||
15
TormozIT
гуру
25.07.20
✎
00:25
|
(14) А если у меня внешняя обработка, т.е. нужно обойтись без фонового задания?
|
|||
16
acht
25.07.20
✎
00:32
|
(15) > А если у меня внешняя обработка
- Представь что тебе надо разгрузить машину, сколько времени это займет? - Пару часов - Это камаз - 8 часов - Камаз, груженый песком - 12 часов - У тебя нет лопаты и инструментов, только твои руки - 2 дня - На улице -40 - 4 дня - Камаз вообще под водой - Так же нечестно, ты постоянно придумываешь новые условия! К чему ты мне вообще все это рассказываешь? Вы, разработчики, вечно всякую херню рассказываете! =) |
|||
17
TormozIT
гуру
25.07.20
✎
00:35
|
(16) Мимо. Про синхронность явно написано было уже в (2).
|
|||
18
acht
25.07.20
✎
00:40
|
(17) А. То есть ты в (15) уже знал про что идет речь, но решил таки полезть глубже.
Ну ок, чо. |
|||
19
Bigcalm
25.07.20
✎
01:08
|
(8) Ну может тогда подготовить текст лога, и потом его выпиливать в текстовый файл, с помощью ВыполнитьКомандуСистемы, или как оно там называется.
Читать, и дальше уже там по логике работы. |
|||
20
TormozIT
гуру
25.07.20
✎
01:18
|
Нашел синхронное решение через вывод в свое поле текстового документа на управляемой форме и передергивание его видимости для перерисовки. Позже выложу готовое решение.
|
|||
21
acht
25.07.20
✎
09:08
|
(20) > передергивание его видимости
Лучше не выкладывай, это сильно плохое решение. При изменении видимости элемента происходит неявный контекстный вызов сервера(что, собственно, и приводит к перерисовке формы), про это даже в СП написано. Отсюда немедлено следуют два момента: - При использовании своего "логгирования" из процедур, а которых контекстные серверные вызовы явно запрещены (см тот же СП, например, ПриАктивизацииЯчейки") ты разваливаешь работу формы. - При накоплении достаточного числа строк ("лог в реальном времени, т.е. относительно большое количества текстовой информации" и тыпы) приложение будет не выполнять полезную работу, а ждать сериализор и сеть. Сделай замер производительности. Использование подобных "хитровыдуманные" решений, оно попахивает. |
|||
22
TormozIT
гуру
25.07.20
✎
09:32
|
(21) Спасибо. Все это учел. Форма используется отдельная и максимально легкая. Неявный серверный вызов конечно делается. Но он выполняется не чаще раза в 2 секунды. Лог не накапливается в этой форме, а хранится 10 последних строк. Полный лог копится отдельно и выводится в конце без участия в отображении реального времени.
|
|||
23
acht
25.07.20
✎
09:44
|
(22) > Полный лог копится отдельно
Если "отдельно" находится в контексте этой же формы, то у меня для тебя плохие новости. |
|||
24
vde69
25.07.20
✎
09:54
|
Я подобное делал через
Подключитьобработчикожидания С временем 0.1 |
|||
25
vde69
25.07.20
✎
09:55
|
(24) но это если итерраций не много
|
|||
26
TormozIT
гуру
25.07.20
✎
16:24
|
(24) Опять асинхронный совет или слишком лаконичный.
|
|||
27
TormozIT
гуру
27.07.20
✎
00:34
|
В ИР 5.45 реализовал (0) в 2-х вариантах:
1. Обработка.ирПлатформа.Форма.ВременноеОкноСообщений - обычная форма, активный вариант, без серверных вызовов. 2. Обработка.ирПлатформа.Форма.ВременноеОкноСообщений2 - управляемая форма, пассивный вариант, с серверными вызовами, чуть менее универсальный из-за ошибки платформы http://www.hostedredmine.com/issues/882422 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |