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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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



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

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


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

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

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

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

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

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

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

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

КонецЦикла;

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


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

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

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

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

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

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

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

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

КонецЕсли;

КонецЦикла;

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


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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

КонецЕсли;

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

КонецЦикла;

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


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

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

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

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

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

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

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

КонецЦикла;

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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

 

к оглавлению

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

Понятие же "физического вакуума" в релятивистской квантовой теории поля подразумевает, что во-первых, он не имеет физической природы, в нем лишь виртуальные частицы у которых нет физической системы отсчета, это "фантомы", во-вторых, "физический вакуум" - это наинизшее состояние поля, "нуль-точка", что противоречит реальным фактам, так как, на самом деле, вся энергия материи содержится в эфире и нет иной энергии и иного носителя полей и вещества кроме самого эфира.

В отличие от лукавого понятия "физический вакуум", как бы совместимого с релятивизмом, понятие "эфир" подразумевает наличие базового уровня всей физической материи, имеющего как собственную систему отсчета (обнаруживаемую экспериментально, например, через фоновое космичекое излучение, - тепловое излучение самого эфира), так и являющимся носителем 100% энергии вселенной, а не "нуль-точкой" или "остаточными", "нулевыми колебаниями пространства". Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 17.08.2019 - 18:50: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Тиртхи - Карим_Хайдаров.
15.08.2019 - 23:53: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
15.08.2019 - 23:52: ТЕОРЕТИЗИРОВАНИЕ И МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ - Theorizing and Mathematical Design -> ФУТУРОЛОГИЯ - прогнозы на будущее - Карим_Хайдаров.
15.08.2019 - 23:50: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> ПРОБЛЕМА ИСКУССТВЕННОГО ИНТЕЛЛЕКТА - Карим_Хайдаров.
15.08.2019 - 17:13: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> ПРОБЛЕМЫ ВНЕДРЕНИЯ НОВЫХ ТЕХНОЛОГИЙ - Карим_Хайдаров.
15.08.2019 - 16:22: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ЗА НАМИ БЛЮДЯТ - Карим_Хайдаров.
15.08.2019 - 14:50: ЭКСПЕРИМЕНТАЛЬНАЯ ФИЗИКА - Experimental Physics -> Вихревые эффекты и вихревые теплогенераторы - Карим_Хайдаров.
13.08.2019 - 05:27: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Ю.Ю. Болдырева - Карим_Хайдаров.
12.08.2019 - 06:16: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
09.08.2019 - 13:03: АСТРОФИЗИКА - Astrophysics -> Исследования комет - Карим_Хайдаров.
08.08.2019 - 04:32: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
29.07.2019 - 04:33: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> "Зенит"ы с "Протон"ами будут падать - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution