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