Мини-библиотека (пример)

Постановка задачи
Объекты конфигурации
Справочник "Произведения"
Справочник "Книги"
Документ "Выдача книги"
Документ "Продление книги"
Документ "Возврат книги"
Документ "Потеря книги"
Отчет "Библиотечная выписка"
Отчет "Долги читателя"
Дополнительные функции
Что можно скачать

В три часа ночи:
- Как пройти в библиотеку?

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

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

Очевидно, в конфигурации должен быть справочник Читатели. Каждому читателю выдается читательский билет с уникальным номером.

В программе должны фиксироваться следующие события:

  • Выдача книг читателю из библиотеки на определенный срок
  • Продление книги
  • Возврат книги читателем в библиотеку
  • Потеря книги читателем

Для каждого события в конфигурации необходимо предусмотреть соответствующий документ.

Правила работы библиотеки следующие:

  • Читатель может взять в библиотеке только определенное количество книг (задается директором библиотеки).
  • Читатель берет книги обычно на месяц, но может сразу взять книгу на больший срок, если явно скажет об этом.
  • Читатель может продлевать книгу, т.е. сообщать о том, что он вернет ее позже указанного ранее срока.
  • При просрочке возврата книги, читатель получает предупреждение.
  • Когда предупреждений у читателя накапливается больше определенного предела, он лишается правом пользования библиотекой на 1 месяц.
  • При потере книги читатель лишается правом пользования библиотекой на 1 месяц, независимо от количества предупреждений.

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

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


Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Константы
  • МаксКолвоПредупреждений
  • МаксКолвоКнигНаРуках
  • КолвоДнейБлокировки
  • КолвоДнейДляВыдачи
Справочники
  • Произведения
  • Книги (подчинен спр. Произведения)
  • Читатели
  • ЖанрыКниг
  • Авторы
Перечисления
  • СтатусКниги (значения: Свободна, Выдана, Списана)
  • ДаНет (значения: Да, Нет)
Документы
  • ВыдачаКниги
  • ПродлениеКниги
  • ВозвратКниги
  • ПотеряКниги
Журналы документов
  • Библиотека
Отчеты
  • БиблиотечнаяВыписка
  • ДолгиЧитателя

Справочник "Произведения" (форма элемента)

Экранная форма элемента справочника Произведения выглядит следующим образом:



Справочник "Книги" (форма списка)

Экранная форма списка справочника Книги выглядит следующим образом:


Документ "Выдача книги"

Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

СпрКниги = создатьОбъект("Справочник.Книги");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Выдана;
СпрКниги.Читатель = Читатель;
СпрКниги.ДатаВыдачи = ДатаДок;
СпрКниги.СрокВозврата = СрокВозврата;
СпрКниги.Записать();

КонецЦикла;

КонецПроцедуры


Документ "Продление книги"
Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

СпрКниги = создатьОбъект("Справочник.Книги");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Если Число(НовыйСрокВозврата)<>0 Тогда

СпрКниги.НайтиЭлемент(Книга);
СпрКниги.СрокВозврата = НовыйСрокВозврата;
СпрКниги.Записать();

КонецЕсли;

КонецЦикла;

КонецПроцедуры


Документ "Возврат книги"
Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

СпрКниги = создатьОбъект("Справочник.Книги");
СпрЧитатели = СоздатьОбъект("Справочник.Читатели");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СпрКниги.НайтиЭлемент(Книга);

Если СпрКниги.СрокВозврата < ДатаДок Тогда

СпрЧитатели.НайтиЭлемент(Читатель);
СпрЧитатели.КоличествоПредупреждений = СпрЧитатели.КоличествоПредупреждений + 1;
СпрЧитатели.Записать();

Если СпрЧитатели.КоличествоПредупреждений > Константа.МаксКолвоПредупреждений Тогда

