WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     | 1 || 3 | 4 |   ...   | 8 |

«Краткое оглавление КРАТКОЕ ОГЛАВЛЕНИЕ 1 ПОДРОБНОЕ ОГЛАВЛЕНИЕ 4 ВВЕДЕНИЕ 17 Для кого предназначено настоящее руководство 17 История создания платформы 17 Платформа с открытым кодом 18 Обзор архитектуры 20 УСТАНОВКА И ...»

-- [ Страница 2 ] --

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

Загруженное окно не обязательно видно на экране, оно может быть и скрыто. В этом случае для его отображения необходимо щелкнуть мышью по названию окна в списке загруженных окон.

Свернуть или закрыть?

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

Первые две команды позволяют свернуть, убрать с экрана конкретную форму или все видимые, открытые формы. Для того, чтобы снова отобразить форму на экране необходимо кликнуть по ее наименованию в Списке загруженных окон. Команды «Закрыть форму» и «Закрыть все» не просто убирают форму с экрана, но и удаляют ее из памяти компьютера, высвобождая тем самым ресурсы компьютера. После закрытия формы, ее наименование уже не будет высвечиваться в Списке загруженных окон и для повторного открытия необходимо будет прибегнуть к Исследователю.

В отличие от других программ Windows, в Гедымине при щелчке по пиктограммке закрытия окна (крестик на заголовке, в правом верхнем его углу) окно не закрывается, а сворачивается, т.е. остается в оперативной памяти компьютера. Так сделано, чтобы уменьшить нагрузку на сервер базы данных. Ведь, при открытии окна может выполняться длительный запрос, а пользователь может часто открыватьзакрывать окна, например, при работе с неколькими документами. Если необходимо не свернуть, а именно закрыть окно (удалить его из памяти компьютера), то следует удерживать нажатой клавишу Shift в момент щелчка по пиктограммке закрытия.

Работаем из макросов Как свернуть или закрыть форму из макросов.

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

Рис. 10 Окно просмотра.

Основными составляющими частями являются:

Панель инструментов;

Таблица с данными;

Строка состояния.

Рассмотрим их более подробно:

Меню В простейшем случае меню содержит два выпадающих подменю:

Главный — содержит команды для работы с данными в окне;

Справка — содержит команду вызова справки.

Рассмотрим команды содержащиеся в этих выпадающих меню:

Изменить… Ctrl+Enter, Открывает диалоговое окно для изменения данных Удалить Ctrl+Del Удаляет выделенную запись или записи.

Слияние… Ctrl+R Открывает окно слияния (объединения) двух записей.

Панель инструментов На панели инструментов располагаются команды для работы с данными в окне. Все команды, которые присутствуют на панели инструментов находятся так же и в меню «Главный». Мы уже рассмотрели их выше.

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

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

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

Окно просмотра мастер-дитэйл Выше мы рассмотрели простейший случай — окно просмотра с одной таблицей. Теперь рассмотрим окна, предназначенные для отображения двух датасетов, связанных как мастер-дитэйл.

Рис. 11 Окно мастер-дитэйл. Горизонтальная раскладка.

Рис. 12 Окно мастер-дитэйл с деревом и таблицей.

Рис. 13 Окно мастер-дитэйл. Вертикальная раскладка.

Как видно на представленных рисунках, окна мастер-дитэйл могут быть в горизонтальном и вертикальном исполнении. В первом случае главный датасет располагается над детальным, а во втором — слева от него. В зависимости от типа данных для отображения главного датасета может использоваться таблица или дерево.

Для работы с детальным датасетом в меню окна появился отдельный пункт, который называется «Детальный» или «Позиция». Кроме этого, детальный датасет имеет свою панель управления и свое контекстное меню, которое вызывается по нажатию на правую кнопку мыши. Поскольку команды «Добавить», «Изменить», «Удалить» и т.д. ведут себя аналогично командам для главного датасета мы не будем останавливаться здесь на их подробном описании.

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

Рис. 14. Форма просмотра в режиме выбора.

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

Пометить все записи в таблице;

Снять пометку со всех записей в таблице;

Инвертировать текущее выделение;

В нижней части окна находится панель на которой выводится список выбранных записей, а так же кнопки для подтверждения выбора и закрытия окна или для отмены и закрытия окна. Третья кнопка — «Удалить» — удаляет запись из списка выбранных, т.е. снимает с нее пометку.



Форма в режиме выбора открывается всегда в модальном режиме. Т.е. для продолжения работы с программой ее обязательно необходимо закрыть с помощью кнопок «Ок» или «Отмена». Закрытие формы с помощью пиктограммки в виде крестика в правом верхнем углу равносильно нажатию кнопки «Отмена».

Поиск данных В базе данных могут находиться миллионы записей. Часто среди них надо отыскать одну-две, удовлетворяющие определенным условиям. Гедымин предоставляет пользователю пять способов поиска.

Рассмотрим их более подробно, а также постараемся дать ответ на вопрос: Когда какой поиск лучше использовать?

Поиск по первым введенным символам Данный вид поиска доступен в таблице и дереве. Если вы хотите найти определенное значение, установите курсор в нужную колонку и начинайте набирать первые символы значения. Если, такая запись есть в базе данных, — курсор перейдет на нее. Если несколько записей удовлетворяют введенным начальным символам — курсор перейдет на первую из них.

Поиск данных в колонке Данный вид поиска позволяет найти запись по вхождению введенной подстроки в данные определенной колонки. Вызвать его можно либо из контекстного меню, либо используя сочетание клавиш Ctrl+F. Для осуществления поиска необходимо ввести искомую подстроку в появившемся диалоговом окне, установить параметры и нажать кнопку «Ок».

Рис. 15 Диалоговое окно поиска.

Если искомые данные найдены — курсор будет установлен на соответствующую запись. В противном случае на экран будет выдано сообщение о том, что поиск окончился безуспешно.

Для того, чтобы продолжить поиск, найти следующую запись, удовлетворяющую введенным критериям достаточно нажать клавишу F3 или выбрать команду «Найти следующее» из контекстного меню.

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

Автофильтр Кто работал с электронными таблицами Microsoft Excel наверняка сразу поймет о чем идет речь.

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

Рис. 16 Автофильтр.

На экране появится список значений, содержащихся в данной колонке. Выберите конкретное значение и на экране отобразятся только содержащие такое значение записи.

Если автофильтр установлен, то текст в заголовках колонок таблицы выводится сисним цветом. Кроме этого, синим цветом подсвечивается треугольничек в той колонке, по которой установлена автофильтрация.

Вверху списка располагаются четыре команды:

— снимает автофильтр и выводит все записи в таблице;

— позволяет отобрать только те записи, которые содержат введенную подстроку;

— позволяет отобрать записи, которые не содержат значений в данной колонке;

— позволяет отобрать записи, которые содержат какое либо, не пустое, значение в данной колонке.

В целях экономии памяти автофильтр выводит в списке только первые несколько десятков уникальных значений из колонки.

Поиск с помощью панели поиска Панель поиска открывается с помощью кнопки Поиск на панели инструментов или с использованием команды Поиск в меню окна.

Рис. 17 Панель поиска.

На ней отображается список полей и две кнопки: «Найти» — выполняет поиск данных согласно введенным критериям и «Закрыть» — закрывает панель поиска, возвращает датасет в исходное состояние.

Поиск может осуществляться только по строковым полям и полям типа дата, дата и время. В зависимости от типа поля поиск осуществляется:

Для строковых полей — по вхождению введенной подстроки;

Для полей типа дата, дата и время — по точному соответствию введенного значения;

При вводе значений для поиска по строковым полям можно использовать шаблоны % и _. Первый заменяет произвольное (вкдючая ноль) количество любых символов, а второй — один любой символ в данной позиции. Если необходимо найти символ процента или подчеркивания непосредственно, наберите их, предворив символом процента. Например, %% — найдет все записи, содержащие % в указанном поле, а %_ — все записи, содержащие символ подчеркивания в указанном поле.

Фильтрация данных Когда какой поиск использовать?

При таком разнообразии предоставляемых возможностей поиска возникает естественный вопрос: какой способ следует предпочесть в той или иной ситуации?

Прежде чем попытаться сформулировать ответ, стоит пояснить какие механизмы использует каждый из описанных выше видов поиска. Поиск по первым введенным символам, поиск по колонке и автофильтр — отрабатывают на клиенте, пробегаясь от первой до последней записи в наборе данных и сверяя каждую запись на соответствие введенному условию. Очевидно, что если датасет большой, содержит десятки колонок и десятки или сотни тысяч записей, то сканирование его приведет к:

1. загрузке сервера;

2. передаче большого объема данных по сети;

3. загрузке всех данных на клиентскую машину и, как следствие, потребление большого объема оперативной памяти для их размещения. Не говоря уже о том, что при попытке загрузить слишком большое количество данных оперативная память, доступная программе может исчерпаться и на экран будет выдано сообщение об ошибке;

Поиск с использованием фильтров или панели поиска приводит к добавлению условий отбора данных в SQL запрос и отсылке его на сервер. При этом минимизируется сетевой трафик и на клиентский компьютер пересылаются только те записи, которые отвечают заданным критериям отбора.

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

Можно также порекомендовать использовать коомбинацию двух видов поиска. Например, на большой таблице настроить фильтр, который бы отбирал относительно небольшую часть записей и затем искать в них необходимые данные с помощью поиска по колонке, поиска по первым введенным символам или автофильтра.

Диалоговое окно В предыдущих разделах мы ознакомились с формами просмотра, которые служат для отображения множества записей в таблицах или деревьях. Для отображения данных одной записи, их изменения, в Гедымине широко применяются диалоговые окна разных типов. Как и формы просмотра, типы диалоговых окон образуют свою иерархию:

Рис. 18 Иерархия классов диалоговых окон.

Базовое диалоговое окно, базовое диалоговое окно с транзакцией Каждое диалоговое окно имеет, как минимум, один или несколько управляющих элементов для отображения и редактирования данных, а так же пять кнопок:

• «Ок» — подтвердить ввод или изменение данных и закрыть окно;

• «Отмена» — отменить ввод или изменение данных и закрыть окно;

• «Меню» — открыть меню с дополнительными командами;

• «Новый» — сохранить текущую запись и приступить к вводу новой записи;

• «Справка» — открыть справку по текущему диалоговому окну;

Рис. 19 Пример диалогового окна с транзакцией.

Базовое диалоговое окно с транзакцией отличается от простого базового диалогового окна наличием внутренней транзакции, которая стартует при открытии окна и комитится при любом его закрытии, либо по нажатию на кнопку «Ок», либо по «Отмене». Как правило, на этой транзакции работают выпадающие списки и вспомогательные бизнес-объекты, связанные с редактируемым объектом.

Меню диалогового окна По кнопке «Меню» на экране открывается список дополнительных команд:

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

• Выпадающий список;

• Выпадающий список Множество;

• Поле для отображения и ввода даты и времени;

• Калькулятор;

Расмотрим подробнее каждый из этих визуальных элементов:

Таблица Таблица предназначена для отображения набора данных и бесспорно является центральным элементом пользовательского интерфейса любой программы, написанной на платформе Гедымин. В простейшем случае одна строка таблицы соответствует одной записи из набора и каждая колонка отображает данные своего поля. В более сложных случаях таблица может быть настроена так, чтобы одна запись занимала несколько строк и каждая клетка содержала данные нескольких полей. Такой случай приведен на Рис. «Таблица». Обратите внимание на колонку «Покупатель/Телефон», в каждой клетке этой колонки выводится два значения: наименование покупателя и его контактный телефон.

Рис. 20 «Таблица»

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

• Сортировку данных по определенной колонке в прямом и обратном порядке;

• Фильтрацию данных;

• Редактирование данных;

• Суммирование данных (строка Итого).

На Рис. 20 «Таблица» обозначены основные составляющие элементы таблицы. Рассмотрим их подробнее:

Индикатор состояния записи Индикатор состояния записи находится в левой части таблицы и может принимать следующие значения:

Сплошной треугольник показывает, что данная запись является текущей, т.е. на ней установлен Сплошной круг показывает, что данная запись входит в группу выделенных записей;

Сплошной круг со знаком "больше" показывает, что запись входит в группу выделенных записей и одновременно является текущей записью;

Если индикатор имеет форму курсора ввода текста, то это означает, что текущая запись находится в состоянии редактирования.

Как правило, индикатор состояния записи скрыт и отображается только в процессе редактирования данных непосредственно в таблице.

По умолчанию, выделенные записи обозначаются в таблице другим цветом фона и, возможно, другим шрифтом.

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

Полоса прокрутки Полоса прокрутки предназначена для перемещения по набору данных с помощью мыши.

Строка Итого Строка «Итого» предназначена для отображения сумм по числовым полям. Если в наборе данных больше записей, чем изначально отображается в таблице, то в строке «Итого», в числовых колонках будет выведена надпись «Рассчитать…». Для получения суммы необходимо щелкнуть указателем мыши по этой надписи. В настройках таблицы можно указать для каких полей следует подсчитывать итоговое значение, а для каких нет. Например, сумма по колонке «Количество» в накладной имеет смысл, а по колонкам «Цена» или «Процент НДС» — нет. Так же в настройках таблицы можно указать будет отображаться строка «Итого» на экране или нет.

Подножие таблицы Подножие таблицы предназначено для вывода некоторой обобщающей информации о данных таблицы.

по умолчанию здесь отображается количество записей в таблице, количество выделенных записей и номер текущей записи. Настройщик может предусмотреть (путем перекрытия соответствующего события) вывод иной информации в подножии таблицы. Например, на Рис. 20 «Таблица» в подножии таблицы выводится информация о сумме всех неоплаченных на данный момент времени счетов.

Контекстное меню Контекстное меню вызывается по нажатию на правую кнопку мыши над записями таблицы и содержит следующие команды:

«Мастер установок» — открывает окно мастера установок таблицы;

«Скопировать ячейки в буфер» — копирует выделенные ячейки в буфер обмена;

«Обновить данные» — перечитывает содержимое таблицы;

«Найти…» — открывает диалоговое окно поиска данных в таблице;

«Найти следующее» — повторяет предыдущий поиск.

Обратите внимание, что если таблица располагается на форме просмотра, то по правой кнопке мыши откроется контекстное меню формы, куда будут добавлены команды таблицы.

Если нажать правую кнопку мыши над заголовком колонки, то контекстное меню будет содержать две команды:

«Скрыть колонку» — скрывает указанную колонку;

«Заголовок колонки» — позволяет изменить заголовок колонки;

Перемещение по таблице Сортировка данных Автофильтрация данных Настройка таблицы Настройка внешнего вида таблицы осуществляется в диалоговом окне «Мастер установок» вызвать которое можно либо по нажатию на клавишу F10, находясь в таблице, либо выбрав соответствующий пункт из контекстного меню, вызываемого по правой клавише мыши.

Окно настройки таблицы содержит следующие закладки:

Рассмотрим содержимое этих закладок:

Таблица На закладке «Таблица» находятся управляющие элементы, которые позволяют настраивать общие параметры внешнего вида таблицы. В левой части располагается группа кнопок, которая предназначена для установки начертания шрифта и цвета фона для: данных таблицы, выделенных записей, заголовков колонок. Справа вверху находится флаг, предназначенный для включения/выключения режима отображения полос. Если режим включен, то фоновый цвет четных и нечетных записей различается.

Соответствующие цвета настраиваются с помощью кнопок, расположенных под флагом «Использовать».

Ниже располагается пример оформления таблицы, согласно установленным параметрам. И, наконец, справа внизу располагаются четыре флага:

«Горизонтальные линии таблицы» — если флаг установлен, то между записями будут выводиться сплошные линии;

«Растягивать колонки по ширине таблицы» — если флаг установлен, то ширина колонок будет изменяться автоматически так, чтобы они занимали все доступное пространство. Если флаг снять, то часть колонок может быть не видна на экране и для их просмотра необходимо использовать полосу горизонтальной прокрутки внизу таблицы или перемещать курсор с помощью клавиш влево-вправо;

«Показывать строку итого» — данный флаг определяет будет ли видна строка «Итого» на «Показывать подножие таблицы» — данный флаг определяет будет ли видно подножие таблицы Рис. 21 Диалоговое окно настройки таблицы.

Колонки На закладке «Колонки» производится настройка:

внешнего вида колонок таблицы, визуального форматирования данных, расширенного отображения данных.

Рис. 22 Диалоговое окно настройки таблицы.

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

«Заглавие колонки» — строка, которая будет отображаться в заголовке колонки;

«Колонка отображается» — с помощью этого флага можно установить будет отображаться колонка в таблице или нет;

«Подсчитывать итоговое значение» — действует только для числовых полей. Если флаг установлен, то будет подсчитываться сумма по колонке;

«Только чтение» — данные колонки нельзя будет изменять при переводе таблицы в режим редактирования;

«Формат» — форматировать данные согласно заданному шаблону. Действует для числовых полей и полей типа дата, дата и время, время. Строку форматирования (маску) можно ввести вручную (см. соответствующее описание ниже) или воспользоваться кнопкой «…» спрва от поля ввода маски и выбрать один из предложенных вариантов.

«Кол-во строчек» — задает количество строк, которое будет использовать для выводя значения каждой клетки указанной колонки.

«Ширина колонки» — задает ширину колонки в символах. Обратите внимание, что если установлен режим «Растягивать колонки по ширине таблицы», то ширина колонок будет изменяться автоматически вне зависимости от установленного в данном поле значения.

На вкладке «Визуальные» можно установить такие параметры как:

Шрифт, цвет фона и выравнивание для отображения данных в колонке;

Шрифт, цвет фона и выравнивание заголовка колонки;

Можно настроить параметры визуального отображения сразу для нескольких колонок. Для этого необходимо выделить их в списке либо щелкая по ним мышью при нажатой клавише Ctrl, либо воспользовавшись флажком «Выбрать все колонки» внизу списка. В последнем случае будут выделены сразу все колонки в списке.

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

Активизировать режим расширенного отображения, включив флаг «Использовать» в левой нижней части закладки. Дополнительно можно настроить такие параметры как: «Рисовать разделитель» — если флаг установлен, то поля в рамках одной клетки будут разделяться горизонтальными линиями. «Расширенное заглавие колонки» — если флаг установлен, то заголовок колонки будет так же выводиться в несколько строк, по числу полей, заданных в расширенном отображении.

Форматирование числовых значений Маска, задающая формат вывода числовых значений может содержать следующие символы:

0 — Если форматируемое значение имеет цифру в той позиции, в которой в строке маски находится «0», то эта цифра копируется в результирующую строку. В противном случае символ «0» будет помещен в результирующую строку.

# — Если форматируемое значение имеет цифру в той позиции, в которой маска содержит «#», то эта цифра копируется в результирующую строку. В противном случае результирующая строка не меняется.

. — Десятичная точка. Первый символ «.» в строке маски определяет положение десятичной точки в результирующей строке. Все остальные символы «.», если они есть, игнорируются. То, какой именно символ будет использован в результирующей строке в качестве десятичного разделителя, определяется настройками операционной системы просмотреть и/или изменить которые можно в Панели управления Windows.

, — Разделитель тысяч. Если маска содержит один или несколько символов «,», то результирующая строка будет содержать разделители тысяч между каждыми тремя цифрами слева от десятичной точки. Конкретное расположение символов «,» в маске и их количество не влияет на положение разделителей тысяч в результирующей строке. Важен сам факт их наличия.

То, какой именно символ будет использован в результирующей строке в качестве разделителя тысяч, определяется настройками операционной системы просмотреть и/или изменить которые можно в Панели управления Windows.

Е+ — инженерная нотация. Если любая последовательность из «Е+», «е+», «Е-», «е-»

содержится в маске то чсило будет отформатировано согласно инженерной нотации. Группа в количестве до 4 символов «0» следующая сразе за последовательностью символов «Е+», «е+», «Е-» или «е-» определяет минимальное количество цифр в экспоненте. Последовательности «Е+», «е+» указывают на то, что знак «+» будет выводиться для положительных экспонент и знак «-» — для отрицательных. Последовательности «Е-», «е-» указывают на то, что знак экспоненты будет указываться только для отрицательных значений.

«хх»/’xx’ — символы, заключенные в двойные или одинарные кавычки, копируются напрямую в результирующую строку из маски и не влияют на форматирование.

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

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

Форматируемое число всегда округляется до того количество десятичных знаков, которое задано с помощью символов «#» или «0» справа от десятичной точки. Если маска не содержит десятичной точки, то форматируемое число округляется до ближайшего целого числа.

Строка формата может содержать от одной до трех секций, разделенных символом «;», задающих формат положительных, отрицательных и нулевых значений. Если секция отрицательных чисел или секция нулевых значений пропущены (т.е. содержат пустую строку), то используется строка форматирования, заданная для положительных значений.

Ниже приводятся примеры форматирования числовых значений:

форматирования/Значение Форматирование значений типа дата и время Маска, задающая форматирования значений типа дата и время может содержать следующие латинские символы:

c — Отображает дату в соответствии с коротким форматом даты, установленным в операционной системе, и время в соответствии с длинным форматом времени.

d — Отображает день ввиде числа без начального нуля (1-31).

dd — Отображает день ввиде числа с начальным нулем (01-31).

ddd — Отображает день ввиде аббривиатуры (Пн-Вс).

dddd — Отображает полное наименование дня недели.

ddddd — Отображает дату в соответствии с коротким форматом даты, установленным в операционной системе.

dddddd — Отображает дату в соответствии с длинным форматом даты, установленным в операционной системе.

m — Отображает месяц ввиде числа без начального нуля (1-12).

mm — Отображает месяц ввиде числа с начальным нулем (01-12).

mmm — Отображает месяц ввиде аббривиатуры (Янв-Дек).

mmmm — Отображает наименование месяца (Январь-Декабрь).

yy — Отображает год, как двухзначное число (00-99).

yyyy — Отображает год, как четырех значное число (0000-9999).

h — Отображает часы как число без начального нуля (0-23).

hh — Отображает часы как число с начальным нулем (00-23).

n — Отображает минуты как число без начального нуля (0-59).

nn — Отображает минуты как число с начальным нулем (00-59).

s — Отображает секунды как число без начального нуля (0-59).

ss — Отображает секунды как число с начальным нулем (00-59).

z — Отображает тысячные доли секунды как число без начальных нулей (0-999).

zzz — Отображает тысячные доли секунды как число с начальными нулями (000-999).

t — Отображает время согласно короткому формату отображения времени, установленному в операционной системе.

tt — Отображает время согласно длинному формату отображения времени, установленному в операционной системе.

/ — Отображает символ-разделитель частей даты установленный в операционной системе.

: — Отображает символ-разделитель часов, минут, секунд, установленный в операционной «хх»/’xx’ — символы, заключенные в двойные или одинарные кавычки, копируются напрямую в результирующую строку из маски и не влияют на форматирование.

Символы, задающие формат могут быть заданы как в верхнем, так и внижнем регистре. На результат это не влияет.

Если задана пустая строка в качестве маски, то форматирование производится как будто был задан символ «с».

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

Список условий задается на закладке «Условия» «Мастера установок».

Рис. 23 Диалоговое окно настройки таблицы.

Для добавления нового условия необходимо:

1. Нажать кнопку «Добавить», расположенную под списком условий;

2. Ввести в поле «Название» произвольное наименование условия, под которым оно будет отображаться в списке;

3. Из выпадающего списка «Колонка» выбрать колонку, данные которой будут проверяться на соответствие/не соответствие условию;

4. Выбрать операцию сравнения из выпадающего списка «Операция».

5. Ввести значение с которым будет осуществляться сравнение. Можно вводить как непосредственные значения, так и формулы, в которых могут использоваться значения других колонок таблицы. В последнем случае надо установить флаг «Рассчитывать формулы» в правой нижней части закладки.

6. Перейти на закладку «Шрифт и цвет, колонки» и указать параметры визуального форматирования, которые будут применяться в случае, если заданное условие выполняется и к каким колонкам эти параметры будут применяться.

После того, как все условия будут добавлены в список, необходимо активизировать применение условий с помощью флага «Использовать условия» в левой верхней части закладки.

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

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

Шаблоны Закладка «Шаблоны» предназначена для выполнения следующих действий:

Быстрой настройки внешнего вида таблицы с помощью выбора из списка одного из предустановленных шаблонов. Для выбора предустановленного шаблона необходимо установить на него курсор в списке и нажать кнопку «Установить шаблон»;

Сохранения настроек таблицы в файле на диске и загрузки их из файла. Кнопки «Сохранить шаблон» и «Загрузить шаблон» соответственно;

Установки первоначальных параметров колонок. Кнопка «По умолчанию». Первоначальные параметры: заголовок колонки, видимость, ширина, визуальное форматирование данных берутся из информации о таблицах базы данных, получить доступ к которой можно через «Исследователь», раздел «Сервис»—«Аттрибуты»—«Таблицы».

Рис. 24 Диалоговое окно настройки таблицы.

Запрос На закладке «Запрос» отображается SQL запрос, который используется для извлечения набора данных отображаемого в таблице. Внизу запроса выводится план, который использует сервер при извлечении данных.

Рис. 25 Диалоговое окно настройки таблицы.

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

Ограничение доступа к настройке таблицы Настройка большой таблицы представляет собой достаточно трудоемкое занятие. В реальной практике часто требуется защитить таблицу от неквалифицированного пользователя, не дать ему возможности изменять ее настройки. Ограничить доступ пользователей можно через политики групповой безопасности. Соответствующая политика называется «Изменение визуальных настроек».

Копирование настроек таблицы Если с программой работают десятки пользователей, то нет никакого смысла настраивать таблицудля каждого из них заново. Достаточно настроить ее под одной учетной записью и затем распространить на другие учетные записи. В Гедымине существует четыре способа копирования визуальных настроек от одного пользователя другому:

1. Скопировать настройки конкретной таблицы от одного пользователя другому можно следующим образом:

a. Загрузиться под логином пользователя, настройки которого будут скопированы;

b. Открыть окно, содержащее нужную таблицу;

c. Перейти в таблицу и открыть «Мастер установок»;

e. Нажать кнопку «Сохранить шаблон» и ввести имя файла;

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

h. Перейти в таблицу и открыть «Мастер установок»;

j. Нажать кнопку «Загрузить шаблон» и выбрать ранее сохраненный файл.

2. Скопировать визуальные настройки формы от одного пользователя другому. В том числе, скопируются и настройки всех таблиц, находящихся на форме:

a. Загрузиться под учетной записью пользователя которому необходимо скопировать c. В пункте «Главный» меню формы выбрать команду «Загрузить настройки формы»;

d. Выбрать учетную запись, настройки которой будут скопированы;

3. Скопировать все визуальные настройки от одного пользователя другому:

a. Открыть раздел «Сервис»«Администратор» «Пользователи» в «Исследователе»;

b. Открыть учетную запись пользователя которому будем копировать настройки;

c. Выбрать кнопку «Профиль» в правой части диалогового окна;

d. Выбрать из выпадающего списка учтеную запись, все визуальные настройки которой будут скопированы данному пользователю;

e. Закрыть окно изменения учтеной записи.

4. Скопировать данные непосредственно из хранилища одного пользователя в хранилище другого.

Дерево Выпадающий список Выпадающий список предназначен для подстановки некоторого объекта в поле записи, путем выбора его из списка или посика в базе данных по наименованию.

Выпадающий список состоит из следующих частей:

1. Поле ввода текста;

2. Копка вызова/скрытия списка;

3. Список объектов;

4. Панель инструментов;

5. Полоса прокрутки списка.

Рис. 26 Выпадающий список Поле ввода текста Поле ввода текста предназначено для ввода и отображения наименования объекта. При выборе объекта из базы данных путем поиска по наименованию в это поле необходимо ввести все наименование объекта или его часть. После этого необходимо нажать клавишу F3 или щелкнуть мышкой по кнопке вызова/скрытия списка. Будет осуществлен поиск объекта. Если в базе данных существует единственный объект, удовлетворяющий введенному наименованию, то он будет выбран и его наименование будет подставлено в поле ввода.

Если в базе данных существует несколько объектов, наименования которых удовлетворяют введенной строке, то на экране будет отображен список этих объектов. Если среди них находится искомый объект, то его необходимо выбрать с помощью мыши или используя клавиши управления курсором выделить его и нажать Enter.

Если список слишком велик — можно воспользоваться полосой прокрутки.

Кнопка вызова/скрытия списка Если поле ввода пустое, то при нажатии на кнопку вызова списка на экран будет выведен список всех доступных объектов. Если в поле ввода введено наименование объекта или его часть, то при нажатии на кнопку вызова списка будет произведен поиск в базе данных и на экран будет выведен список найденных объектов. Если найден только один объект, то его наименование будет подставлено в поле ввода.

Если при открытом списке объектов нажать на кнопку вызова/скрытия списка, то он будет закрыт.

Список объектов Список объектов выводится на экран когда пользователь нажимает на кнопку вызова списка или если был задан поиск объекта по наименованию и для введенной строки в базе данных существует несколько подходящих объектов.

Полоса прокрутки списка Если список содержит большее количество объектов чем помещается на экране, то можно воспользоваться полосой прокрутки для пролистывания списка вверх или вниз.

Панель инструментов Находясь в списке объектов можно вызвать команды:

Создания нового объекта, Изменения выбранного объекта, Удаления выбранного объекта, Копирования выбранного объекта.

Соответствующие пиктограммки расположены на панели инструментов в верхней части выпадающего списка.

В правой части панели инструментов расположены стрелки изменения ширины выпадающего списка.

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

F2 — создание нового объекта;

F4 — изменение выбранного объекта;

Ctrl-R — объединение двух записей;

F8 — удаление выбранного объекта;

F11 — свойства объекта;

F12 — переключение раскладки клавиатуры.

Вызов справки Вызов справки по использованию выпадающего списка.

Создание нового объекта При нажатии клавиши Ф2 на экран будет выведено диалоговое окно ввода нового объекта. После заполнения необходимых полей необходимо нажать Ок, после чего объект будет сохранен в базе, а его наименование подставлено в поле ввода.

В некоторых случаях, когда выпадающий список позволяет выбрать объекты разных типов, например:

Компанию, Контакт, Банк и т.п. Перед окном ввода параметров объекта на экран будет выведен список доступных для создания типов объектов.

Поиск При нажатии клавиши Ф3 будет выполнен поиск в базе данных объекта, наименование которого содержит введенную строку. Можно задать достаточно сложное условие поиска, если использовать специальные символы: "_" и "%". Символ "_" (подчеркивание) означает обязательное наличие любого символа в данной позиции. Символ "%" означает произвольную последовательность символов (включая пустую строку). Эти два символа аналогичны символам "?" и "*", которые можно использовать при поиске файлов в операционной системе.

Например, введя в строке ввода: "технолог%1" мы найдем в базе данных и "ООО Технология, филиал №1" и "Технологическое управление №1".

Изменение выбранного объекта Если выбран существующий в базе объект, то по нажатию на клавишу Ф4 можно отредактировать его в отдельном окне.

Текущий ключ Просмотреть идентификатор выбранного объекта можно воспользовавшись клавишей Ф5.

Объединение двух записей По коомбинации клавиш Ctrl-R можно вызвать окно объединения двух записей.

Точный поиск По клавише Ф7 можно выполнить точный поиск. Точный поиск выполняется гораздо быстрее, особенно если по полю, по которому осуществляется поиск объекта в базе данных создан индекс. Однако, при этом необходимо набрать полное имя объекта. Если будет введена только часть наименования объект не будет найден.

Удаление выбранного объекта Выбранный объект можно удалить из базы данных нажав клавишу Ф8.

Форма объекта Если необходимо просмотреть список объектов или осуществить поиск по сложному критерию, то необходимо открыть Форму объекта по нажатию клавиши Ф9. Выбрать/найти там нужный объект и закрыть форму.

Свойства объекта По нажатию клавиши Ф11 можно открыть стандартное окно с просмотром свойств выбранного объекта.

В частности, из этого окна можно узнать уникальный идентификатор текущей записи.

