Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис    FTP-сервер
АРМ Администратор :  ИРБИС Irbis
 
Персонализация ввода с помощью метода 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.

Re: Персонализация ввода с помощью метода 17
Пользователь: Alio (IP-адрес скрыт)
Дата: 25, June, 2019 11:10

Для тех, кого это заинтересовало, задачка:
Как, пользуясь этим методом, сделать так, чтобы определенный пользователь не имел права вводить/корректировать данные определенного поля/подполя?

Или сложнее:
Как, пользуясь этим методом, сделать так, чтобы определенный пользователь не имел права КОРРЕКТИРОВАТЬ данные определенного поля/подполя, а ВВОДИТЬ имел право?



Редактировано 1 раз. Последний раз 25.06.2019 11:13 пользователем Alio.

Re: Персонализация ввода с помощью метода 17
Пользователь: Gena (IP-адрес скрыт)
Дата: 25, June, 2019 12:08

Как-то так?

if &uf('iprivate,fio')='XXX' then if v1001='' then '2,kv.mnu' else '!' fi fi

AVD System, Техническая поддержка, [www.open4u.ru]

Re: Персонализация ввода с помощью метода 17
Пользователь: Alio (IP-адрес скрыт)
Дата: 25, June, 2019 12:21

Gena написал(а):
-------------------------------------------------------
> Как-то так?
>
> if &uf('iprivate,fio')='XXX' then if v1001='' then
> '2,kv.mnu' else '!' fi fi
Нет.

Re: Персонализация ввода с помощью метода 17
Пользователь: Gena (IP-адрес скрыт)
Дата: 07, October, 2019 09:00

Александр Иосифович, добрый день! Скажите, можно ли в рабочем листе полей использовать метод ввода 17 для подключения разным пользователям персональных рабочих листов подполей? В документации говориться:

Сформированный таким образом метод ввода может иметь любые значения, кроме: 7 (ввод через переключатель), 9 (ввод через маску) и 5 (ввод через WSS - в случае ввода подполя) и, разумеется, 17.

Из пояснения получается, что метод ввода 5 нельзя использовать в подполях. А в полях?

AVD System, Техническая поддержка, [www.open4u.ru]

Re: Персонализация ввода с помощью метода 17
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 07, October, 2019 09:40

Цитата:
Alio
Для тех, кого это заинтересовало, задачка:
Как, пользуясь этим методом, сделать так, чтобы определенный пользователь не имел права вводить/корректировать данные определенного поля/подполя?
В РЛ
Режим ввода: !17
Доп. информация: @format
Содержимое формата format.pft:
if &uf('IPRIVATE,FIO')='LOGIN' then '@Вы лишены права ввода/корректировки!' else '0' fi

Re: Персонализация ввода с помощью метода 17
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 07, November, 2019 15:44

Александр Иосифович, а как использовать метод ввода 17 в случае с повторяющимся полем 304: ^AОтдел^BОтветственный.
Для ^B написала метод ввода 17 и '1,fio'v304^a'.mnu\\1'

Это работает в том случае, если поле 304 не повторяемое. А как сделать так, чтобы в повторяемом поле в подполе ^B предлагался свой справочник в зависимости от введенного значения в ^A. ^A в разных повторениях поля 304 различное.

Re: Персонализация ввода с помощью метода 17
Пользователь: Alio (IP-адрес скрыт)
Дата: 07, November, 2019 16:17

Милана А. написал(а):
-------------------------------------------------------
> Александр Иосифович, а как использовать метод
> ввода 17 в случае с повторяющимся полем 304:
> ^AОтдел^BОтветственный.
> Для ^B написала метод ввода 17 и
> '1,fio'v304^a'.mnu\\1'
Неправильно. Еще раз прочтите релиз и обратите внимание на модельное поле 1001...

>
> Это работает в том случае, если поле 304 не
> повторяемое. А как сделать так, чтобы в
> повторяемом поле в подполе ^B предлагался свой
> справочник в зависимости от введенного значения в
> ^A. ^A в разных повторениях поля 304 различное.

Re: Персонализация ввода с помощью метода 17
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 08, November, 2019 09:54

Спасибо. Разобралась. Иногда нужно задать вопрос кому-то другому, чтобы понять очевидное.



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.