Персонализация ввода с помощью метода 17
Пользователь:
Alio (IP-адрес скрыт)
Дата: 24, June, 2019 12:11
Часто возникает задача: сделать так, чтобы РАЗНЫЕ пользователи (каталогизаторы) при вводе в одно и то же поле/подполе использовали РАЗНЫЕ справочники или словари.
Есть очевидное и весьма кропотливое решение, связанное с созданием РАЗНЫХ РЛ полей/подполей для РАЗНЫХ пользователей.
И есть неочевидное и весьма простое решение этой задачи, связанное с использованием метода ввода с кодом 17.
Вот как этот метод ввода описан в документации:
-------------------------------
17. ДИНАМИЧЕСКИЙ (ПЕРЕМЕННЫЙ) МЕТОД ВВОДА. Суть метода заключается в том, что в зависимости от содержания текущей записи и текущего (вводимого) поля "на лету" предлагается ДРУГОЙ метод ввода.
В качестве ДОП.ИНФОРМАЦИИ для этого метода указывается формат (непосредственный формат или имя формата с предшествующим символом "@").
При вызове данного метода ввода (при нажатии соответствующей кнопки) происходит следующее:
Текущая запись подвергается форматированию по заданному формату. При этом в текущую запись вносится модельное поле (метка 1001), которое имеет значение ТЕКУЩЕГО (вводимого повторения) поля. Результатом форматирования является конструкция:
<код_метода_ввода>,<доп.информация>
и непосредственно ввод осуществляется с помощью другого (сформированного на лету) метода ввода.
Сформированный таким образом метод ввода может иметь любые значения, кроме: 7 (ввод через переключатель), 9 (ввод через маску) и 5 (ввод через WSS - в случае ввода подполя) и, разумеется, 17.
Результатом форматирования может быть и другая конструкция:
@<текст_сообщения>
В этом случае никакой метод ввода не вызывается, а выдается соответствующее сообщение.
------------------------------
Приведем пример использования этого метода ввода для решения нашей задачи (пример пользователя levaleva).
Необходимо, чтобы при вводе поля 51 (ДАТА ЗАПИСИ) в БД RDR разные пользователи использовали разные справочники при формировании подполя ОТДЕЛ ОБСЛУЖИВАНИЯ/КНИГОВЫДАЧИ.
1. Создадим для каждого пользователя индивидуальный справочник отделов книговыдачи, взяв за основу KV.MNU (в папке DEPOSIT), используемый по умолчанию:
kvlogin1.mnu
kvlogin2.mnu
kvlogin3.mnu
....
где loginX - логины соответствующих пользователей.
2. В РЛ подполей, используемом для формирования поля 51 (rdrdp.wss), - с помощью Редактора РЛ и справочников - для подполя ОТДЕЛ ОБСЛУЖИВАНИЯ/КНИГОВЫДАЧИ (C) укажем:
- в качестве РЕЖИМ ВВОДА - !17 (восклицательный знак для того, чтобы сделать способ ввода с помощью справочника обязательным)
- в качестве ДОП ИНФ-ЦИЯ явный формат - '1,kv',&uf('IPRIVATE,FIO,'),'.mnu'
в котором используется юнифор, возвращающий логин пользователя.
При работе пользователя
с логином login1 формат даст значение - 1,kvlogin1.mnu
с логином login2 формат даст значение - 1,kvlogin2.mnu
и т.д.
Таким образом наша задача решена с минимальными затратами.
Редактировано 1 раз. Последний раз 24.06.2019 17:05 пользователем Alio.