УстановитьРеквизитСправочника(Читатель, "Блокирован",Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован",Перечисление.ДаНет.Нет, ДатаДок + Константа.КолвоДнейБлокировки);

КонецЕсли;

КонецЕсли;

СпрКниги.Статус = Перечисление.СтатусКниги.Свободна;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();

КонецЦикла;

КонецПроцедуры


Документ "Потеря книги"
Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

СпрКниги = создатьОбъект("Справочник.Книги");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Списана;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();

КонецЦикла;

УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Нет, ДатаДок + Константа.КолвоДнейБлокировки);

КонецПроцедуры


Отчет "Библиотечная выписка"

Экранная форма диалога отчета выглядит следующим образом:

Пример работы отчета:

Модуль отчета см. в конфигурации "Мини-библиотека".


Отчет "Долги читателя"

Экранная форма диалога отчета выглядит следующим образом:

Пример работы отчета:

Модуль отчета см. в конфигурации "Мини-библиотека".


Дополнительные функции

Вам предлагается самостоятельно реализовать следующие дополнительные функции:

  • Поиск нужной книги по названию, автору, жанру и другим известным признакам.
  • Технология штрих-кодирования. Каждому читателю и каждой книге присваивается уникальный штрих-код. В экранных формах выбор читателя производится путем считывания штрих-кода, программа должна найти читателя или книгу в справочнике по штрих-коду.
  • Денежные расчеты. Допустим каждая книга имеет определенную ценность и библиотека является коммерческой. Каждый день взятия книги должен быть оплачен читателем исходя из задаваемых директором тарифов. При потере книги читатель должен заплатить штраф.
  • Отмена документов. При отмене проведения документов все изменения, которые он сделал в системе должны быть также отменены. Для сохранения непротиворечивости базы данных отмена документов должна проводиться в обратном порядке для каждого читателя и книги.
  • Может быть вам захочется реализовать учет на регистрах, а не только на справочниках и документах.
  • Добавьте другие функции, которые вы считаете просто необходимыми для работы нормальной библиотеки.

Что можно скачать

Скачать конфигурацию "Мини-библиотека" (20К)

 

к оглавлению

(время поиска примерно 20 секунд)

Знаете ли Вы, что релятивизм (СТО и ОТО) не является истинной наукой? - Истинная наука обязательно опирается на причинность и законы природы, данные нам в физических явлениях (фактах). В отличие от этого СТО и ОТО построены на аксиоматических постулатах, то есть принципиально недоказуемых догматах, в которые обязаны верить последователи этих учений. То есть релятивизм есть форма религии, культа, раздуваемого политической машиной мифического авторитета Эйнштейна и верных его последователей, возводимых в ранг святых от релятивистской физики. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 01.10.2019 - 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
30.09.2019 - 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Дэйвида Дюка - Карим_Хайдаров.
30.09.2019 - 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Владимира Васильевича Квачкова - Карим_Хайдаров.
29.09.2019 - 19:30: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
29.09.2019 - 09:21: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> КОЛЛАПС МИРОВОЙ ФИНАНСОВОЙ СИСТЕМЫ - Карим_Хайдаров.
29.09.2019 - 07:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Михаила Делягина - Карим_Хайдаров.
26.09.2019 - 17:35: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Пешехонова - Карим_Хайдаров.
26.09.2019 - 16:35: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
26.09.2019 - 08:33: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от О.Н. Четвериковой - Карим_Хайдаров.
26.09.2019 - 06:29: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Ю.Ю. Болдырева - Карим_Хайдаров.
24.09.2019 - 03:34: ТЕОРЕТИЗИРОВАНИЕ И МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ - Theorizing and Mathematical Design -> ФУТУРОЛОГИЯ - прогнозы на будущее - Карим_Хайдаров.
24.09.2019 - 03:32: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> "Зенит"ы с "Протон"ами будут падать - Карим_Хайдаров.
Bourabai Research Institution home page

Боровское исследовательское учреждение - Bourabai Research Bourabai Research Institution