В начало

Проверка возвращаемых книг из общего модуля

           

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

            Заходим в общий модуль «Проверка данных» и пишем функцию для проверки ранее выданных книг. Функция проверяет количество имеющихся у конкретного читателя книг и выдает в зависимости от проверки текстовые сообщения:

Пустую строку

Если все в порядке

Вы данную книгу не брали

Если у читателя нет запрашиваемой книг

Вы брали книгу […] в меньшем количестве …

При попытке сдать чужие книги

 

Листинг. Функция «Проверка возвращаемых книг»

&НаСервере

Функция ПроверкаВозвращаемыхКниг(Дата, Читатель, Книга, Количество) Экспорт

      Результат = "";

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

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

      "ВЫБРАТЬ

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

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

      |ИЗ

      |     РегистрНакопления.КнигиУЧитателей.Остатки(&Дата, )

КАК КнигиУЧитателейОстатки

      |ГДЕ

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

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

     

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

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

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

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

     

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

     

      Если Выборка.Следующий() Тогда

            Если Выборка.Количество < Количество Тогда

                  Результат = "Вы брали книгу [" + Книга +

                              "] в меньшем количестве: " +

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

            КонецЕсли;

      Иначе

            Результат = "Книгу [" +

                        Книга + "] Вы не брали";

      КонецЕсли;

      Возврат Результат;

КонецФункции

           

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

 

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

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

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

      РезультатПроверки = ПроверкаДанных.ПроверкаВозвращаемыхКниг(ТекущаяДата(), Читатель, Стр.Книга, Стр.Количество);

      Если РезультатПроверки <> "" Тогда

            Сообщить(РезультатПроверки);

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

      КонецЕсли;

      КонецЦикла;

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

 

 

            Например, сейчас в библиотеке имеется количество книг показанное ниже с помощью отчета «Книги в библиотеке», т.е. 5 наименований по 100 штук для наглядности.

Рис. Отчет «Книги в библиотеке»

Рис. Отчет «Книги в библиотеке»

 

            Далее некий читатель берет книжки.

 

Рис. Документ «Выдача книг»

Рис. Документ «Выдача книг»

 

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

 

Рис. Документ «Возврат книг»

Рис. Документ «Возврат книг»

 

            ПИМЕЧАНИЕ: процедуры проверены на версии 8.3, управляемое приложение, интерфейс «Такси».