d9e5a92d

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

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



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

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

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

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

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

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

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



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

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

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



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

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

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

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

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

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



ВыбратьСтроки();

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

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

СпрКниги.Статус = Перечисление.СтатусКниги.Выдана;

СпрКниги.Читатель = Читатель;

СпрКниги.ДатаВыдачи = ДатаДок;

СпрКниги.СрокВозврата = СрокВозврата;

СпрКниги.Записать();

КонецЦикла;

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



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

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

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

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

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



ВыбратьСтроки();

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

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

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

СпрКниги.СрокВозврата = НовыйСрокВозврата;

СпрКниги.Записать();

КонецЕсли;

КонецЦикла;

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



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

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

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

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

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

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



ВыбратьСтроки();

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

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



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

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

СпрЧитатели.КоличествоПредупреждений = СпрЧитатели.КоличествоПредупреждений + 1;

СпрЧитатели.Записать();



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

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

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

КонецЕсли;

КонецЕсли;



СпрКниги.Статус = Перечисление.СтатусКниги.Свободна;

СпрКниги.Читатель = 0;

СпрКниги.ДатаВыдачи = 0;

СпрКниги.СрокВозврата = 0;

СпрКниги.Записать();

КонецЦикла;

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



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

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

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

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

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



ВыбратьСтроки();

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

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

СпрКниги.Статус = Перечисление.СтатусКниги.Списана;

СпрКниги.Читатель = 0;

СпрКниги.ДатаВыдачи = 0;

СпрКниги.СрокВозврата = 0;

СпрКниги.Записать();

КонецЦикла;



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

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

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

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

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

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

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

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

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

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

Содержание раздела