Постановка
задачи
Требуется
создать простейшую систему учета для библиотеки, которая позволит выдавать
книги читателям, отслеживать задолженности читателя и формировать отчеты
по совершенным операциям за заданный период.
Конфигурация, по-видимому,
должна содержать справочник Книги. У каждой книги есть уникальный библиотечный
номер (код). Необходимо отметить, что может быть несколько экземпляров
одного и того же произведения.
Очевидно, в конфигурации
должен быть справочник Читатели. Каждому читателю выдается читательский
билет с уникальным номером.
В программе должны
фиксироваться следующие события:
- Выдача книг читателю
из библиотеки на определенный срок
- Продление книги
- Возврат книги читателем
в библиотеку
- Потеря книги читателем
Для каждого события
в конфигурации необходимо предусмотреть соответствующий документ.
Правила работы библиотеки
следующие:
- Читатель может
взять в библиотеке только определенное количество книг (задается директором
библиотеки).
- Читатель берет
книги обычно на месяц, но может сразу взять книгу на больший срок, если
явно скажет об этом.
- Читатель может
продлевать книгу, т.е. сообщать о том, что он вернет ее позже указанного
ранее срока.
- При просрочке возврата
книги, читатель получает предупреждение.
- Когда предупреждений
у читателя накапливается больше определенного предела, он лишается правом
пользования библиотекой на 1 месяц.
- При потере книги
читатель лишается правом пользования библиотекой на 1 месяц, независимо
от количества предупреждений.
В программе должна
быть возможность сформировать библиотечную выписку, которая показывает
все совершенные операции за заданный период. Необходимо иметь возможность
выбрать операции только по указанному читателю и/или по указанной книге.
В программе должна
быть возможность узнать долги конкретного читателя на данный момент, т.е.
какие книги у него сейчас на руках и когда он должен их вернуть.
Объекты
конфигурации
В конфигурации потребуется создать следующие объекты:
Тип
объектов
|
Объекты
|
Константы |
- МаксКолвоПредупреждений
- МаксКолвоКнигНаРуках
- КолвоДнейБлокировки
- КолвоДнейДляВыдачи
|
Справочники |
- Произведения
- Книги (подчинен
спр. Произведения)
- Читатели
- ЖанрыКниг
- Авторы
|
Перечисления |
- СтатусКниги
(значения: Свободна, Выдана, Списана)
- ДаНет (значения:
Да, Нет)
|
Документы |
- ВыдачаКниги
- ПродлениеКниги
- ВозвратКниги
- ПотеряКниги
|
Журналы
документов |
|
Отчеты |
- БиблиотечнаяВыписка
- ДолгиЧитателя
|
Справочник
"Произведения" (форма элемента)
Экранная форма элемента
справочника Произведения выглядит следующим образом:
Справочник
"Книги" (форма списка)
Экранная форма списка
справочника Книги выглядит следующим образом:
Документ
"Выдача книги"
Экранная форма документа
выглядит следующим образом:
Модуль формы см. в
конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Выдана;
СпрКниги.Читатель = Читатель;
СпрКниги.ДатаВыдачи = ДатаДок;
СпрКниги.СрокВозврата = СрокВозврата;
СпрКниги.Записать();
КонецЦикла;
КонецПроцедуры
Документ
"Продление книги"
Экранная форма документа выглядит следующим образом:
Модуль формы см. в
конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Число(НовыйСрокВозврата)<>0
Тогда
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.СрокВозврата = НовыйСрокВозврата;
СпрКниги.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Документ
"Возврат книги"
Экранная форма документа выглядит следующим образом:
Модуль формы см. в
конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
СпрЧитатели = СоздатьОбъект("Справочник.Читатели");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрКниги.НайтиЭлемент(Книга);
Если СпрКниги.СрокВозврата < ДатаДок Тогда
СпрЧитатели.НайтиЭлемент(Читатель);
СпрЧитатели.КоличествоПредупреждений = СпрЧитатели.КоличествоПредупреждений
+ 1;
СпрЧитатели.Записать();
Если СпрЧитатели.КоличествоПредупреждений > Константа.МаксКолвоПредупреждений
Тогда
УстановитьРеквизитСправочника(Читатель,
"Блокирован",Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован",Перечисление.ДаНет.Нет,
ДатаДок + Константа.КолвоДнейБлокировки);
КонецЕсли;
КонецЕсли;
СпрКниги.Статус = Перечисление.СтатусКниги.Свободна;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();
КонецЦикла;
КонецПроцедуры
Документ
"Потеря книги"
Экранная форма документа выглядит следующим образом:
Модуль формы см. в
конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Списана;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();
КонецЦикла;
УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Да,
ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Нет,
ДатаДок + Константа.КолвоДнейБлокировки);
КонецПроцедуры
Отчет
"Библиотечная выписка"
Экранная форма диалога
отчета выглядит следующим образом:
Пример работы отчета:
Модуль отчета см.
в конфигурации "Мини-библиотека".
Отчет
"Долги читателя"
Экранная форма диалога
отчета выглядит следующим образом:
Пример работы отчета:
Модуль отчета см.
в конфигурации "Мини-библиотека".
Дополнительные
функции
Вам предлагается самостоятельно
реализовать следующие дополнительные функции:
- Поиск нужной книги
по названию, автору, жанру и другим известным признакам.
- Технология штрих-кодирования.
Каждому читателю и каждой книге присваивается уникальный штрих-код.
В экранных формах выбор читателя производится путем считывания штрих-кода,
программа должна найти читателя или книгу в справочнике по штрих-коду.
- Денежные расчеты.
Допустим каждая книга имеет определенную ценность и библиотека является
коммерческой. Каждый день взятия книги должен быть оплачен читателем
исходя из задаваемых директором тарифов. При потере книги читатель должен
заплатить штраф.
- Отмена документов.
При отмене проведения документов все изменения, которые он сделал в
системе должны быть также отменены. Для сохранения непротиворечивости
базы данных отмена документов должна проводиться в обратном порядке
для каждого читателя и книги.
- Может быть вам
захочется реализовать учет на регистрах, а не только на справочниках
и документах.
- Добавьте другие
функции, которые вы считаете просто необходимыми для работы нормальной
библиотеки.
Что
можно скачать
Скачать конфигурацию
"Мини-библиотека" (20К)
|