В шкафах и папках отдела хранится и другая информация: копии контрактов, досье производителей и пр.
Работа служащих отдела – создание записей, поддержание их в актуальном состоянии, поиск в массиве записей нужных для решения текущей задачи сведений.
Что это за задачи? Например, ежеквартально начальник отдела должен получить отчёт об участии сотрудников в заключении контрактов, например, в виде:
ОТЧЁТ о работе сотрудников отдела закупок III квартал 2002 г |
|||||
ФИО |
Всего контрактов |
Сумма (тыс. руб.) |
Макс. |
Мин. |
|
Иванов И.И. |
8 |
200 |
50 |
10 |
|
Петров П.П. |
Чтобы получить такой отчёт, нужно иметь список сотрудников, участвующих в заключении контрактов, и реестр контрактов. Алгоритм очевиден.
1) Выбрать из реестра контрактов все записи о контрактах, заключённых в III квартале 2002 г.
2) Установить указатель в первую строку списка сотрудников.
3) Установить указатель в первую строку таблицы отчёта.
4) Перенести в текущую строку отчёта значение фамилии из текущей строки списка.
5) Выбрать из результата шага 1) все записи, содержащие зафиксированное значение фамилии.
6) Подсчитать число записей, полученных на шаге 5) и поместить результат в поле Всего контрактов текущей строки отчёта.
7) Во множестве значений поля Сумма, полученном на шаге 5), найти максимальное и минимальное значения и поместить результат в соответствующие поля текущей строки отчёта.
8) Просуммировать значения этого поля и поместить результат в поле Сумма текущей строки отчёта.
9) Если список сотрудников не исчерпан, то переместить на одну позицию указатели в списке и отчёте и вернуться к шагу 5), иначе закончить.
Каждое подразделение организации может производить периодически или по требованию руководства множество подобных отчётов.
Кроме отчётов стандартных форм в оперативной работе отдела могут понадобиться данные с произвольной совокупностью значений поисковых признаков. Например,
обо всех контрактах заданного производителя;
обо всех видах продукции данного производителя;
обо всех производителях данного вида продукции;
обо всех контрактах на закупку указанного вида продукции;
о контрактах, заключённых при участии Иванова И.И. с производителем «Рога и копыта»
И Т.Д.
Алгоритмы обработки этих запросов так же просты, как и приведённый выше. Особых проблем нет, если мы работаем с десятком производителей, десятком видов продукции, а наш штат состоит из двух-трёх агентов. Однако если мы имеем отношения с несколькими десятками производителей сотен видов продукции, заключаем ежемесячно сотни контрактов и в нашем штате несколько десятков агентов, то возникают проблемы.
Во-первых, это проблема поддержания целостности наших данных.
Например, пусть продукция А производится производителями П1, П2 и П3. Именно это и указано в соответствующей карточке продукции.
Код продукции |
Наименование продукции |
Производитель |
Описание |
16 |
А |
П1, П2, П3 |
… |
161 |
АА |
П11, П43 |
Однако в реестре контрактов встречается строка
Код контр. |
Дата закл. |
Производитель |
Продукция |
Сумма |
Ответственный |
123 |
03/02/02 |
П11 |
А |
… |
Колюшкин К.К. |
Продукт А производит также и П11? Тогда почему это не отражено в картотеке?
Создавая запись о контракте, Колюшкин хотел написать П1, а его рука автоматически написала две единицы?
Или на самом деле контракт 123 предусматривает поставки продукта АА, который действительно производит П11?
Подобные противоречия (нарушения целостности данных) и соответствующие недоумённые вопросы в реальной жизни возникают довольно часто. Они неизбежны, если нет входного контроля данных.
Хранимые данные должны обновляться. В противном случае они быстро становятся неактуальными. При обновлении может нарушаться целостность данных, поскольку обновления производятся людьми, а люди не могут не ошибаться «в мелочах».
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.