Работа видеоконформа.

Одна из главных задач видео-системы - автоматическая перерисовывка всех поднятых на экране окон, чтобы всегда отображать в них те записи, которые соответствуют текущей записи текущей зоны верхнего окна. Этот процесс далее будем называть видеоконформом. Для выполнения видеоконформа в каждой зоне окна имеется курсор для работы с собственным мастер-файлом, кроме того в окне имеется курсор для работы с мастером окна. Будем называть их соответственно курсором зоны и курсором окна. Общая схема видеоконформа выглядит следующим образом:

  1. Отрисовывается верхнее окно.

    Если видеоконформ выполняется по одной из следующих причин:

    то для отрисовки верхнего окна (окна зоны Y) выполняется процедура "межзонного видеоконформа с перепозиционированием в главенствующих зонах".

    Если видеоконформ выполняется в других случаях, т.е. при работе внутри зоны, например, при перемещении по записям зоны, поиске нужной записи внутри зоны, смене индекса сортировки записей зоны и т.п., то при отрисовке верхнего окна выполняется процедура "межзонного видеоконформа", лидером которого является текущая зона верхнего окна.  В зоны, главенствующие к текущей, видеоконформ в этом случае не ходит, полагая что они не могли измениться (сетевая работа здесь не принимается в расчет).

  2. Отрисовываются все остальные окна (в произвольном порядке).

    Если окно W является независимым, то видеоконформ из текущей зоны верхнего окна идет в мастер окна W, а если окно является подчиненным или зависимым, то видеоконформ в его мастер идет из порождающей зоны.

    Если между этими мастерами можно построить транзитивную справочную связь, то в курсоре мастера окна W выполняется позиционирование на основе этой связи, назовем этот процесс "межоконным видеоконформом", после чего в окне W выполняется "межзонный видеоконформ", лидером которого является мастер окна. Этот "межзонный видеоконформ" имеет особенность: позиционирование в каждой зоне окна выполняется с учетом позиции лидера всего видеоконформа (текущей записи текущей зоны верхнего окна), см. п.2 в описании межзонного видеоконформа.

    Если из мастера текущей зоны верхнего окна невозможно построить транзитивную справочную связь в мастер окна W, то в окне W  выполняется процедура "межзонного видеоконформа с перепозиционированием в главенствующих зонах".

    Очевидно, что проход в подчиненное и зависимые окна выполняется только после того, как выполнится позиционирование в соответствующей порождающей зоне.

Опишем более подробно отдельные процедуры видеоконформа.

Следует еще раз обратить внимание, что не всегда конформ доходит до зоны, которая доступна на основе принципа подчиненности зон. Помеху может создать состояние самих данных - отсутствие записей в зоне-лидере (пустой селект), отсутствие справочных записей (неверное заполнение базы данных), конфликты блокировок и т.п.

Еще особенности видеоконформа

  1. При прохождении видеоконформа в мастер окна в курсоре окна выполняется позиционирование на основе отработки Link-пути в мастер данного окна, и результирующая информация о позиции присваивается курсору окна. Но если это независимое окно или в этом окна работает процесс Ask, то в курсоре окна полностью снимается селект, т.е., не меняя текущий индекс и позицию, устанавливается селект на 0 полей. В курсоре зависимого окна селект остается.
  2. При прохождении видеоконформа в зону, непосредственно подчиненную зависимому окну, и имеющую такой же мастер-файл, что и мастер-файл окна, и при условии, что в этой зоне не работает процесс Ask, в курсор мастера зоны копируется вся информация о позиции из курсора мастера окна - и индекс, и селект, и позицию. Во всех других случаях видеоконформ не подменяет в курсоре мастера зоны ни индекс, ни селект, а только адаптирует к ним результирующую позицию.

 

Посмотреть как связаны между собой мастера окон, мастера зон в окне и файлы полей зоны можно с помощью диалога "Loaded Windows".