Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диссертация_Иванов.docx
Скачиваний:
9
Добавлен:
23.09.2019
Размер:
1.18 Mб
Скачать
  1. Отложенная инициализация закладок

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

  1. Отложенная инициализация ссылочных полей

Как уже говорилось выше, инициализация ссылочного поля также требует отдельного запроса к базе данных для получения списка допустимых значений, причем на одной закладке таких полей может быть много. При этом, каждое такое ноле, помимо значений, полученных из базы, может содержать специальные значения - «Все» и «Не установлен». Значение «Все» могут принимать фильтры в списках (разработчик может запретить это значение для конкрегного фильтра). Значение «Не установлен» могут принимать фильтры в списках и поля в карточках, в зависимости от типа связи - «многие к строго одному» или «многие к одному или нулю». Если иоле выГюра допускает хотя бы одно из этих специальных значений, то именно оно и будет установлено при инициализации. При этом запрашивать из базы данных список допустимых значений можно только в тот момент, котла пользователь решил выбрать значение поля из списка. С учетом того, что инициализация поля происходит каждый раз при изменении значения в одном из полей, от которых оно зависит, данное решение дает заметный выигрыш.

  1. Передача дополнительной информации между формами

Рассмотренный в предыдущем разделе механизм отложенной инициализации ссылочных полей не проходит в том случае, если сразу при инициализации формы поле должно показывать значение, полученное из базы данных. Такое случается:

  • при вызове карточки для существующего объекта (все поля инициализируются соответствующими свойствами объекта);

  • при вызове карточки для создания нового объекта из списка с установленными ссылочными фильтрами (соответствующие поля в карточке сразу получают значения из фильтров списка);

  • при вызове из карточки списка связанных объектов (по крайней мере один ссылочный фильтр в списке получает значение из карточки).

Необходимость обращения к базе вызвана тем. что ссылочные поля визуализируют свое значение (идентификатор выбранного объекта) не напрямую, а с использованием представления данного объекта, которое, как указывалось выше, вычисляется исходя из значений атрибутов этого объекта (и, возможно, атрибутов связанных с ним объектов). Для получения этот представления и требуется обращение к базе. В то же время, в ряде случаев требуемое представление уже было получено, но не в данной форме, а в той, из которой она была вызвана. В REAL-ГГ/VB была реализована передача значений ссылочных полей вместе с представлениями при вызове карточки из списка и списка из карточки, что позволяет не обращаться к БД при инициализации этих полей (точнее, это еще один механизм отложенной инициализации, поскольку инициализируется только текущее значение, но не список возможных значений. Передаче между формами списка значений препятствует наличие зависимостей и дополнительных ограничений на набор значений, коюрые могут быть разными в вызывающей и вызываемой формах).