Переключение раскладки клавиатуры Чрезвычайно удобная функция для тех, кто привык набирать текст не отрывая глаз от клавиатуры. Если вы набрали строку на белорусском языке, когда ваша клавиатура была переключена на английскую раскладку, вам не придется печатать все заново. Нажатие на F12 не только переключает раскладку, но и конвертирует набранный вами текст из одной раскладки в другую.

Выпадающий список Множество Поле ввода даты Калькулятор Для ввода числовых данных применяется поле ввода с калькулятором. Данный управляющий элемент состоит из следующих частей:

Кнопка вызова калькулятора;

Панель с кнопками (панель калькулятора).

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

Затем следует ввести значение второго операнда и нажать клавишу Ввод или Равно. Панель калькулятора исчезнет с экрана, результат арифметической операции будет вычислен и подставлен в поле ввода.

Кнопка вызова калькулятора Кнопка вызова калькулятора позволяет вывести на экран панель калькулятора с кнопками. После чего, можно с помощью мыши вводить числовые значения и выполнять над ними арифметические операции.

Для того, чтобы закрыть панель калькулятора необходимо нажать кнопку «=» (равно).

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

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

Первое приложение на Гедымине В этой главе представлен кратких обзор языка программирования, используемого в платформе Гедымин.

После прочтения вы сможете написать свое первое Гедымин-приложение. Здесь мы рассмотрим только основные возможности языка, не останавливаясь на деталях. Также познакомимся с основным инструментарием разработчика, получим общее представление о среде исполнения программного кода.

Конкретные свойства и возможности Гедымина подробно изучаются в последующих главах.

Первое приложение За основу языка программирования в Гедымине был взят VBScript. Зная VBScript, вы не встретите трудностей при написании своих или расширении возможностей уже существующих модулей Гедымина.

Если же вам еще не приходилось сталкиваться с программированием на скриптах, то вы можете довольно быстро наверстать упущенное.

VBScript (Visual Basic Scripting Edition) - это упрощенная версия Visual Basic. Не имея таких широких возможностей, как исходный Visual Basic, он, тем не менее является мощным и простым в использовании средством, которое может использоваться для написания небольших программ. Если вы уже знакомы с Visual Basic или Visual Basic for Applications, вы найдете, что работа в VBScript очень проста и необычайно эффективна. Не смущайтесь, если вы не работали с другими версиями Visual Basic.

VBScript очень прост в изучении, даже для новичков.

По сложившейся традиции первая программа на изучаемом языке программирования должна выводить фразу «Hello, World!». Текст такой программы на VBScript-e будет выглядеть следующим образом:

sub HelloWorld MsgBox “Hello, World!” end sub Запустите Гедымин. Откройте Сервис | Редактор скрипт-объектов. В меню появившегося окна выберите Окна | Проводник. Проводник представляет собой вспомогательное окно с деревом доступных скриптобъектов. Гедымин позволяет создавать следующие типы скрипт-объектов:

• Макросы (глобальные и локальные) Для создания нашей первой программы мы воспользуемся объектом Скрипт-функция. Для этого необходимо в проводнике выделить папку «Скрипт-функции» и выбрать в контекстном меню пункт «Добавить скрипт-функцию» (чтобы вызвать контекстное меню, нажмите на папке правую кнопку мыши или сочетание клавиш Shift-F10). На экране появилось окно для редактирования скрипт-функций.

Оно состоит из нескольких закладок. На закладке «Свойства» в поле «Наименование функции» введите HelloWorld (как на Рис. 27 Рисунок). Затем перейдите на закладку «Скрипт» и наберите текст нашей первой программы (см. Рисунок 0.1). Чтобы сохранить наши изменения выберите в меню Редактора скрипт-объектов Скрипт | сохранить. Теперь в дереве скрипт-объектов в папке «Скрипт-функции»

должен появиться наш скрипт.

Рис. 27 Рисунок Рисунок 0. Осталось запустить наше приложение. Для этого выберите в меню Выполнение | Запустить. Если вы все сделали правильно, на экране у вас появится сообщение: Hello, World!

Итак, мы написали первую программу. Но как она работает?

Программы на VBScript-е строятся на основе скриптов. Скрипт – это код, который выполняется в приложении для некоторых целей. Скрипт может быть создан при помощи скриптового языка.

Скриптовой язык позволяет интерпретировать код на стадии его выполнения. Скрипт может состоять из одной или нескольких процедур, описания классов, объявления переменных и констант. Поэтому не стоит отожествлять значение слова «скрипт» со словами «функция», «процедура». Процедуры - это относительно самостоятельные фрагменты программы, оформленные особым образом и обозначенные именами. Упоминание этих имен в тексте программы называется вызовами процедур. Процедуры помогают разбить программу на ряд независимых частей, что необходимо для экономии памяти. Каждая процедура существует в программе в единственном экземпляре, но обращаться к ней можно из разных точек программы. При вызове процедуры вступает в действие последовательность операторов, которые находятся внутри этой процедуры. Процедуре могут быть переданы некоторые параметры.

В VBScript существует два вида процедур: подпрограмма (Sub) и функция (Function). Подпрограмма (Sub) - это последовательность VBScript-операторов, обрамляемая операторами Sub и End Sub.

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

sub MyFirstProcedure ‘ тело процедуры end sub Функция (Function) - это последовательность операторов VBScript, обрамляемая операторами Function и End Function. Она похожа на подпрограмму, но отличается от последней тем, что может возвращать некоторое значение. Функция может принимать параметры (константы, переменные или выражения, передаваемые при вызове). Возвращаемый тип у Function - Variant.

function MyFirstProcedure Передаваемые параметры могут передаваться либо как значение (обозначается ключевым словом ByVal перед названием параметра), либо как ссылка (обозначается ключевым словом ByRef перед названием параметра). Если параметр передается как значение (ByVal), то после выполнения процедуры его значение не изменится. При передаче параметра как ссылки по завершению выполнения процедуры мы получим новое значение параметра.

sub MyFirstProcedure (ByVal AValue, ByRef AReference) AValue = 5 ‘изменяем значение AValue AReference = 10 ‘изменяем значение AReference В рассматриваемом примере мы изменили внутри процедуры оба параметра. Однако по выходу из процедуры мы получим изменившееся значение только для параметра AReference, т.к. он был передан по ссылке. Значение же параметра AValue останется не измененным.

Все скрипты выполняются при помощи встроенного в платформу Гедымин интерпретатора языка.

Интерпретатор переводит компьютеру набранные вами команды непосредственно в момент их выполнения. Он построен на основе встроенного в Windows Microsoft Script Control. Script Control в свою очередь является посредником между интерпретатором Гедымина и Microsoft Windows Script Host.

Microsoft Windows Script Host, в русских версиях Windows называемый Сервером Сценариев, представляет собой языконезависимый сервер (контроллер обработчиков сценариев) для 32-х разрядных операционных систем Microsoft Windows. В состав WSH включены обработчики сценариев (scripting engines) языков Visual Basic Script и Java Script. Интерпретатор Гедымина поддерживает скрипты, созданные при помощи Visual Basic Script. Вы можете рассмотреть этот процесс на Рисунок 0.2.

Рисунок 0. Текст скрипта загружается в Script Control, проверяется на корректность в соответствии с выбранным языком и выполняется. Как мы уже знаем, скрипт может состоять из нескольких функций. Поэтому мы должны указать Script Control-у, какую функцию запускать, так называемую главную функцию. Все остальные процедуры, присутствующие в скрипте, называются вспомогательными. Именно для этого и служит поле «Наименование функции» на закладке «Свойства» окна редактирования скрипт-функций.

Что такое скрипт-объект Что же такое скрипт-объект?

Скрипт-объект – это объект, организующий определенным образом работу со скриптами: их создание, изменение, запуск. Как мы уже знаем, Гедымин поддерживает несколько видов скрипт-объектов.

Рассмотрим их подробнее.

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

Свойства скрипт-функции описывают:

• Название функции – название главной функции, которое будет передано интерпретатору при запуске скрипта на выполнение. Название функции должно быть уникально в рамках ее владельца, если это локальная функция, или по всему Гедымину, если это ScriptFunctionxxxx_xxxx, где xxxx_xxxx – РУИД функции.

• Владелец – указывает владельца, которому принадлежит функция. Владельцем может быть форма, класс или же собственно сама платформа. Здесь следует различать локальные и глобальные скрипт-функции. Владельцем глобальных функций является APPLICATION. Эти функции доступны из всех модулей Гедымина. Использование же локальных функций ограничено их владельцем. Указать владельца можно в выпадающем списке проводника скрипт-объектов (см Рисунок 0.3).

• Комментарий – содержит описание созданной скрипт-функции.

• Язык скрипта – указывает используемый скрипт-язык. В первой версии это свойство недоступно для изменения, т.к. поддерживается только VBScript. Однако в будущем планируется сделать поддержку также и Java Script.

• Локальное наименование – по сути дела представляет собой сокращенный комментарий.

Рисунок 0. Некоторые значения, передаваемые при вызове функции и влияющие на ее выполнение, называются параметрами. Рассмотрим пример. Наше первое приложение выводит сообщение «Hello, World!».

Однако в заголовке сообщения мы видим строку «VBScript». Расширим нашу функцию и передадим ей параметр, который будет указывать заголовок сообщения.

function HelloWorld(ByVal title) MsgBox “Hello, World!”, vbOkOnly, title end function Вообще, VBScript работает с типом Variant и по умолчанию считает все переменные вариантными.

Однако, если вы указали, что ваша процедура имеет входные параметры, то при вызове ее на выполнение вам будет предложено ввести значения для этих параметров в окне параметров. Изначально все параметры будут представлены целочисленным типом, и на окне параметров будет указан соответствующий визуальный элемент управления для ввода целых чисел. Для того, чтобы указать, что наш параметр является строкой, станьте на закладку «Параметры» окна редактирования функции. В поле наименование параметра укажите его локальное наименование, например «Заголовок», а в выпадающем списке выберите тип «Строка» (см Рисунок 0.).

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

Закладка «Зависимость» указывает, от каких внешних скрипт-функций зависит редактируемая функция, и какие функции зависят от нее. Если взять за пример наше первое приложение, то наша скрипт-функция не зависит ни от кого и ни одна другая скрипт-функция не зависит от нашей.

Макрос Макрос – подпрограмма, которую можно запустить из меню формы. По сути дела это скрипт-функция с некоторыми специфическими свойствами. Скрипт-функция в общем-то является базовым объектом для всех остальных скрипт-объектов Гедымина. Запустить ее на выполнение мы можем только из окна редактора. Макрос же позволяет настроить запуск скрипта.

Свойства макроса:

• Наименование макроса – наименование, с которым макрос будет отображаться в дереве скрипт-объектов или в меню формы. По-умолчанию равно наименованию функции.

• Горячая клавиша – сочетание клавиш, по нажатию которых будет вызван макрос. Поумолчанию не задано.

• Отображать в меню макросов формы – указывает, отображать ли макрос в меню формывладельца. Если макрос является глобальным, то он будет отображаться на всех формах.

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

Константы и переменные Как уже ясно из названия, данный скрипт будет описывать константы и переменные. Этот скрипт-объект может быть только глобальным, т.е. его владельцем может быть только APPLICATION. Описанные константы и переменные будут доступны из всех модулей Гедымина. Поэтому их названия должны быть уникальны. При попытке добавить глобальную константу или глобальную переменную с уже существующим именем Script Control выдаст ошибку о переопределении переменной / константы и отключит все глобальные объекты.

Отличием от скрипт-функции является то, что тело скрипта не содержит заголовка функции и ее окончания. Текст состоит только из объявления переменных и констант. Например:

public GlobalVariable 'глобальная переменная public const GlobalConst = 1 'глобальная константа Глобальные переменные и константы становятся доступными из всех скриптов Гедымина сразу же после их сохранения.

Отчеты Отчет – это наиболее сложный вид скрипт-объекта. Используется для формирования отчетов в системе Гедымин. Описание отчетов читайте в главе 10.

Методы и события Методы и события – это скрипт-объекты, используемые для расширения функциональности классов форм и бизнес-объектов. Более подробное их описание читайте в главах 6 и 7.

VB-классы и VB-объекты VBScript позволяет создавать классы и объекты.

Класс – это вид структуры, инкапсулирующей данные и функции в удобную упаковку. По сути, класс – это шаблон, по которому создаются экземпляры VB-объектов. Он определяет свойства объекта, его поведение. Однако в отличие от классов, используемых в объектно-ориентированных языках программирования, VB-классы не поддерживают наследования.

VB-классы и VB-объекты могут быть локальными и глобальными. Глобальный VB-объект доступен из дерева скрипт-объектов, создается автоматически при загрузке скриптов и доступен из любого модуля Гедымина. Локальный VB-объект вы можете создать прямо в скрипте. После выполнения скрипта он уничтожится.

Например, создадим локальный объект класса TCreator:

set Creator = new TCreator Описание VB-классов и объектов читайте в приложении f (!!!!).

Проводка Объект Проводка предназначен для создания бухгалтерских проводок. Более подробное описание читайте в главе 17.

Параметры скрипт-объектов Мы уже успели немного познакомится с параметрами скрипт-функций при описании объектов. Теперь рассмотрим их более подробно.

Итак, параметр – это некоторое значение, передаваемое функции / процедуре при ее вызове и влияющее на ее выполнение. При запуске скрипт-функции Гедымин определяет, есть ли у нее запрашиваемые параметры. При наличии таковых пользователю будет предложено задать необходимые значения.

Не запрашиваемым параметром в Гедымине является OwnerForm с типом «Не запрашивается», который говорит системе, что данному скрипт-объекту необходимо передать владельца. Он используется только в макросах и отчетах и должен стоять первым в списке.

Запрашиваемые параметры могут иметь тип:

Для всех простых типов параметров необходимо задать их локализованное наименование, выбрать тип, и (не обязательно) указать комментарий, который будет выводится пользователю как подсказка.

По умолчанию, каждый параметр добавленный пользователем имеет целочисленный тип.

Более сложными типами являются ссылка на элемент и ссылка на множество.

Очень часто нам необходимо выбрать запись из какой-либо таблицы по текстовому полю, но вернуть не значение текстового поля, а ключ записи. Для этого используется тип параметра «Ссылка на элемент».

Более сложный случай, когда вам необходимо вернуть массив ключей записей. Для этого используется тип «Ссылка на множество».

Кроме свойств, присущих простым типам параметров, для сложных типов добавляются:

• Имя таблицы – наименование таблицы или представления, из которого будет • Поле таблицы – поле, значение которого будет выводится в выпадающем списке. По этому значению пользователь будет выбирать запись.

• Ключ таблицы – поле, значение которого будет передано как параметр в скрипт. Чаще всего это идентификатор записей таблицы (первичный ключ).

• Условие – условие, по которому будут отфильтрованы записи в таблице. Если вы пишете условие c использованием синтаксиса VBScript, то вам необходимо выбрать в выпадающем списке язык VBScript. Для простых условий можно не указывать язык.

Использование VBScript-а чаще всего необходимо при вставке в условие глобальных переменных Гедымина, глобальных функций, преобразовании типов и т.д.

И «ссылка на элемент» и «ссылка на множество» возвращают результат в виде массива. Обращение к элементам данного массива начинается с индекса, равного нулю.

Например, нам необходимо отобразить в списке все контакты, имеющие тип «Человек». Для этого мы должны выбрать из таблицы GD_CONTACT все записи, для которых значение поля CONTACTTYPE равно 2. В виде SQL-запроса это выглядело бы так:

FROM gd_contact WHERE contacttype = При настройке параметра «Ссылка на элемент», закладка «Параметры» будет выглядеть как на Рисунок 0. Рисунок 0. Пример скрипта, которому передается параметр типа «ссылка на элемент»:

sub Choose_Contacts(ByVal Contact) Здесь мы объявляем переменную ContactId и присваиваем ей переданный нам параметр типа «Ссылка на элемент». При запуске скрипта на экране появится окно вида (смотри Рисунок 0.5) Рисунок 0. Если пользователь нажмет кнопку «Отмена», то запуск скрипта будет отменен. Кнопка «Оk» продолжает запуск скрипта, передавая ему указанные пользователем параметры. Если параметр не был указан, то передается значение, используемое по умолчанию для каждого конкретного типа. Значения, используемые по умолчанию вы можете посмотреть в Таблица 0.1.

Дата и время 30.12.1899 00:00: Ссылка на элемент Массив с одним элементом = - Ссылка на множество Вернет ошибку. Требует обязательного указания параметра.

Таблица 0. Примечание. Произвольно задаваемые параметры можно использовать не во всех скрипт-объектах, но только в макросах, простых скрипт-функциях и отчетах.

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

Синтаксис подключения внешней процедуры следующий:

Теперь вы можете вызывать подключенную процедуру из любого места скрипта. Если вы забудете подключить процедуру и попробуете к ней обратиться, то VBScript выдаст вам ошибку о несоответствии типа.

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

Редактор скрипт-объектов С некоторыми пунктами меню редактора скрипт-объектов мы уже успели познакомится, теперь рассмотрим его более подробно.

Меню Скрипт Содержит следующие пункты для работы с телом скрипт-объекта:

• Сохранить – сохраняет изменения текущего скрипт-объекта в базу.

• Сохранить все – сохраняет изменения всех открытых на редактирование скриптобъектов.

• Откат изменений – отменяет все сделанные изменения для текущего скрипт-объекта.

• Сохранить скрипт в файл – сохраняет текст текущего скрипта в файл на диске.

• Загрузить скрипт из файла – загружает текст скрипта из выбранного файла.

Загрузка/сохранение скрипта в файл доступны только, когда активна закладка «Скрипт»

• Копировать – копирует выделенный текст из окна редактирования тела скрипта в буфер • Вырезать – вырезает выделенный текст из окна редактирования тела скрипта в буфер • Вставить – вставляет в тело скрипта скопированный ранее текст из буфера обмена.

• Копировать SQL – аналогична команде «Копировать», за исключением того, что при копировании убирает начальные и концевые двойные кавычки и знаки переноса строки.

• Вставить SQL – аналогична команде «Вставить», за исключением того, что при вставке добавляет начальные и концевые двойные кавычки и знаки переноса строки.

• Закрыть – закрывает текущий редактируемый скрипт-объекта.

• Закрыть все – закрывает все открытые на редактирование скрипт-объекты.

• Открыть – предлагает список из девяти последних измененных скрипт-объектов.

Меню Поиск Содержит следующие пункты для организации поиска и замены:

• Поиск – выводит диалог для поиска заданного текста внутри тела текущего скрипта.

• Поиск в базе данных – выводит диалог для поиска скриптов в базе данных по заданным параметрам. Результат поиска отображается в окне «Сообщения».

• Замена – выводит диалог для замены искомого текста заданным. Действует только для Меню Выполнение Данное меню содержит команды по отладке и выполнению скрипт-функций. Содержит следующие пункты:

• Компилировать проект – проверяет все скрипт-объекты на уникальность имен.

Результаты компиляции отображаются в окне «Сообщения».

• Построить отчет – запускает на построение текущий отчет. Если отчет не выбран, • Запустить – выполняет текущую скрипт-функцию.

• Проверка синтаксиса – проверяет синтаксис текущего скрипта в соответствии с • Пауза – приостанавливает выполнение скрипта.

• Шаг в – выполняет текущий оператор скрипта и останавливает скрипт перед выполнением следующего. Используется при включенном режиме отладки. Если к моменту обращения к этому пункту режим отладки не был запущен, то выполнение скрипта останавливается перед первым исполняемым оператором. Если текущий оператор содержит обращение к другому скрипту, то управление будет передано во • Шаг через – работает как и предыдущий пункт меню, за исключением того, что если текущий оператор содержит обращение к другому скрипту, то этот скрипт будет выполнен обычным образом и выполнение остановится перед оператором, следующим за обращением к скрипту. Используется при включенном режиме отладки.

• Перейти к курсору – начинает или продолжает режим отладки исполняемого скрипта.

Скрипт будет выполняется до тех пор, пока не достигнет указанной строки. Затем выполнение будет приостановлено. Продолжить выполнение скрипта можно командами «Запустить», «Шаг в», «Шаг через», «Перейти к курсору». используется при • Перейти на выполняемую строку – работает в режиме отладки скрипта. Возвращает • Сброс программы – доступен в режиме отладки. Останавливает выполнение скрипта.

Крайне нежелательно часто использовать, так как данная команда не высвобождает до • Установить/снять точку останова – устанавливает/снимает точку прерывания исполнения скрипта. Скрипт будет выполняться до точки останова. Затем выполнение будет приостановлено. Используется при включенном режиме отладки.

• Вычислить – используется в режиме отладки для вычисления текущего значения • Добавить в просмотр переменных – добавляет переменную скрипта в окно просмотра, что позволяет видеть ее значение по мере выполнения скрипта. Используется при • Информация о типе – выводит информацию о типе выбранной переменной. Доступно Меню Сервис Содержит команды для отладки скриптов и настройки окна редактора скрипт-объектов. Пункты меню Сервис:

• Опции – выводит диалог «Опции» с настройками по отладке скриптов, отображению ошибок, фильтрации скрипт-объектов. Диалог «Опции» содержит следующие закладки:

iii. Сохранять положение курсора и закладки – сохраняет положение курсора и активную закладку при закрытии скрипт-объекта. При следующем редактировании скрипт-объекта, он откроется на той же закладке, курсор автоматически станет на сохраненную позицию.

iv. Выводить имя класса + подтип - при установленной опции в Проводнике наименование классов выводится в формате имя класса + подтип. При не установленной опции для классов имеющих подтипы выводится только имя подтипа. По умолчанию установлена.

v. Предупреждение об обновлении дерева – если данная опция установлена то, перед обновлением дерева скрипт-объектов выдается предупреждение о необходимости закрытия редактируемых скриптобъектов. Установлена по умолчанию.

vi. Восстанавливать рабочий стол – сохраняет информацию об открытых на редактирование скриптах. При последующей загрузке редактора скрипт-объектов, рабочий стол будет восстановлен.

b. Отладка i. Использовать отладочную информацию – при установленной опции становится доступной вся функциональность встроенного отладчика:

пошаговое исполнение, остановка на точках прерывания, вывод скрипта и выделение строки, в которой произошла ошибка и т.д. По ii. Сохранять время выполнения СФ в файл ScriptRunTime.log - при установленной опции происходит сохранение времени выполнения каждой функции. Установка данной опции полезна при оптимизации кода функций. Просмотреть время выполнения можно в окне Время выполнения либо в файле ScriptRuntime.log, находящегося в директории, содержащей gedemin.exe. При каждой загрузке Гедымина данная опция сбрасывается. Рекомендуется использовать только при отладке функциональности.

c. Ошибки i. Останавливать при возникновении ошибок – при возникновении ошибки Visual Basic-а и установленной опции открывается окно Редактор скрипт-объектов с открытой на редактирование функцией, содержащей ошибочный код. Строка, в которой произошла ошибка, подсвечивается. В окне Сообщения выводится информация об ошибке.

Если опция сброшена, то пользователю выводится сообщение об ошибке. По умолчанию выключена. Рекомендуется использовать только при отладке функциональности.

ii. Останавливать при возникновении внутренних ошибок – аналогична предыдущей опции. Здесь необходимо различать внутренние ошибки и ошибки VBScript-а. Внутренняя ошибка – это ошибка, возникшая внутри COM-объекта. По умолчанию выключена. Рекомендуется использовать только при отладке функциональности.

iii. Сохранять информацию об ошибках в файл - при установленной опции информация об ошибках сохраняется в указанный файл.

Параметр «ограничивать количество строк» ограничивает величину файла ошибок. При достижении максимальной строки, старая информация начинает последовательно стираться с начала, а новая d. Фильтр скрипт-функций Данные опции позволяют установить скрипт-функции для объектов каких типов будут отображаться. Для каждого скрипт-объекта создаются скриптфункции различных типов.

i. Выводить скрипт-функции созданные пользователем – отображает в папке скрипты объекта Скрипт-функция.

ii. Выводить скрипт-функции VB-классов – отображает в папке скрипты iii. Выводить скрипт-функции макросов – отображает в папке скрипты iv. Выводить скрипт-функции отчетов – отображает в папке скрипты v. Выводить скрипт-функции методов – отображает в папке скрипты vi. Выводить скрипт-функции событий – отображает в папке скрипты vii. Выводить скрипт-функции проводок – отображает в папке скрипты позволяет настраивать дерево проводника скрипт-объектов, фильтруя данные по определенным параметрам, таким как наименование скрипт-объектов различных групп, отображение только переопределенных методов и событий, отображение только отключенных методов и событий. Про переопределение и отключение методов и событий см в главах 6 и 7.

• Установки редактора – выводит диалог для настройки собственно окна редактора скриптов. Диалоговое окно содержит три закладки:

Содержит опции редактора, такие как настройка табуляции, отката выбора схемы горячих клавиш. Группа Опции редактора содержит следующие i. Режим автоматического отступа – при переносе на следующую строку позиционирует курсор ровно под первым значащим символом предыдущей строки, добавляя в начало новой строки пробелы. Если эту опцию отключить, то при добавлении новой строки курсор будет устанавливаться в самый первый слева символ. По умолчанию ii. Режим вставки – переключает режимы вставки / замены при наборе текста. Аналогичен работе клавиши Ins. Указывает какой режим будет включен при открытии скрипта на редактирование. По умолчанию iii. Интеллектуальная табуляция – включает «интеллектуальную»

табуляцию, т.е. при нажатии на клавишу Tab курсор устанавливается в позицию равной позиции первого символа следующего слова в iv. Замена табуляции на пробелы – заменяет символ табуляции на пробелы. Количество пробелов равно количеству позиций, на которые сдвигается курсор при нажатии на Tab. По умолчанию выключен.

v. Групповой откат – при отмене последней операции отменяет всю группу повторяющихся команд. Например, добавление нескольких пустых строк подряд будет отменено при откате. Если же эту операцию отключить, откатится только последняя добавленная строка. По vi. Курсор за пределами EOF – Дает возможность позиционировать курсор в любой части рабочей области редактора, или, проще говоря, за пределами набранного текста. По умолчанию отключен.

vii. Откат после сохранения – Сохраняет историю команд после сохранения viii. Отслеживать пустые пробелы – Сохраняет пробелы в конце строки. По ix. Поиск текста от курсора – Помещает слово, на котором стоит курсов, в поле «искомый текст» при вызове команды поиск. Если эта опция отключена, то искомый текст необходимо вводить руками. По x. Подсветка синтаксиса – включает подсветку синтаксиса. Параметры подсветки можно настроить на закладке «Цвета». По умолчанию Группа граница и гуттер содержит следующие подпункты:

Быстрая настройка редактора предназначена для быстрой конфигурации Размер буфера отката устанавливает количество команд, которые сохраняются в истории. По умолчанию, сохраняется 1024 команды. При достижении максимального количества, самые старые команды удаляются, новые добавляются в список. Внимание, ввод / удаление одного символа равны одной Позиция табуляции устанавливает на какое количество символов будет перемещаться курсор при нажатии на клавишу Tab. По умолчанию количество символов равно восьми. При включенном режиме интеллектуальной табуляции На данной закладке устанавливается схема работы горячих клавиш.

Всего доступно две схемы: Default (назначение клавиш как в ОС Windows) и Classic (назначение клавиш, как в классике Borland-а). По умолчанию используется схема Default. Вы можете назначить свое сочетание клавиш в каждой из схем посредством нажатия кнопки «Редактировать», или вернуть настройки по умолчанию посредством нажатия кнопки «Сбросить по Данная закладка предназначена для настройки подсветки синтаксиса. Для наилучшего восприятия кода программы рекомендуется выделять различными цветами и типами начертания шрифтов числа, строки, комментарии, зарезервированные слова. Настройка подсветки синтаксиса производится для каждого языка по отдельности. Выбрать язык вы можете в выпадающем списке Рисунок 0. Также внизу окна есть кнопка «Шрифт», которая выводит диалог настройки шрифта • SQL редактор – выводит окно для выполнения SQL-запросов. Окно поддерживает подсветку синтаксиса SQL (см закладку «Цвета» диалога «Установки редактора»).

Меню Окна Содержит команды для отображения вспомогательных окон редактора скрипт-объектов. Пункты меню:

Проводник – выводит окно проводника скрипт-объектов. Мы уже успели с ним познакомится несколько раньше (см Рисунок 0.3).

Время выполнения – выводит окно (см. Рисунок 0.7) для отслеживания времени выполнения скриптфункций. Используется при отладке для оптимизации времени, затрачиваемого на исполнение программного кода. Панель окна содержит три кнопки:

Сохранять время выполнения – аналогична опции «Сохранять время выполнения СФ в файл ScriptRunTime.log». Включает сохранение времени выполнения скрипта в файл. Во включенном состоянии выводит содержимое файла в окно. При этом в окне отображается:

ID – идентификатор скрипт-функции;

Runtime – время выполнения скрипт-функции в миллисекундах;

FunctionName – имя выполняемой скрипт-функции;

BeginTime – время начала выолнения скрипт-функции.

Не обновлять – останавливает обновление информации в окне. При этом информация продолжает записываться в файл. Работает только вместе с включенной опцией «Сохранять время выполнения».

Обновить – обновляет содержимое окна. Выводит информацию о функциях, которые выполнялись в текущую секунду. Работает вместе с включенной опцией «Не обновлять».

Контекстное меню окна позволяет открыть на редактирование функцию, информация о которой отображается в окне, очистить список.

Рисунок 0. • Инспектор классов – выводит вспомогательное окно с иерархией всех классов, доступных в системе Гедымин, глобальных объектов Гедымин, объектов VBScript-а. На первой закладке окна «Классы» представлено дерево классов и объектов. Выпадающий список предназначен для поиска класса / объекта по полному наименованию. Закладка «Поиск» предназначена для поиска по частичному наименованию классов / объектов, их • Сообщения – выводит информационное окно. В окне «Сообщения» отображается информация об ошибках, о поиске, предупреждения, возникшие в процессе компиляции • Стек вызовов – выводит окно, в котором в режиме отладки отображается история вызовов функций. В нем вы можете посмотреть последовательность вызова функций и параметры, переданные каждой функции. Верхняя запись списка окна «Стек вызовов»

указывает на последнюю вызванную функцию. Ниже находится список функций, вызванных до неё. Самая нижняя запись указывает на функцию, вызванную первой.

• Список переменных – выводит окно, в котором в режиме отладки вы можете видеть текущие значения заданных вами выражений. Если в точке выполнения одна из переменных в выражении не определена, значение выражения также становится • Точки остановки – выводит окно со списком всех точек прерывания, заданных текущим пользователем. В окне отображается идентификатор скрипт-функции, наименование скрипта, условие и количество проходов для каждой точки остановки.

Меню Справка Содержит команды для вывода справки по таким разделам, как VBScript, Fast Report (используется для создания отчетов), Руководство пользователя и программиста.

Хранение скрипт-объектов в базе. Кэширование В этом разделе дается краткий обзор структуры для хранения скрипт-объетов в базе данных и рассказывается о кэшировании скриптов на локальном компьютере. Поэтому, если вы почувствовали зевоту, то можете смело пропустить данный раздел.

В основе всех скрипт-объектов лежит скрипт-функция. Скрипт-функции хранятся в таблице GD_FUNCTION. Поле MODULE данной таблицы содержит тип функции. Может принимать следующие значения:

Таблица GD_FUNCTION кроме непосредственного описания функции хранит также ее параметры, права доступа, дату и время последнего редактирования функции.

Для сложных объектов, таких как События, Методы, Отчеты существуют вспомогательные таблицы:

