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