|
|
|
Прогресс-бар | ☑ | ||
|---|---|---|---|---|
|
0
foxey
14.11.08
✎
15:19
|
Есть ли готовая разработка сабж? Хотелось бы при выполнении запроса или формировании таблички или печатной формы отрисовать процесс выполнения задачи. Для формирования табличек понимаю как сделать, а вот для запроса... На время выполнения запроса 1С все равно в ступор уйдет, остается только рисовать процесс переваривания выборки запроса.
|
|||
|
1
butterbean
14.11.08
✎
15:21
|
можно вот так
||||||||||||||||||60%|||| |
|||
|
2
ДенисЧ
14.11.08
✎
15:25
|
лучше так
[=]/\/\/\/\/\/60%/\/\/\[:] |
|||
|
3
foxey
14.11.08
✎
15:27
|
А куды все это выводить? Как думаете, лучше на форме в текстовом поле нарисовать или через Состояние() в статусбаре? Где прикольнее?
|
|||
|
4
Санта Клаус
14.11.08
✎
15:28
|
я делаю в Состоянии %
|
|||
|
5
lea_220400
14.11.08
✎
15:28
|
(0) поищи по форуму, уже было и вариант был как организовать параллельный процесс, там ВК если мне память не изменяет.
|
|||
|
6
ДенисЧ
14.11.08
✎
15:29
|
(3) в статус лучше. Стандартней.
|
|||
|
7
Fragster
гуру
14.11.08
✎
15:32
|
(6)+1... только выводи каждые 1000 итераций - а то времени много кушать вывод будет... у меня по терминалу на 10000 установок состояния (разного - наименований номенлатуры обрабатываемой) - ушло примерно 3 минуты... что по отладчику - составило 90% всего времени :)
|
|||
|
8
Ёпрст
гуру
14.11.08
✎
15:32
|
смотря какой запрос...
|
|||
|
9
foxey
14.11.08
✎
15:33
|
(7) Думаю, что не через 1000 надо, а общее число итераций делить на 20 к примеру. Правда, если шаг вычислить возможно будет...
|
|||
|
10
YHVVH
14.11.08
✎
15:34
|
ДА ладно у меня вот в 1с когда отчет вариться анегдот вываливается, чтоб юзвер не скучал :-)
|
|||
|
11
ДенисЧ
14.11.08
✎
15:35
|
(10) Лучше порнушку ему показывай...
|
|||
|
12
YHVVH
14.11.08
✎
15:35
|
(11) не
|
|||
|
13
foxey
14.11.08
✎
15:36
|
(11) Порнушку в статус-баре? А что, это будет забавно. Народ будет запускать отчеты и пристально всматриваться в низ монитора...
|
|||
|
14
Sadovnikov
14.11.08
✎
15:37
|
(0) Посмотри RiK_SQL, раздел "Окно сообщения".
|
|||
|
15
povar
14.11.08
✎
15:38
|
(13) ага, стриптиз, при 100% - снимается последняя часть одежды
|
|||
|
16
ДенисЧ
14.11.08
✎
15:38
|
(13) Анекдот в статусе - тоже забавно :-)
|
|||
|
17
andrewalexk
14.11.08
✎
15:43
|
(0)
:) или вот [:]||||||||||||||||||||||||||[:] |
|||
|
18
foxey
14.11.08
✎
16:00
|
(14) - Спасибо. Красивая обработка. Сейчас прикручу...
|
|||
|
19
Деметрио
14.11.08
✎
16:08
|
(10) а к башоргу, за свежими анекдотами, у Вас отчет умеет подключаться?
|
|||
|
20
Ёпрст
гуру
14.11.08
✎
16:09
|
(19) это давно всё есть.. и на инфостарте валяется..
|
|||
|
21
TitanLuchs
14.11.08
✎
16:18
|
(0) Вот процедура:
Процедура Прогресс(Текущий, Максимальный) Экспорт Перем СимволовМакс; // Сколько знакомест отводить для всей полосы прогресса Перем СимволовТек; Перем ПолосаПрогресса; Перем Ш; // Счетчик // Рассчитаем количество символов для линейки СимволовМакс = 60; СимволовТек = Цел(Текущий * СимволовМакс / Максимальный); // Теперь начинаем формировать полосу прогресса ПолосаПрогресса = " <"; Для Ш = 1 По СимволовТек Цикл ПолосаПрогресса = ПолосаПрогресса + "|"; КонецЦикла; Для Ш = 1 По (СимволовМакс - СимволовТек) Цикл ПолосаПрогресса = ПолосаПрогресса + "-"; КонецЦикла; ПолосаПрогресса = ПолосаПрогресса + ">"; // И отобразим Состояние(ПолосаПрогресса); КонецПроцедуры Но тут с циклами, лучше переделать на вырезание подстроки нужной длины из строк-заготовок типа "|||||||||||||||||||||||||||||||||||||" и "-------------------------", будет быстрее |
|||
|
22
foxey
14.11.08
✎
16:46
|
(21) - С помощью Rik-компоненты кошернее выглядит все.
Вот еще бы два прогресс-бара можно было показать! Один - общий для всех этапов формирования отчета, второй - для текущего этапа. |
|||
|
23
foxey
14.11.08
✎
16:48
|
А есть в 7-ке обработчик прерывания пользователем?
|
|||
|
24
ДенисЧ
14.11.08
✎
16:51
|
(23) он там не нужен. выскакивает окно "Прервать?"
|
|||
|
25
foxey
14.11.08
✎
16:53
|
(24) Если использую Риковскую ВК, мне надо при прерывании формирования отчета пользователем убить окно прогресс-бара.
|
|||
|
26
vde69
14.11.08
✎
16:53
|
// функция возвращает строку индикатор длиной 100 символов
Функция Обмен_Индикатор(значение, максимум=100) Если максимум > 0 Тогда Длина=50; Если значение<=0 тогда стр=""; Для е = 1 по Длина Цикл стр=стр+"."; КонецЦикла; Возврат "[" + стр + "]"; КонецЕсли; е1=""; Для е = 1 По Длина Цикл Если е<=((значение*Длина)/максимум) Тогда е1=е1+"|"; Иначе е1=е1+"."; КонецЕсли; КонецЦикла; Возврат "[" + е1 + "]"; Иначе Возврат ""; КонецЕсли; КонецФункции |
|||
|
27
vde69
14.11.08
✎
16:54
|
(26)+
вид [||||||.......] |
|||
|
28
ДенисЧ
14.11.08
✎
16:56
|
(25) Я бы сделал так: текст на форму, в него функцию.
В функции проверка: если есть окно статуса, то убить его. |
|||
|
29
foxey
14.11.08
✎
16:57
|
(28) чуточку недопонял:
В функции проверка: если есть окно статуса, то убить его. Какое такое окно статуса? |
|||
|
30
ДенисЧ
14.11.08
✎
16:58
|
(29) Пятница? Разумеется, прогресса :-)
|
|||
|
31
foxey
14.11.08
✎
17:03
|
(30) При этом подразумевается, что на форме отчета ничего не должно изменяться. Так ведь? У меня просто порой на форме рисуется количество считанных и обработанных документов...
|
|||
|
32
ДенисЧ
14.11.08
✎
17:05
|
(31) Почему подразумевается?
|
|||
|
33
foxey
14.11.08
✎
17:07
|
Если на форме что-то поменялось, то обработчик текстового поля сработает и убьет прогресс-бар. Или не так?
|
|||
|
34
ДенисЧ
14.11.08
✎
17:08
|
(33) А он нужен при интерактивной работе? А то, пока процедура отчета работает, эта функция вызываться не будет...
|
|||
|
35
ДенисЧ
14.11.08
✎
17:09
|
Данная функция вызывается только при интерактивной работе с формой.
|
|||
|
36
foxey
14.11.08
✎
17:10
|
Ну смотри: Отработал запрос, получили выборку, начинаем бегать по выборке, идет обработка. Здесь прогресс нужен и даже очень. А так как мы бегаем по выборке в цикле, то и прогресс будет рисовать актуальное состояние.
|
|||
|
37
foxey
14.11.08
✎
17:11
|
(35) - вот это уже понятнее. Попробую.
|
|||
|
38
TitanLuchs
14.11.08
✎
17:54
|
(26) Тоже цикл. Плохо.
|
|||
|
39
TilanLuchs
14.11.08
✎
18:34
|
Как вариант:
В справочнике Контрагенты, создать группу "НекоторыеКонтрагенты", туда побросать этих Контрагентов некоторых и уже при формировании отчета, смотреть входит ли Контрагент в эту группу или нет.:) |
|||
|
40
TitanLuchs
14.11.08
✎
18:35
|
(39) Опять боты на сервер напали?
|
|||
|
41
TitanLuchs
14.11.08
✎
18:35
|
+(40) не на сервер, а на форум то есть
|
|||
|
42
foxey
14.11.08
✎
18:43
|
(38) можно так попробовать:
Перем РазмерБара,спТ,спП; Процедура ПриОткрытии() РазмерБара = 60; Т = "."; П = "|"; спТ = СоздатьОбъект("СписокЗначений"); спП = СоздатьОбъект("СписокЗначений"); Для Сч = 1 По РазмерБара Цикл спТ.ДобавитьЗначение(Т); спП.ДобавитьЗначение(П); Т = Т + "."; П = П + "|"; КонецЦикла; КонецПроцедуры Функция ПрогрессБар(ТекЗначение,ВсегоЗначений) Шаг = ЦЕЛ(ВсегоЗначений / РазмерБара); ТекПолосочка = ЦЕЛ(ТекЗначение / Шаг); Если ТекПолосочка = (ТекЗначение / Шаг) Тогда Состояние("["+спП.ПолучитьЗначение(ТекПолосочка+1)+спТ.ПолучитьЗначение(РазмерБара - ТекПолосочка)+"]"); КонецЕсли; КонецФункции Чтобы циклов не было... |
|||
|
43
smaharbA
14.11.08
✎
18:49
|
(42) не универсально, все должно быть внутри самой функции, и она еще возвращять должна, чтобы в любом разе использовать
+ при неизвестном максимуме должно бегать как в загрузке хп |
|||
|
45
Табуретко
14.11.08
✎
18:50
|
(42)ашоб мерцания небылоб при таких СБ...
|
|||
|
46
Табуретко
14.11.08
✎
18:53
|
(44)пятницо?
|
|||
|
47
foxey
14.11.08
✎
19:01
|
(45) Если ТекПолосочка = (ТекЗначение / Шаг) Тогда
Вот тут анти-мерцание с заданным шагом... |
|||
|
48
foxey
14.11.08
✎
19:02
|
(43) У меня все внутри, кроме текущего и максимального значений.
А как ты нарисуешь при неизвестном максимуме? На глазок? |
|||
|
50
smaharbA
14.11.08
✎
19:04
|
спП.ПолучитьЗначение(ТекПолосочка+1) - это чо внутри
2. по времени и без внешних для функции переменных |
|||
|
51
TitanLuchs
17.11.08
✎
11:40
|
(42) Да проще надо сделать:
Т = ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"; П = "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"; и все |
|||
|
52
foxey
17.11.08
✎
11:43
|
(51) Ну наверное все-таки надо добавить еще такую конструкцию:
Состояние Лев(П,ТекЗначение)+Лев(Т,РазмерБара-ТекЗначение); |
|||
|
53
skunk
17.11.08
✎
11:48
|
ага ... вот только при запросе работать не будет... да и так тормозов добавит
|
|||
|
54
smaharbA
17.11.08
✎
12:06
|
С шагом в свое время не стал заморачиваться, сделал время
|
|||
|
55
smaharbA
17.11.08
✎
12:29
|
да там в состоянии лучче так
Да и Стр передавать и получать по ссылке |
|||
|
56
smaherbA
18.11.08
✎
03:16
|
Вопрос следующий.
В ПУБе есть заявка - по совместительству счет (печатная форма). Отдельно электронного счета нет (точнее он был, а потом его убрали). При выписке счета вводим заявку, не проводя ее. Печатаем и ждем оплаты. После оплаты проводим. Проблема в том что после оплаты проходит много времени, вводят много документов, проводя ее портим последовательность. Кроме того резерв она рассчитывает, я посмотрел, на позицию документа. Т.е. если после нее этот товар уже зарезервировали другой заявкой, она все равно его зарезервирует, получиться что более поздней заявке потом не хватит количества. Може я что не правильно делаю ? |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |