Группы "быстрых" индикаторов на формах 1с7.



Индикация влож. циклов, параллел. процессов; динам.гистограммы.
Индикаторы: реагируют на отрицат.шаги — не только Прогресс-Индикаторы.
"Быстрые": вывод на экран не на каждом, а на заранее расчитанном  шаге.
Управление: инверсия белого-черного, переворот линейки.
Можно записывать истории Процессов.  Возможны вертикальный
и компактный вывод.

Развитие (и,повидимому, завершение) //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!  

 

5 Comments

  1. smitti911

    Ай молодец, теперь уж точно в теме индикации процессов 1с 7 поставлена жырная точка. УРА !!!

    Reply ↓
  2. Famza

    Ну то что 7ка ушла — тоже верно

    Reply ↓
  3. newold2

    Все же готовлю обновление, где будет добавлено сохранение при индикации историй процессов.

    Вспомнил, для анализа «затычек» при проведении документов делал специальную программку сохранения шагов процесса.

    Легко и непринужденно она вошла в Индикатор. Добавлен массив ИндикаторИстория(30), в котором храняться

    ТаблицыЗначений со всеми шагами Процессов (хранить или не хранить историю задается начальными установками

    Индикатора). Хранение большого количества шагов (500000 и более) «съедает» много памяти и уменьшает

    скорость Индикатора в 3-4 раза (все равно не менее чем в 2 раза быстрее «классического».

    Перенос этих ТЗ в файл по завершению процесса (создание этаких «Логов») оставляю на совести использующего программиста (хоть что-то он должен делать).

    Reply ↓
  4. newold2

    Выложил обновление. У-ф-ф, кажется все!

    Reply ↓
  5. newold2

    Не утерпел. Добавил возможность вывода каждого Индикатора вместо Линейки в 10 заранее назначенных

    односимвольных полей, которые на форме можно располагать произвольным образом. Так что теперь возможны (ядро

    все тоже) вертикальные, круговые, квадратные и т.п. индикаторы. В «демонстрашку» добавил два таких примера.

    Подход тот-же:

    — определено текстовое поле «линейки» — вывод в него;

    — определены 10 односимвольных текстовых полей — вывод в них;

    — на форме ничего не определено — вывод в строку «Состояние()».

    Как описывать поля написано в пояснении, в теле программы, в help.

    Исправил ошибку совмещения режимов «Инверсия»+ «Гистограмма».

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *