ОГЛАВЛЕНИЕ
1. Введение
2. Теоретическаячасть
3. Описаниеавтоматизированного рабочего места
4. Вывод
5. Приложение
1. ВВЕДЕНИЕ
В этомпримере рассматривается деятельность городской (районной) библиотеки. Вбиблиотечном фонде храниться много данных, как о книгах (название книг, издание,количество), так и о читателях (ФИО, адрес). Чтобы облегчить работусотрудникам, правильно отследить данные о читателе и книгах можноавтоматизировать его рабочее место.
Цельюданной работы является разработка и проектирование базы данных библиотеки, в которойописываются данные о книгах, читателей и вывод на печать определенныхдокументов. Интерфейс пользователя разрабатывается в среде программирования1С: Предприятия.
2. ТЕОРЕТИЧЕСКАЯЧАСТЬ
/>Постановказадачи.
Требуется создатьпростейшую систему учета для библиотеки, которая позволит выдавать книгичитателям, отслеживать задолженности читателя и формировать отчеты по совершеннымоперациям за заданный период.
Программа должнасодержать:
1. Справочник «Книги»:у каждой книги есть уникальный библиотечный номер (код). Необходимо отметить,что может быть несколько экземпляров одного и того же произведения.
2. Справочник «Читатели»:каждому читателю выдается читательский билет с уникальным номером.
3. Справочник «Произведение»:у каждого произведения есть уникальный код.
4. Справочник «Авторы»и «Жанры»
В программе должныфиксироваться следующие события:
· Выдача книгчитателю из библиотеки на определенный срок
· Продление книги
· Возврат книгичитателем в библиотеку
· Потеря книгичитателем
Для каждого события вконфигурации необходимо предусмотреть соответствующий документ.
Правила работыбиблиотеки следующие:
· Читатель можетвзять в библиотеке только определенное количество книг (задается директоромбиблиотеки).
· Читатель береткниги обычно на месяц, но может сразу взять книгу на больший срок, если явноскажет об этом.
· Читатель можетпродлевать книгу, т.е. сообщать о том, что он вернет ее позже указанного ранеесрока.
· При просрочкевозврата книги, читатель получает предупреждение.
· Когда предупрежденийу читателя накапливается больше определенного предела, он лишается правомпользования библиотекой на 1 месяц.
· При потере книгичитатель лишается правом пользования библиотекой на 1 месяц, независимо отколичества предупреждений.
В программе должна бытьвозможность сформировать библиотечную выписку, которая показывает всесовершенные операции за заданный период. Необходимо иметь возможность выбратьоперации только по указанному читателю и/или по указанной книге. В программедолжна быть возможность узнать долги конкретного читателя на данный момент,т.е. какие книги у него сейчас на руках и когда он должен их вернуть. В таблице1 представлены все объекты, которые нужно создать в конфигурации.
Таблица 1.Тип объектов Объекты Справочники
· Произведения
· Книги (подчинен спр. Произведения)
· Читатели
· ЖанрыКниг
· Авторы Перечисления
· СтатусКниги (значения: Свободна, Выдана, Списана)
· ДаНет (значения: Да, Нет) Документы
· ВыдачаКниги
· ПродлениеКниги
· ВозвратКниги
· ПотеряКниги Журналы документов · Библиотека Отчеты
· БиблиотечнаяВыписка
· ДолгиЧитателя
Проектирование БД.
Для проектирования БД всистеме 1С: Предприятие используется конфигуратор- в этом режиме создается иликорректируется БД, программные модули. В таблице 2 подробно представлены всесправочники с реквизитами, которые потребуются для создания БД.
Таблица 2.№ n/n Справочники Реквизиты 1 Произведения
· Жанр
· Авторы
· Издание
· Год издания
· Число страниц
· Ключевые слова
· Аннотация 2 Книги
· Статус
· Читатель
· Дата выдачи
· Срок возврата 3 Читатель
· ФИО
· Блокирован
· Количество предупреждений 4 Жанры книг · Наименование жанра 5 Авторы · ФИО
В таблицах 3-7 описана подробнаяструктура справочников.
Таблица 3.Справочник «Произведения»№ Имя реквизита Тип значения 1 Жанр Справочник. ЖанрыКниг 2 Авторы Справочник. Авторы 3 Издание Число 4 Год издания Число 5 Число страниц Число 5 Ключевые слова Строка 7 Аннотация Строка
Таблица 4. Справочник «Книги»№ Имя реквизита Тип значения 1 Статус СтатусКниг. 2 Читатель Справочник. Читатели. 3 Дата Выдачи Дата 4 Срок Возврата Дата
Таблица 5. Справочник «Читатели»№ Имя реквизита Тип значения 1 ФИО Строка 2 Кол-во предупреждений Число 3 Блокирован Да Нет
Таблица 6. Справочник «ЖанрКниги»№ Имя реквизита Тип значения 1 Жанр Книги Строка
Таблица 7. Справочник «Авторы»№ Имя реквизита Тип значения 1 Авторы Строка
3. ОПИСАНИЕАВТОМАТИЗИРОВАННОГО РАБОЧЕГО МЕСТА
Разработка приложения.
Разработка приложениясостоит из нескольких частей.
· Интерфейс ввода/корректировка справочников, работа с документами.
· Составлениепечатных форм отчетов.
1. Интерфейсввода / корректировки справочников.
Интерфейс пользователяразработан в программной среде
1С: Предприятие.
При запуске программы1С: Предприятие, пользователь сразу попадает в диалог «Запуск 1С:Предприятия».
/>
Рис1. Диалог «Запуск1С: Предприятия».
В диалоге, информационнаябаза запускается в режиме 1С: Предприятие.
При запуске информационнойбазы сразу попадаем на главную форму. (Рис2).
/>
Рис2. Окно главного меню.
Для простоты обращенияинтерфейсы всех трех меню одинаковы.
Меню «Справочники».
При нажатие на меню «Справочник»,всплывает вспомогательное меню, в котором перечислены все используемысправочники программы. (Рис3.)
/>
Рис3. Меню «Справочник»
Все справочникипредставлены в виде таблицы, в которые можно добавлять, изменять данные иудалять данные. (Рис4).
/>
Рис4. Справочник «Читатели».
Для справочника «Произведение»создана форма элемента — вызывает редактор форм для создания формы вводаданных в справочник. (Рис5.)
/>
Рис5. Форма для вводаданных в справочник «Произведение».
Меню «Документы».
В меню «Документы»,представлены все документы, с которыми должен работать библиотекарь. Это документы:«Выдача книг», «Продление книги», «Возврат книги»,«Потеря книги». (Рис6.)
/>
Рис 6. Меню «Документы».
Для всех документовсозданы формы элемента, для удобного редактирования. (Рис7).
/>
Рис7. Форма элементадокумента «Выдача книги».
/>
Рис8. Форма элементадокумента «Продление книги».
/>
Рис9. Форма элементадокумента «Возврат книги».
/>
Рис10. Форма элементадокумента «Потеря книги».
Меню «Отчеты».
Отчеты предназначены длявывода информации из базы данных. У любого отчета в системе 1С: Предприятие естьэкранная форма.
/>
Рис11. Экранная формаотчета «Библиотечная выписка».
Библиотечная выписка,показывает все совершенные операции за заданный период. Можно выбрать операциитолько по указанному читателю и/или по указанной книге.
/>
Рис 12. Пример работыотчета «Библиотечная выписка».
В отчете «Долгичитателя», можно отследить задолжников.
/>
Рис 13. Экранная формаотчета «Долги читателя».
/>
Рис 14. Пример отчета «Долгичитателя».
4. ВЫВОД
В результатепроектирования были разработаны:
1. База данных, в которойописаны: наименование книг имеющихся в библиотечном фонде, читатели,пользующиеся услугами библиотеки.
2. Разработаны печатныеформы (отчеты).
3. Простой в применениеинтерфейс для пользователей.
5. ПРИЛОЖЕНИЕ
/>
Рис15. Справочник «Книги».
/>
Рис 16. Справочник «ЖанрыКниги».
/>
Рис17. Справочник «Авторы».
Текст программы:
Выдача Книги:
// ********************
//
ПроцедураОбработкаПроведения()
СпрКниги =создатьОбъект(«Справочник.Книги»);
ВыбратьСтроки();
Пока ПолучитьСтроку()=1Цикл
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус =Перечисление.СтатусКниги.Выдана;
СпрКниги.Читатель =Читатель;
СпрКниги.ДатаВыдачи =ДатаДок;
СпрКниги.СрокВозврата =СрокВозврата;
СпрКниги.Записать();
КонецЦикла;
КонецПроцедуры
Продление Книги:
// ********************
//
Процедура ОбработкаПроведения()
СпрКниги =создатьОбъект(«Справочник.Книги»);
ВыбратьСтроки();
Пока ПолучитьСтроку()=1Цикл
ЕслиЧисло(НовыйСрокВозврата)0 Тогда
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.СрокВозврата =НовыйСрокВозврата;
СпрКниги.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Продление книги:
// ********************
//
ПроцедураОбработкаПроведения()
СпрКниги =создатьОбъект(«Справочник.Книги»);
СпрЧитатели =СоздатьОбъект(«Справочник.Читатели»);
ВыбратьСтроки();
Пока ПолучитьСтроку()=1Цикл
СпрКниги.НайтиЭлемент(Книга);
ЕслиСпрКниги.СрокВозврата
СпрЧитатели.НайтиЭлемент(Читатель);
СпрЧитатели.КоличествоПредупреждений=
СпрЧитатели.КоличествоПредупреждений+ 1;
СпрЧитатели.Записать();
Если СпрЧитатели.КоличествоПредупреждений>
Константа.МаксКолвоПредупрежденийТогда
УстановитьРеквизитСправочника(Читатель,«Блокирован», Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель,«Блокирован», Перечисление.ДаНет.Нет, ДатаДок +
Константа.КолвоДнейБлокировки);
КонецЕсли;
КонецЕсли;
СпрКниги.Статус =Перечисление.СтатусКниги.Свободна;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата =0;
СпрКниги.Записать();
КонецЦикла;
КонецПроцедуры
Потеря книги:
// ********************
//
ПроцедураОбработкаПроведения()
СпрКниги =создатьОбъект(«Справочник.Книги»);
ВыбратьСтроки();
Пока ПолучитьСтроку()=1Цикл
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус =Перечисление.СтатусКниги.Списана;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата =0;
СпрКниги.Записать();
КонецЦикла;
УстановитьРеквизитСправочника(Читатель,«Блокирован», Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель,«Блокирован», Перечисление.ДаНет.Нет, ДатаДок +
Константа.КолвоДнейБлокировки);
КонецПроцедуры
Отчеты. Библиотечнаявыписка.
//---------------------
//ДокументыПродлениеКниги
//---------------------
Запрос =создатьОбъект(«Запрос»);
ТекстЗапроса = "
|Период С НачДата ПоКонДата;
|ОбрабатыватьДокументыПроведенные;
|Док =
Документ.ПродлениеКниги.Текущий//*******************************************
Процедура Сформировать()
тз =создатьОбъект(«ТаблицаЗначений»);
тз.НоваяКолонка(«Дата»);
тз.НоваяКолонка(«ТипОперации»);
тз.НоваяКолонка(«Читатель»);
тз.НоваяКолонка(«Книга»);
тз.НоваяКолонка(«СрокВозврата»);
//---------------------
//Документы ВыдачаКниги
//---------------------
Запрос =создатьОбъект(«Запрос»);
ТекстЗапроса = "
|Период С НачДата ПоКонДата;
|ОбрабатыватьДокументыПроведенные;
|Док =Документ.ВыдачаКниги.ТекущийДокумент;
|Читатель = Документ.ВыдачаКниги.Читатель;
|Книга =Документ.ВыдачаКниги.Книга;
|СрокВозврата =Документ.ВыдачаКниги.СрокВозврата;
|Группировка Книга;
|Условие (Читатель вВыбрЧитатель);
|Условие (Книга вВыбрКнига);
|";
ЕслиЗапрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;
ПокаЗапрос.Группировка(1)=1 Цикл
Док = Запрос.Док;
тз.НоваяСтрока();
тз.Дата = Док.ДатаДок;
тз.ТипОперации =Док.Вид();
тз.Читатель =Запрос.Читатель;
тз.Книга = Запрос.Книга;
тз.СрокВозврата =Запрос.СрокВозврата;
КонецЦикла;
Документ;
|Читатель =Документ.ПродлениеКниги.Читатель;
|Книга =Документ.ПродлениеКниги.Книга;
|НовыйСрокВозврата =
Документ.ПродлениеКниги.НовыйСрокВозврата;
|Группировка Книга;
|Условие (Читатель вВыбрЧитатель);
|Условие (Книга вВыбрКнига);
|";
Если Запрос.Выполнить(ТекстЗапроса)=0Тогда
Возврат;
КонецЕсли;
ПокаЗапрос.Группировка(1)=1 Цикл
Док = Запрос.Док;
тз.НоваяСтрока();
тз.Дата = Док.ДатаДок;
тз.ТипОперации =Док.Вид();
тз.Читатель =Запрос.Читатель;
тз.Книга = Запрос.Книга;
тз.СрокВозврата =Запрос.НовыйСрокВозврата;
КонецЦикла;
//---------------------
//Документы ВозвратКниги
//---------------------
Запрос =создатьОбъект(«Запрос»);
ТекстЗапроса = "
|Период С НачДата ПоКонДата;
|ОбрабатыватьДокументыПроведенные;
|Док =Документ.ВозвратКниги.ТекущийДокумент;
|Читатель =Документ.ВозвратКниги.Читатель;
|Книга =Документ.ВозвратКниги.Книга;
|Группировка Книга;
|Условие (Читатель вВыбрЧитатель);
|Условие (Книга вВыбрКнига);
|";
ЕслиЗапрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка(1)=1Цикл
Док = Запрос.Док;
тз.НоваяСтрока();
тз.Дата = Док.ДатаДок;
тз.ТипОперации =Док.Вид();
тз.Читатель =Запрос.Читатель;
тз.Книга = Запрос.Книга;
КонецЦикла;
//---------------------
//Документы ПотеряКниги
//---------------------
Запрос = создатьОбъект(«Запрос»);
ТекстЗапроса = "
|Период С НачДата ПоКонДата;
|ОбрабатыватьДокументыПроведенные;
|Док =Документ.ПотеряКниги.ТекущийДокумент;
|Читатель =Документ.ПотеряКниги.Читатель;
|Книга =Документ.ПотеряКниги.Книга;
|Группировка Книга;
|Условие (Читатель вВыбрЧитатель);
|Условие (Книга вВыбрКнига);
|";
ЕслиЗапрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;
ПокаЗапрос.Группировка(1)=1 Цикл
Док = Запрос.Док;
тз.НоваяСтрока();
тз.Дата = Док.ДатаДок;
тз.ТипОперации =Док.Вид();
тз.Читатель = Запрос.Читатель;
тз.Книга = Запрос.Книга;
КонецЦикла;
тз.Сортировать(«Дата+»);
Таб =создатьОбъект(«Таблица»);
Таб.ВывестиСекцию(«Все
тз.ВыбратьСтроки();
НомПП = 0;
Покатз.ПолучитьСтроку()=1 Цикл
НомПП = НомПП + 1;
Таб.ВывестиСекцию(«Строка»);
КонецЦикла;
Таб.ВывестиСекцию(«Все>»);
Таб.Опции(0);
Таб.Показать();
КонецПроцедуры
НачДата =НачМесяца(РабочаяДата());
КонДата =КонМесяца(РабочаяДата());
Долги читателя
//*******************************************
Процедура Сформировать()
Таб =создатьОбъект(«Таблица»);
Таб.ВывестиСекцию(«Все
НомПП = 0;
СпрКниги =создатьОбъект(«Справочник.Книги»);
СпрКниги.ВыбратьЭлементыПоРеквизиту(«Читатель», ВыбрЧитатель,0,0);
ПокаСпрКниги.ПолучитьЭлемент()=1 Цикл
НомПП = НомПП + 1;
Таб.ВывестиСекцию(«Книга»);
КонецЦикла;
Таб.ВывестиСекцию(«Все>»);
Таб.Показать();
КонецПроцедуры