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