Больше всего времени обычно уходит на считываение скриптов из базы и последующую загрузку их в скрипт-контрол. Для ускорения работы системы Гедымин используется кэширование скриптов на локальный диск, т.е. сохранение всех скриптов в определенной структуре в файл. При последующей загрузке Гедымина проверяется, изменялись ли скрипты в базе, и если версии скриптов в базе и в локальном кэше совпадают, то скрипты грузятся из файла. В противном случае файл уничтожается, и загрузка происходит из базы. Версионность скриптов отслеживается при помощи триггеров на таблице GD_FUNCTION. Последняя версия скриптов хранится в генераторе GD_G_FUNCTIONCH. Считывание скриптов из файла происходит быстрее, чем выполнение запроса к базе данных. Однако, здесь есть свои минусы. Кэширование не позволяет в процессе работы увидеть изменения, внесенные в скрипты другим пользователем. Вы увидите изменения только после переподключения к базе. Кроме того, при редактировании некоторых скриптов вами, их изменения загрузятся в Script Control только после последующей загрузке Гедымина.

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

Что такое хороший код Понятие хорошего кода не является жестко определенным. По этому вопросу до сих пор ведутся дискуссии в программистских кругах. На данный момент негласно используется несколько принципов, которым должен отвечать «хороший» код:

• Использование определенного стиля написания кода. Стиль программирования – это написание кода, согласно некоторым правилам, которые описывают визуальное форматирование, именование переменных, типов, процедур, функций, классов и других категорий. Использование определенного стиля упрощает чтение текста программ, помогает при визуальном тестировании кода на выявление ошибок. Кроме того, код становится более доступным для других программистов, что немаловажно. Принцип использования стиля применяется не только в программировании, но и других областях.

Возьмем, к примеру, любое печатное издание. Если каждую главу оформить по-разному, то затрудняется восприятие информации. И, напротив, при однородном оформлении читатель уже знает, на что следует обратить внимание, а что можно пропустить.

• Модульность. Разбиение на модули достаточно важный принцип в программировании.

Например, вам для различных целей нужна одна и та же функция. Вместо того чтобы дублировать код и копировать необходимую функцию в каждый модуль, лучше выделить более общие и часто используемые функции и константы в отдельный модуль и подключать его по мере надобности. Подобный подход уменьшает количество возможных ошибок, т.к. достаточно большой процент их возникает при копировании кусков кода из одного модуля в другой. Выделенный в отдельный модуль функции достаточно один раз отладить и затем их можно использовать в любом месте • Расширяемость и адаптируемость. Это наиболее важный и востребованный принцип создания программного средства. Предположим, вы написали программу, которая печатает платежные документы, соответствующие принятым в Республике Беларусь стандартам. Однако на территории Российской федерации ваша программа уже будет не востребована, т.к. у них используются совсем другие требования по оформлению платежных документов. Но вы можете адаптировать ваш код под новые условия и продать программу в другой стране. Расширяемость позволяет достаточно легко нарастить функционал. Обычно с принципом расширяемости довольно тесно связан принцип наследования. Возможность достаточно легкой адаптации программы под новые условия и расширяемости ее функциональности – это признак профессионализма.

• Инкапсуляция. Данный принцип уже захватывает основы объектно-ориентированного программирования. Если говорить просто, то некоторая служебная информация (функции, переменные) должна быть доступна только в определенном месте во избежание установления некорректных значений, что может привести к ошибке.

Использование принципов функционального программирования не позволяло пользователям назначать уровни доступа к отдельным переменным. Однако объектноориентированное программирование решило данную проблему. Теперь вы можете описать класс, который будет выполнять определенные функции, скрывая от пользователя промежуточные вычисления и не давая доступ к внутренним переменным.

• Использование комментариев. Данный пункт достаточно близко граничит со стилем оформления кода. Грамотный комментарий позволяет упростить понимание вашей логики. Каждый человек по-своему уникален. Его решение конкретной задачи может быть не понятно другому человеку без сопутствующих объяснений. Комментарии важны не только для сторонних программистов, т.к. часто сам создатель не может вспомнить, что именно он хотел реализовать в данном методе.

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

На наследуемых формах можно добавить необходимые дополнительные методы или перекрыть существующие. Принцип наследования также относится к объектноориентированному программированию.

• Своевременное высвобождение ресурсов. Несоблюдение данного принципа является не просто дурным стилем программирования, но и существенно влияет на работоспособность программного продукта. Одним из ресурсов, о которых идет речь, является память. Если вовремя не высвобождать ее, то на каком-то этапе ваш программный продукт может вызвать сбой в системе, ее зависание и даже перезагрузку компьютера. Это не говоря уже о том, что поглощение памяти существенно снижает скорость работы всех программ. Еще одним важным ресурсом является процессор, или степень его загрузки. Поэтому для весьма продолжительных и часто повторяющихся операций логично применять кэширование на локальный компьютер. Например, вам необходимо проверять права пользователей на доступ к различным объектам. Функция, которая возвращает права для конкретного пользователя, делает запрос к базе, затем вычисляет выражение с использованием полученных значений. Права могут проверяться достаточно часто, а их изменение происходит очень редко. Поэтому логично вычислить при первом обращении и сохранить в некой структуре. Еще один ресурс, на котором мы заострим внимание – это дисковое пространство. Грамотное написание кода позволяет минимизировать размер вашего программного продукта.

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

• Обработка ошибок. Данный принцип тесно связан с принципом о высвобождении ресурсов. Как обеспечить, чтобы занимаемый вами ресурс освободился, если у вас возникла ошибка? Грамотная обработка ошибок позволяет и высвобождать ресурсы, и не допускать сохранения некорректных значений в базе данных. Кроме того, при возникновении определенной ошибки вы можете выполнить определенную операцию, • Предварительное объявление переменных. Данный принцип актуален только для языков, которые позволяют работать с необъявленными переменными. Языки высокого уровня, такие как Pascal, C++, требуют обязательного объявления переменных.

Макроязыки, например, VbScript позволяют использовать переменную без ее предварительного объявления. С одной стороны это удобно: нужна переменная – сразу ей присваиваешь значение и работаешь. Однако в данном случае затрудняется отладка приложения. Ошиблись вы на одну букву, и язык решил, что это новая переменная, инициализировал ее неким значением и пустил в дело. Только функция уже будет • Типизация переменных. Данный принцип также актуален не для всех языков.

Некоторые языки программирования просто не поддерживают нетипизированных переменных. И, напротив, существуют языки которые работают только с нетипизированными переменными. Чем плохо использование переменных с вариантным типом? При использовании подобных переменных язык неявно приводит их к подходящему по смыслу типу. Всякие неявные операции уже таят в себе лазейку для Визуальное форматирование Как уже было сказано выше, визуальное форматирование не является обязательным условием при написании программного кода, однако существенно упрощает чтение текста программ. Четких правил по форматированию кода нет, однако наиболее часто используются следующие:

• Открывающая и закрывающая конструкции должны быть на одном уровне. Например:

function Test(ByVal DataSet) ' Здесь операции, проводимые над записями датасета В данном примере есть две пары открывающих и закрывающих конструкций: function и end function, do while и loop • Каждый новый вложенный уровень текста программы должен иметь отступ на два пробела от предыдущего. Строки одного уровня вложенности должны иметь • Каждую операцию необходимо писать с новой строки.

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

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

• При написании sql-запросов желательно придерживаться следующих правил:

• вложенные блоки должны начинаться с новой строки с отступом от левого края • первый перенос содержимого блока на новую строку должен увеличить отступ Например:

SELECT g.id as goodkey, g.name as goodname, v.id as valuekey, v.name as valuename Венгерская нотация, использование префиксов в наименованиях объектов Венгерская нотация – это правила написания имен переменных. Смысл этих правил в том, чтобы по имени переменной можно было определить ее тип и предназначение. Почему она называется венгерской? Создателем данной нотации является программист из Microsoft по имени Чарльз Симонэ родом из Венгрии, в честь которой нотация и получила название. На данный момент Венгерская нотация достаточно распространена в мире. Microsoft довольно активно использует ее уже больше десяти лет.

Однако нотация – это всего лишь стиль программирования. Использовать ее или нет – это полностью надлежит решить вам.

В чем же ее смысл?

Когда возникает нужда ввести в программу новый идентификатор, хороший программист начинает думать о следующих его свойствах:

• Содержательность – чаще всего ваш код придется использовать другим программистам. Желательно давать такие имена переменным, которые были бы понятны остальным, а также кратко характеризовали саму переменную.

• Мнемоничность – имя должно легко запоминаться.

• Стиль – при написании программы желательно придерживаться определенного стиля.

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

В основу Венгерской нотации была положена идея именования переменных по типу. Создатель данных правил исходил из следующего:

• Имена будут содержательными и мнемоническими, т.к. по типу переменной легко • Соблюдение некоторых правил именования определяет стиль программирования.

• На придумывание имен не тратится время – они конструируются механически.

• Становится более легким визуальное тестирование кода, т.к. из имени переменной легко узнать ее тип, а для каждого типа определены свои операции.

Итак, на основе предложенного подхода были сформулированы следующие правила по выбору имен переменных:

1. Переменные именуются согласно типу, за которым может следовать квалификатор. Их рекомендуется разделять посредством использования заглавных букв.

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

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

слишком длинное наименование противоречит принципу мнемоничности.

4. Имена сложных или производных типов следует конструировать из обозначений составляющих типов. К стандартным случаям таких типов относятся указатели, Оригинал документа «Венгерская нотация» расположен по адресу:

http://msdn.microsoft.com/library/techart/hunganotat.htm.

И в заключение рассмотрим пример. Данной процедуре в качестве параметра передается список строк.

Она пробегается по списку и последовательно выводит его содержимое на экран.

option explicit 'SL – TStringList. Название переменной состоит 'из первых букв слов, из которых сформировано название типа sub ShowListContents(ByVal SL) ‘ iCount – целочисленная переменная для ‘ считывания количества записей в SL В системе Гедымин широко используется соглашение об использовании префиксов в наименованиях:

каждый объект, имеющий отношение к определенной подсистеме, начинается с префикса, характеризующего данную подсистему. В данном случае под подсистемой понимают функциональный блок, реализующий работу в определенной области, а под объектом – любой скрипт-объект, пользовательские формы, объекты базы данных. Соотношение между префиксами и подсистемами можно увидеть в таблице 4.1.



Pages:     | 1 || 3 | 4 |   ...   | 8 |


Похожие работы:

«Центр социально-экономических исследований CASE Беларусь Аналитический рапорт Октябрь 2011 РЫНОК УСЛУГ ТАКСИ В СТРАНАХ ЕВРОПЕЙСКОГО СОЮЗА Автор: Александр Папко Редактор: Дмитрий Бабицкий Данная публикация выходит в рамках проекта Поддержка частных перевозчиков пассажиров через активизацию союзов перевозчиков, реализуемого CASE Belarus. Совместное финансирование этого проекта осуществляется в рамках программы польской помощи для заграницы Министерства иностранных дел Республики Польша в 2011 г....»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Пермский государственный национальный исследовательский университет ОТЧЕТ ПО ДОГОВОРУ № 12 741.36.0016 О ФИНАНСИРОВАНИИ ПРОГРАММЫ РАЗВИТИЯ Рациональное природопользование: технологии прогнозирования и управления природными и социально-экономическими системами за 6 этап Ректор университета _ Макарихин И.Ю. (подпись, печать) Руководитель...»

