gifts2017

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

Опубликовал Алексей Сафонов (newold2) в раздел Программирование - Практика программирования

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

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

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Демонстрация соместной работы 11 Индикаторов
.zip 23,24Kb
18.06.12
23
.zip 23,24Kb 23 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Гнитка (smitti911) 13.06.12 18:08
Ай молодец, теперь уж точно в теме индикации процессов 1с 7 поставлена жырная точка. УРА !!!
2. Иван Иванов (Famza) 14.06.12 08:21
Ну то что 7ка ушла - тоже верно
3. Алексей Сафонов (newold2) 14.06.12 09:11
Все же готовлю обновление, где будет добавлено сохранение при индикации историй процессов.
Вспомнил, для анализа "затычек" при проведении документов делал специальную программку сохранения шагов процесса.
Легко и непринужденно она вошла в Индикатор. Добавлен массив ИндикаторИстория(30), в котором храняться
ТаблицыЗначений со всеми шагами Процессов (хранить или не хранить историю задается начальными установками
Индикатора). Хранение большого количества шагов (500000 и более) "съедает" много памяти и уменьшает
скорость Индикатора в 3-4 раза (все равно не менее чем в 2 раза быстрее "классического".
Перенос этих ТЗ в файл по завершению процесса (создание этаких "Логов") оставляю на совести использующего программиста (хоть что-то он должен делать).
4. Алексей Сафонов (newold2) 15.06.12 10:23
Выложил обновление. У-ф-ф, кажется все!
5. Алексей Сафонов (newold2) 18.06.12 12:37
Не утерпел. Добавил возможность вывода каждого Индикатора вместо Линейки в 10 заранее назначенных
односимвольных полей, которые на форме можно располагать произвольным образом. Так что теперь возможны (ядро
все тоже) вертикальные, круговые, квадратные и т.п. индикаторы. В "демонстрашку" добавил два таких примера.
Подход тот-же:
- определено текстовое поле "линейки" - вывод в него;
- определены 10 односимвольных текстовых полей - вывод в них;
- на форме ничего не определено - вывод в строку "Состояние()".
Как описывать поля написано в пояснении, в теле программы, в help.

Исправил ошибку совмещения режимов "Инверсия"+ "Гистограмма".
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа