В начало

Проверка выданных книг, вариант 2

           

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

Рис. Отчет по выданным книгам

Рис. Отчет по выданным книгам

 

            Для проверки правильности данных при возврате книг, в модуле документа «Возврат книг» необходимо заполнить дефолтную процедуру «Перед записью». В этой процедуре нужно с помощью запроса получить книги и количество, выданные конкретному читателю, после чего сравнить их с теми, что читатель пытается вернуть при помощи документа «Возврат книг». Таким образом, нужно организовать 1 запрос и 2 цикла. Внешний цикл по выборке результата запроса, а внутренний по строкам табличной части документа «Возврат книг».

 

Листинг. Процедура «Перед записью»

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

            

       Запрос = Новый Запрос;

       Запрос.Текст =

       "ВЫБРАТЬ

       |      КнигиУЧитателейОстатки.Книга,

       |      КнигиУЧитателейОстатки.КоличествоОстаток КАК Количество

       |ИЗ

       |      РегистрНакопления.КнигиУЧитателей.Остатки КАК КнигиУЧитателейОстатки

       |ГДЕ

       |      КнигиУЧитателейОстатки.Читатель = &Читатель";

            

       Запрос.УстановитьПараметр("Читатель", Читатель);

       РезультатЗапроса = Запрос.Выполнить();

      

       Выборка= РезультатЗапроса.Выбрать();

      

       Пока Выборка.Следующий() Цикл

             Для Каждого Стр Из Книги Цикл

             Если  Выборка.Книга = Стр.Книга И

                   Стр.Количество >  -Выборка.Количество Тогда

                    Сообщить("Книга '" + Выборка.Книга +

                    "' была взята в меньшем количестве, а именно: "+

                    -Выборка.Количество + " шт.");

               Отказ = Истина;

             КонецЕсли;  

             КонецЦикла;

       КонецЦикла;

      

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

           

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

 

 Рис. Попытка вернуть большее количество книг

Рис. Попытка вернуть большее количество книг

 

Существенным минусом, а может и нет является то, что хотя читатель не может вернуть книг больше чем брал того же наименования, он может сдать книги в библиотеку, которые у него вообще не числятся. Далее показан пример как бы возврата, но на самом деле выдачи книг библиотеке. Документ проводится и таким образом уже библиотека должна читателю 10 книг по дипломному проектированию

 

Рис. Возврат книг которые вообще не брал

 

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