«Выпуск 9-10 Серия: Хочу все знать! 2012 Здравствуйте, ребята! XX столетие вошло в историю человечества как эра освоения энергии деления и синтеза ядер, и ядерная энергетика прочно заняла свою нишу на мировом энергетическом пространстве. Вы уже узнали о развитии ядерных программ в Германии и США. Мы продолжим тему Военные корни ядерной энергетики и рассмотрим ядерные программы Франции и Великобритании. Военные корни ядерной энергетики (продолжение) Ядерное оружие возникло в результате развития...»

«НОУ ВПО Липецк ий э колого -г ума нитарный институт УТ ВЕ Р ЖД АЮ : РАБОЧИЙ УЧЕБНЫЙ ПЛАН Ректор ЛЭГИ НАПРАВЛЕНИЕ: 080100.68 – Эк о но м ик а В.Ю. Филоненко МАГИСТЕРСКАЯ ПРОГРАММА: Эк оно м ик а фир мы ПРИСВАИВАЕМАЯ КВАЛИФИКАЦИЯ (СТЕПЕНЬ): м а ги ст р 01.07.2013 г. СРОК ОБУЧЕНИЯ : 2 года ФОРМА ОБУЧЕНИЯ : очн ая I. ГРАФИК УЧЕБНОГО ПРОЦЕССА Недели Сентябрь Октябрь Ноябрь Декабрь Январь Февраль Март Апрель Май Июнь Июль Август 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26...»

«Министерство образования и науки РФ федеральное государственное бюджетное образовательное цчреждение высшего профессионального образования Самарский государственный университет Психологический факультет УТВЕРЖДАЮ Проректор по научной работе А.Ф. Крутов _ 2011 г. ПРОГРАММА КАНДИДАТСКОГО ЭКЗАМЕНА по специальности 19.00.01 Общая психология, психология личности, история психологии (КЭ.А.03; цикл КЭ.А.00 Кандидатские экзамены Основной образовательной программы подготовки аспиранта По отрасли...»

«ДЕПАРТАМЕНТ ЗДРАВООХРАНЕНИЯ ГОРОДА МОСКВЫ НАЦИОНАЛЬНОЕ МЕДИЦИНСКОЕ ОБЩЕСТВО ПРОФИЛАКТИЧЕСКОЙ КАРДИОЛОГИИ МОСКОВСКИЙ ЦЕНТР ВНЕДРЕНИЯ ДОСТИЖЕНИЯ НАУКИ И ТЕХНИКИ МОСКВА НАУЧНО-ПРАКТИЧЕСКАЯ КОНФЕРЕНЦИЯ С МЕЖДУНАРОДНЫМ УЧАСТИЕМ ПРОФИЛАКТИКА 2014 ВДНХ, П.75 ПРОГРАММА www.mosgorzdrav.ru www.cardioprevent.ru www.mos-zdravo.ru Уважаемые коллеги! В настоящее время основной причиной смертности населения большинства стран мира, в том числе России, являются хронические неинфекционные заболевания –...»

«Автомобильная программа Орифлэйм, Вопросы и ответы 1. Каким образом в итоге будет производиться лизинговая выплата? Орифлэйм автоматически переводит деньги из причитающегося Вам бонуса лизинговой компании. Если Вы квалифицировались на 100-процентный бонус, Орифлэйм перечисляет этот бонус лизинговой компании в качестве лизингового платежа по Вашему договору. Если Вы не квалифицировались на бонус (0%), то Ваш платеж лизинговой компании Орифлэйм произведет из других причитающихся Вам доходов...»

«TAKE CONTROL IT'S YOUR SECURITY TAMOSOFT df CommView® Сетевой монитор и анализатор для Microsoft Windows Руководство пользователя Версия 6.5 Copyright © 1999-2013 TamoSoft Содержание Содержание Введение О программе CommView Что нового Работа с программой Краткий обзор Выбор сетевого адаптера для работы Текущие IP-соединения Пакеты Log-файлы Просмотр Log-файлов Правила Универсальные правила Предупреждения Реконструкция TCP-сессий Реконструкция UDP-потоков Поиск пакетов Статистика и отчёты...»

«Управляющие маркетинга – это должностные лица фирмы, занимающиеся исследованием маркетинговой ситуации, претворением в жизнь намеченных планов и осуществляющие контрольные функции [2]. Цели маркетинга: максимально высокое потребление, достижение максимальной потребительской удовлетворенности, предоставление максимально широкого выбора, максимальное повышение качества жизни. Эти цели решает маркетинговый цикл, который включает: маркетинговые исследования, маркетинговый синтез, стратегическое...»

«Министерство образования Республики Беларусь Учебно-методическое объединение вузов Республики Беларусь по медицинскому образованию ФАРМАКОЛОГИЯ Типовая учебная программа для высших учебных заведений по специальностям: 1-79 01 01 Лечебное дело; 1-79 01 02 Педиатрия; 1-79 01 03 Медико-профилактическое дело Минск 2009 2 СОСТАВИТЕЛИ: Н.А. Бизунок, заведующий кафедрой фармакологии Учреждения образования Белорусский государственный медицинский университет, кандидат медицинских наук, доцент; Б.В....»

«МИНИСТЕРСТВО ЗДРАВООХРАНЕНИЯ И СОЦИАЛЬНОГО РАЗВИТИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ МЕДИЦИНСКИЙ УНИВЕРСИТЕТ ФЕДЕРАЛЬНОГО АГЕНТСТВА ПО ЗДРАВООХРАНЕНИЮ И СОЦИАЛЬНОМУ РАЗВИТИЮ ГОУ ВПО РГМУ РОСЗДРАВА КАФЕДРА ЭНДОКРИНОЛОГИИ И ДИАБЕТОЛОГИИ ФУВ ОДОБРЕНО УТВЕРЖДАЮ председатель учебно-методической комиссии Декан факультета усовершенствования факультета усовершенствования врачей врачей ГОУ ВПО РГМУ Росздрава...»

«Научно-практическая конференция с международным участием VIII научные чтения, посвященные памяти академика РАМН Е.Н. Мешалкина НАУЧНАЯ ПРОГРАММА 20–21 ИЮНЯ 2014 года г. Новосибирск НАУЧНЫЙ ОРГКОМИТЕТ Председатель академик РАН А.М. Караськов (Новосибирск) Заместители председателей д-р мед. наук, проф. В.В. Ломиворотов (Новосибирск) д-р мед. наук, проф. Е.А. Покушалов (Новосибирск) Члены оргкомитета д-р мед. наук А.В. Богачев-Прокофьев д-р мед. наук, проф. З.А. Кавтеладзе д-р мед. наук, проф....»

«1 НЕПАЛ + БУТАН 12 дней / 11 ночей 18/09 — 29/09/2014 Целебные свойства горячих минеральных источников в Бутане были использованы бутанцами на протяжении многих веков для лечения от всех заболеваний, начиная от артрита до боли в теле и даже пазух. Отсюда можно обозревать живописные дикие пейзажи, великолепные бархатистые альпийские холмы, покрытые в зеленые леса из сосны и дуба, чистейший хрустальный воздух, наполненный дикой природой. А в ясную погоду вам откроются обворожительные заснеженные...»

«Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Российская академия народного хозяйства и государственной службы при Президенте Российской Федерации Северо-Западный институт управления Рекомендовано для использования в учебном процессе Коммерческое право (направление Юриспруденция) [Электронный ресурс]: учебно-методический комплекс / ФГБОУ ВПО Российская академия народного хозяйства и государственной службы при Президенте Российской...»

«1. Информация из ФГОС, относящаяся к дисциплине 1.1.Вид деятельности выпускника Дисциплина охватывает круг вопросов относящиеся к следующим видам деятельности выпускника: расчетно-экономическая, аналитическая, научно-исследовательская. 1.2.Задачи профессиональной деятельности выпускника В дисциплине рассматриваются указанные в ФГОС задачи профессиональной деятельности выпускника: 1. Расчетно-экономическая деятельность: подготовка исходных данных для проведения расчетов экономических и...»

«УДК 54(075.3) Б Б К 24я721 Я77 Рекомендовано Министерством образования и науки Украины (приказ МОН Украины № 235 от 16.03.2011 г.) Издано за счёт государственных средств. Продажа запрещена Научная экспертиза проведена в Институте органической химии НАН Украины. Психолого-педагогическая экспертиза проведена в Институте педагогики НАПН Украины. Ярошенко О. Г. Я 77 Химия : Учебн. для 11 кл. общеобразоват. учебн. завед. с рус. яз. обуч. (уровень стандарта). — К. : Грамота, 2011. — 232 с. : ил....»

«Список тем Код темы Группа Название темы Авторское право в любой отрасли. Компъютерные программы. Изобретения, споры, защита авторских прав. 1 4 Астрономия, космонавтика. 2 2 Биржевая торговля (лесоматериаллы, металлопродукция, льноволокно, сельхозпродукция, нефтепродукты). 3 1 Бухгалтерское дело, учёт, налоги, соцстрах, зарплата, юридические консультации. Законы. 4 Бухгалтерское дело.учет, налоги, соцстрах, зарплата, юридические консультации.Тепловые сети, теплоснабжение. 149 Винодельческая,...»

«Министерство образования и науки Российской Федерации УДК: 004.021 ГРНТИ: 20.01.01, 34.05.25 Инв. №: 310276 УТВЕРЖДЕНО: Исполнитель: федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Санкт- Петербургский национальный исследовательский университет информационных технологий, механики и оптики Руководитель организации /В. Н. Васильев/ М.П. НАУЧНО-ТЕХНИЧЕСКИЙ ОТЧЕТ о выполнении четвертого этапа Государственного контракта № 16.740.11.0495 от 16...»

«1. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА Данная образовательная программа по предмету ансамбль имеет художественно-эстетическую направленность. Программа предусматривает изменения, произошедшие за последнее время в обществе, а именно: -изменение социально-экономической ситуации; -изменение в сознании и восприятии художественных образов детьми; -в связи с особенностями современного информационного образовательного процесса; -возросшие требования к образованию и к музыкальному, в частности; изменением требований...»

«1 ТЕХНОЛОГИЯ создания и обновления крупномасштабных карт и планов городов по материалам ДЗЗ на базе программного обеспечения PHOTOMOD и ГИС Карта 2008 Москва, 2007 г. КБ Панорама, РАКУРС 2 Аннотация Данный документ содержит описание технологии создания и обновления крупномасштабных цифровых планов городов, а также цифровых топографических карт масштаба 1:25 000 и 1:50 000. Технология основана на использовании программного обеспечения PHOTOMOD (Ракурс) и ГИС Карта 2008 (КБ Панорама). 3...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.