Текущее время: 16 июл 2019, 11:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 18 мар 2019, 17:17 
Не в сети

Зарегистрирован: 16 фев 2016, 12:16
Сообщения: 1
Модификация:
- При регистрации читателя идет автоматическая выдача номера чит.билета;
- Блокировка кнопки "Создать" от повторного нажатия.

Очень не удобно вводить номер читательского билета руками (для нас).
Минусы этого:
- Ввод ошибочного номера (человеческий фактор)
- При нескольких филиалах (точек регистрации) возможен ввод номера, который уже был введен в другом филиале.

В первом случае, возможны ошибки ввода в виде пробела (как вариант, тогда в строке "Последний номер читательского билета" всегда будет отображаться номер с пробелом), разных других символов. Из-за того, что возможен ввод любого числа, очень часто при человеческом факторе меняется разрядность номера читательского билета (например вместо 1724 вводят 17244).

В втором случае, ошибки столкновения номеров и перебор в поиске свободного. Из практики: 11 филиалов, начинают регистрацию своих читателей, где-то сотрудник отвлекся при заполнении формы, а когда все сделал и нажал "Создать" получает сообщение, что Номер читательского билета уже занят. Сотруднику приходится руками менять номер на "старый номер + 1" и снова пытаться нажать Создать. Данные манипуляции повышают вероятность возникновения ошибок первого случая =).

Поэтому были модернизированы файлы регистрации для автоматической выдачи минимального свободного номера читательского билета, а так же для блокировки кнопки "Создать" от повторных нажатий.


1. В модуле Администрирование:
Настройка системы -> ReaderData, необходимо выставить атрибут readOnly="true" для поля RDR_ID.

2. Код с запросом к БД для CallBack файла MegaPro\Areas\Registry\Views\Shared\cbReaderSaving
Код:
@* Выборка свободного номера читательского билета *@
    if(qr["RDR_ID"].Trim().IsOff())
    {
      string nextn = QRow.GetString("SELECT DISTINCT rdr_id +1 as empty_rdrid FROM readers WHERE rdr_id + 1 NOT IN (SELECT DISTINCT rdr_id FROM readers) ORDER BY empty_rdrid OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
      qr.Set("RDR_ID", nextn);
        return;
    }


2. Код для файла c формой регистрации - MegaPro\Areas\Registry\Views\Readers\Form
Необходимо заменить JavaScript функцию PostRdrData на:
Код:
function PostRdrData(evt) {
   $(".breg").prop("onclick", null).off("click");
        evt.preventDefault();
        $(GetTarget(evt)).blur();
        str = $("#rdrdata").serialize();
        var action = "@(rdrId.IsOff() ? "CreateReader" : "UpdateReader")";
        var data = jpost(action, { rdrData: str });
        if(data)
        {
            if(typeof data === 'object')
            {
                toAction("Form", "Readers", "", "id=" + data.rdrId);
            }
            popupMessage(data);
       $(".breg").click(PostRdrData).on("click");
        }
    }


Очень долго подбирал "быстрый" запрос к БД. Сейчас вроде оптимален и у меня выполняется менее чем за 1 секунду (при более 18000 записей в таблице READERS).

Делал у себя давно. Выложил вроде все необходимые изменения для правильной работы.

Претендует на включение в следующие версии МегаПРО, наверное... =)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 мар 2019, 18:08 
Не в сети

Зарегистрирован: 20 авг 2015, 10:33
Сообщения: 29
Добрый день, уважаемый коллега!
Постараемся учесть Ваши предложения и рекомендации в новых версиях МегаПро. Спасибо!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB