Индикаторы: реагируют на отрицат.шаги — не только Прогресс-Индикаторы.
"Быстрые": вывод на экран не на каждом, а на заранее расчитанном шаге.
Управление: инверсия белого-черного, переворот линейки.
Можно записывать истории Процессов. Возможны вертикальный
и компактный вывод.
Развитие (и,повидимому, завершение) //infostart.ru/public/138502/
Завершение, потому что не вижу, что можно еще сделать без подключаемых компонент (раскраски разные — это мелочи).
Ну а компоненты делать не к чему — ушла она, семерка.
Использованы те же принципы но:
— Внутренние скалярные переменные Индикатора( программисту не видны и не нужны) замененны на массивы;
— Индикаторы пронумерованы (как и поля вывода на Форме), что позволяет выводить любое их количество;
— Расчитывается как верхняя граница шагов вывода (как и ранее), так и нижняя. Вывод производиться при достижении
любо из границ (т.е. возможны отрицательные шаги);
— Добавлено дополнительное управление: отрезания «хвоста» (для гистограм нобходимо), инверсия белог-черного,
поворот линейки на 180 градусов. Режим каждого индикатора задается один раз, перед началом процесса;
— Добавлена возможность записи в оперативной памяти историй Процессов.
-Добавлена возможность вывода вместо линейки в 10 односимвольных полей, расположенных любым образом.
Описание работы.
Если в Форме предусмотрено текстовое поле «ЗагТекстИндикатор» — заголовок выводится
в это поле; иначе — он присоединяется слева к Линейке индикатор.
Если в Форме предусмотрено текстовое поле «ПолеТекстИндикатор» — индикатор выводится
в это поле; иначе — в строку «Состояние».
Предусмотрено следующее соответствие номера Индикатора и текстовых строк Формы:
Номер индикатора=0 — ЗагТекстИндикатор,ПолеТекстИндикатор;
Номер индикатора=1 — ЗагТекстИндикатор1,ПолеТекстИндикатор1;
Номер индикатора=2 — ЗагТекстИндикатор2,ПолеТекстИндикатор2;
и т.д. — всего предусмортрено 30 индикаторов на Форме (если нужно — хоть 1000000!).
Вывод каждого Индикатора может производиться и в 10 односимвольных полей,
которые можно расположить на форме любым образом.
Пример:
Поле ПолеТекстИндикатор2 не задано, но заданы односимвольные текст.поля —
ПолеТекстИндикатор2_1, ПолеТекстИндикатор2_2,…, ПолеТекстИндикатор2_10.
Вывод индикатора №2 будет производиться в эти поля (вместо линейки).
Таким образом возможны и вертикальные гистограммы (если не лень описывать поля).
Поля можно и не создавать, вывод будет идти в стр.»Состояние()».
(если больше одного — сплошной «Киш-Миш»!)
При любом вызове необходимо в перем. «НомИнд» передать номер вызываемого Индикатора.
(при одном индикаторе на Форме — не обязательно передавать 0).
Возможны 3 режима вызова:
1. Если Начало=1 — вызов перед началом Индикации (началом Процесса) —
начальное «праграмирование».
В перем.»Парам1″ передаем заглавие линейки Индикатора, а в перем. «Парам2» передаем
заранее вычесленное полное количество (или 0) каких-либо действий (операций,шагов) процесса.
В переменной «НомИнд» предается номер индикатора (нулевой номер передавать не обязательно).
В переменной «Режим» передается режим работы (установка 1,2 и 3 бита), а именно:
Режим=1 — не будет выводиться «хвост» Индикатора (количество,время,прогноз);
Режим=2 — инверсия черного-белого на линейке индикатор;
Режим=4 — поворот линейки на 180 градусов.
Режимы можно складывать,т.е. возможные режимы: 0,1,2,3,4,5,6,7.
В переменную «Конт» передается контекст текущей формы (для случая, когда индикатор расположен
в глоб.Модуле и в форме определено поле для вывода индикатора — «ПолеТекстИндикатор»).
В перем «СохрИст» передается признак сохранения истории индицируемого процесса.
Если СохрИст=1 тогда в элементе массива ИндикаторИстория(НомИнд+1) создается
ТаблицаЗначений с колонками: «З» — Заголовок; «Ш» — номер шага; «В» — текущее время.
В эту ТЗ в дальнейшем записываются все шаги Процесса.
По окончанию процесса программист может записать все это в файл.
Сохранение истории при большом количестве шагов «съедает» память и уменьшает
скорость в 3-4 раза (все равно, идикатор работает как минимум вдвое быстрее «классических»).
2. В перем «Парам1» передается текущее количество шагов отображаемого
процесса (>=0), в перем «Парам2» можно передавать тек.заголовок Индикатора.
В переменной «НомИнд» предается номер индикатора (нулевой номер передавать не обязательно
Индикатор в перем. ИндикаторИстория(НомИнд+1) (если задана ТЗ) добавляет строку шага процесса.
).
В таком режиме процедура вызывается на каждом шаге процесса
3. Вызов без параметров -глИндикатор(,,НомИнд) — очистка поля (или строки «Состояние()»)
и всех сопутствующих переменных. Заметим, если Индекатор на Форме не один —
передача номера обязательна! Шестым параметром можно передать Контекст Формы
(например в процедуре «ПриОткрытии()»: глИндикатор(,,,,,Контекст);
в этом случае передавать номер нет надобности).
ВАЖНО!
При начальных установках (перед началом процесса) в четвертый параметр («Начало») необходимо (и обязательно!) передать 1!
Ай молодец, теперь уж точно в теме индикации процессов 1с 7 поставлена жырная точка. УРА !!!
Ну то что 7ка ушла — тоже верно
Все же готовлю обновление, где будет добавлено сохранение при индикации историй процессов.
Вспомнил, для анализа «затычек» при проведении документов делал специальную программку сохранения шагов процесса.
Легко и непринужденно она вошла в Индикатор. Добавлен массив ИндикаторИстория(30), в котором храняться
ТаблицыЗначений со всеми шагами Процессов (хранить или не хранить историю задается начальными установками
Индикатора). Хранение большого количества шагов (500000 и более) «съедает» много памяти и уменьшает
скорость Индикатора в 3-4 раза (все равно не менее чем в 2 раза быстрее «классического».
Перенос этих ТЗ в файл по завершению процесса (создание этаких «Логов») оставляю на совести использующего программиста (хоть что-то он должен делать).
Выложил обновление. У-ф-ф, кажется все!
Не утерпел. Добавил возможность вывода каждого Индикатора вместо Линейки в 10 заранее назначенных
односимвольных полей, которые на форме можно располагать произвольным образом. Так что теперь возможны (ядро
все тоже) вертикальные, круговые, квадратные и т.п. индикаторы. В «демонстрашку» добавил два таких примера.
Подход тот-же:
— определено текстовое поле «линейки» — вывод в него;
— определены 10 односимвольных текстовых полей — вывод в них;
— на форме ничего не определено — вывод в строку «Состояние()».
Как описывать поля написано в пояснении, в теле программы, в help.
Исправил ошибку совмещения режимов «Инверсия»+ «Гистограмма».