Посоветуйте как можно ограничить доступ к конкретному полю, чтобы внесли туда значение и его нельзя было поменять.
Например: Есть поле Расчетное время (План) туда заносятся часы.
При редактировании его опять же можно поменять, а нужно его после нажатии кнопки сохранить чтобы оно было не редактируемым но при этом видном.
Спасибо.
Доступ к полям
- Oleg
- Сообщения: 464
- Зарегистрирован: 26 окт 2018, 08:23
- Имя: Олег Родионов
- Откуда: Россия,Санкт-Петербург
Доступ к полям
Установка и настройка IP ATC Asterisk
- support
- Техническая поддержка
- Сообщения: 7661
- Зарегистрирован: 19 окт 2014, 18:22
- Имя: Харчишин Сергей
- Откуда: Крым, Евпатория
Re: Доступ к полям
Можно просто разрешить только добавление записи.
- alcompstudio
- Спонсор

- Сообщения: 1519
- Зарегистрирован: 03 янв 2016, 20:42
- Имя: Александр
- Откуда: Мир
Re: Доступ к полям
Через автоматизацию действий можно. Назначаете процесс добавления записи на кнопку, где пользователь вносит в это поле значение. А в самом доступе (конфигурации сущностей), например, даете этому пользователю доступ только на просмотр.
- Oleg
- Сообщения: 464
- Зарегистрирован: 26 окт 2018, 08:23
- Имя: Олег Родионов
- Откуда: Россия,Санкт-Петербург
Re: Доступ к полям
Это на всю сущность, а нужно на отдельное поле, в доступе к полям только "Да", "Только просмотр", "Скрыть".
Или может я туплю, поправьте если не так. Остальные поля редактируются по мере выполнения задания.
Установка и настройка IP ATC Asterisk
Re: Доступ к полям
Два варианта решения (плюс их комбинации
)
Первый. Требует Дополнения. Попроще.
Как уже писали выше, используем Автоматизацию.
1. Доступ к полю с датой ставим для всех Только просмотр. Далее, если поле имеет тип Числовое поле, то значение по умолчанию =1 (далее в примере настройки фильтра для данного типа поля. Если тип поля другой, то подстраиваемся).
2. В Дополнении-Автоматизация к нужной сущности добавляем кнопку "Задать расчетное время" с соответствующими уровнями доступа к кнопке и пр. В фильтрах кнопку устанавливаем 1 фильтр <Поле со временем>="0".
3. Если для каких-то групп пользователей редактирование даты будет нужно (например для переноса срока исполнения), то создаем такую же кнопку, указываем тех, кто сможет редактировать (переносить сроки исполнения. Можно даже персонально). Фильтр делаем на то же поле, но "!=0".
4. В действиях и там и там делаем только редактирование одного поля с вводом его вручную.
Работает очень просто. При создании или редактировании записи поле со расчетным временем не будет доступно никому (кроме Админа
). Т.о. задать расчетное время можно будет ТОЛЬКО после сохранения самой записи, используя добавленную кнопку. В зависимости от наличия/отсутствия времени в указанному поле, будет отображаться та или иная кнопка. Вторую кнопку можно обозвать "Изменить расчетное время", что бы не путаться, да и название более подходящее.
В большинстве случаев - это самый оптимальный вариант.
Можно забрать доступ на редактирование вовсе и разнести редактирование записи по разным кнопкам (правда не все типы полей доступны в автоматизации). В общем здесь по потребностям и возможностям.
Второй вариант. Не требует Дополнения. Но требует продвинутых знаний работы Руководителя. Очень замудрённый. Но более гибкий (ИМХО).
Работает через Правила доступа + поле Автоматический статус (если еще не задействовали этот функционал):
1. Добавляем поле типа MySQL-формула с настройками:
ВНИМАНИЕ! Данная формула производит проверку только на Пустое значение указанном в поле. Т.о., если в поле будет стоять 0 или -1, например, будет считаться, что поле заполнено и правило сработает, и в этом случае нужен дополнительный обработчик. Но данную формулу можно использовать и с текстовыми полями.
Доступ к полю: т.к. поле служебное, то скрываем от всех групп пользователей
2. Добавляем поле типа Автоматический статус.
Два статуса:
Доступ к полю: здесь по желанию: можно скрывать, можно оставить - зависит от ситуации.
Более подробно про данный тип поля можно посмотреть здесь.
3. Доступ => Правила доступа => Добавить поле
Выбираем поле: Наличие Расчетного времени
Добавляем правило со следующими настройками:
Выберите значение поля: "Расчетное время есть"
Группа пользователей: <Группа (-ы), которым необходимо изменить уровень доступа>
Доступ: <В зависимости от потребностей>
Только просмотр: <Здесь поле с расчетным временем>
Доступ к комментариям: <В зависимости от потребностей>
Более подробно про доступы можно посмотреть здесь (в конце страницы).
Теперь как это работает.
1. При сохранении записи (добавление новой или редактирование имеющейся) происходит проверка наличия времени в указанном поле.
2. Если время отсутствует, то значение поля из п.1 равно нулю и поле из п.2 принимает статус "Нет расчетного времени". В этом случае уровни доступа работают так, как настроено в разделах Доступ-Настройка доступа и Доступ-Доступ к полям.
3. Если же время присутствует, то значение поля из п.1 равно единице и поле из п.2 принимает статус "Расчетное время есть". В этом случае уровни доступа работают так, как настроено в разделе Доступ-Правила доступа.
При такой модели можно ограничить не только доступ к одному полю, но и к нескольким, в зависимости от статуса (статусов можно сделать больше). К тому же доступ можно ограничивать определенным группам пользователей (например только Исполнителям).
Если в формуле использовать функцию get_value(), то можно проверять выпадающие списки (если список один, то можно управлять доступом опираясь на этот самый список
). Можно использовать поле MySQL-запрос (и даже в текущем примере) и проверять вообще любые поля. Если настроить cron, то можно проверять разницу во времени (например, до даты исполнения доступ на редактирование поля закрыт, но в день исполнения или на следующий доступ открываем для переноса даты, ну и проверяем, не закрыта ли задача уже). Можно подключать вложенные сущности, или родительскую. В общем полет фантазии большой.
Если не хочется возиться с настройками доступа, или не получается, то можно комбинировать оба метода, создавая по несколько кнопок для разных ситуаций.
В любом случае главное правило на этом этапе (ИМХО для любой подобной системы): чем раньше определились с уровнями доступа (Группами доступа), тем меньше потом переделывать
. Или сразу начинать записывать, где и как использовались Группы доступа, что бы при добавлении новой Группы доступа не возникало лишних вопросов от пользователей.
Первый. Требует Дополнения. Попроще.
Как уже писали выше, используем Автоматизацию.
1. Доступ к полю с датой ставим для всех Только просмотр. Далее, если поле имеет тип Числовое поле, то значение по умолчанию =1 (далее в примере настройки фильтра для данного типа поля. Если тип поля другой, то подстраиваемся).
2. В Дополнении-Автоматизация к нужной сущности добавляем кнопку "Задать расчетное время" с соответствующими уровнями доступа к кнопке и пр. В фильтрах кнопку устанавливаем 1 фильтр <Поле со временем>="0".
3. Если для каких-то групп пользователей редактирование даты будет нужно (например для переноса срока исполнения), то создаем такую же кнопку, указываем тех, кто сможет редактировать (переносить сроки исполнения. Можно даже персонально). Фильтр делаем на то же поле, но "!=0".
4. В действиях и там и там делаем только редактирование одного поля с вводом его вручную.
Работает очень просто. При создании или редактировании записи поле со расчетным временем не будет доступно никому (кроме Админа
В большинстве случаев - это самый оптимальный вариант.
Можно забрать доступ на редактирование вовсе и разнести редактирование записи по разным кнопкам (правда не все типы полей доступны в автоматизации). В общем здесь по потребностям и возможностям.
Второй вариант. Не требует Дополнения. Но требует продвинутых знаний работы Руководителя. Очень замудрённый. Но более гибкий (ИМХО).
Работает через Правила доступа + поле Автоматический статус (если еще не задействовали этот функционал):
1. Добавляем поле типа MySQL-формула с настройками:
Код: Выделить всё
Имя: Проверка наличия Расчетного времени
Формула: IF(IFNULL([2058],0)=0,0,1))
Формат отображения числа: <пустой>
Остальное без изменений.
Здесь [2058] - id поля с Расчетным временемДоступ к полю: т.к. поле служебное, то скрываем от всех групп пользователей
2. Добавляем поле типа Автоматический статус.
Код: Выделить всё
Имя: Наличие Расчетного времениКод: Выделить всё
1. Нет расчетного времени. Фильтры:
1. Поле "Проверка наличия даты" = 0
2. Расчетное время есть. Фильтры:
1. Поле "Проверка наличия даты" = 1Более подробно про данный тип поля можно посмотреть здесь.
3. Доступ => Правила доступа => Добавить поле
Выбираем поле: Наличие Расчетного времени
Добавляем правило со следующими настройками:
Выберите значение поля: "Расчетное время есть"
Группа пользователей: <Группа (-ы), которым необходимо изменить уровень доступа>
Доступ: <В зависимости от потребностей>
Только просмотр: <Здесь поле с расчетным временем>
Доступ к комментариям: <В зависимости от потребностей>
Более подробно про доступы можно посмотреть здесь (в конце страницы).
Теперь как это работает.
1. При сохранении записи (добавление новой или редактирование имеющейся) происходит проверка наличия времени в указанном поле.
2. Если время отсутствует, то значение поля из п.1 равно нулю и поле из п.2 принимает статус "Нет расчетного времени". В этом случае уровни доступа работают так, как настроено в разделах Доступ-Настройка доступа и Доступ-Доступ к полям.
3. Если же время присутствует, то значение поля из п.1 равно единице и поле из п.2 принимает статус "Расчетное время есть". В этом случае уровни доступа работают так, как настроено в разделе Доступ-Правила доступа.
При такой модели можно ограничить не только доступ к одному полю, но и к нескольким, в зависимости от статуса (статусов можно сделать больше). К тому же доступ можно ограничивать определенным группам пользователей (например только Исполнителям).
Если в формуле использовать функцию get_value(), то можно проверять выпадающие списки (если список один, то можно управлять доступом опираясь на этот самый список
Если не хочется возиться с настройками доступа, или не получается, то можно комбинировать оба метода, создавая по несколько кнопок для разных ситуаций.
В любом случае главное правило на этом этапе (ИМХО для любой подобной системы): чем раньше определились с уровнями доступа (Группами доступа), тем меньше потом переделывать
- Oleg
- Сообщения: 464
- Зарегистрирован: 26 окт 2018, 08:23
- Имя: Олег Родионов
- Откуда: Россия,Санкт-Петербург
Re: Доступ к полям
Это не совсем то, что нужно, проще было бы если бы Сергей сделал доступ к полям так же как и на сущности.
Установка и настройка IP ATC Asterisk