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;
Таб.ВывестиСекцию("Книга");
КонецЦикла;
Таб.ВывестиСекцию("Все>");
Таб.Показать();
КонецПроцедуры