Программирование >>  Реализация целостности данных 

1 ... 102 103 104 [ 105 ] 106 107 108 ... 124


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

ветствующим заданием печати.

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

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

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

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



ЧАСТЬ 3 Проектированна mmsmsimmtiam ттарфетоа

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

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

Подтверждение успешного завершения печати может ожидаться в

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

Шечать автоматическая и по команде пользователя

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

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

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

пользователь введет всю информацию о заказе. Или же объединить в

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

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



ГЛАВА 17 Coaasma отчетов i

возможность распечатывать эти отчеты самостоятельно, по

отдельной команде.

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

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

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

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

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

Пользовательские отчеты

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



1 ... 102 103 104 [ 105 ] 106 107 108 ... 124

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика