Есть раздел, в нем деталь. Как запретить добавление детали в зависимости от значения поля раздела? Вот здесь описано как сделать на клиенте а здесь как на сервере, но не могу понять как достучаться до конкретного элемента раздела где отображается деталь и надо сделать запрет, как получить значения поля в контексте BaseGridDetailV2 или во встроенном БП процеса?

Нравится

3 комментария

В baseGridDetail поищите что-то вроде this.sandbox.publish("GetColumnsValues", ...

запрос позволяет тянуть данные аттрибутов со страницы. Ну а дальше в addRecord-методе ветвите логику как хотите

 

В целом работа с песочницей описана здесь.

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

Показать все комментарии

Добрый день!

Подскажите, в подробном описание, как и куда вставить скрипт из этой темы: https://community.terrasoft.ru/forum/topic/6990 из сообщения #6 Alimova Anna.

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

Далее то же самое требуется в карточке контакта, думаю это будет по аналогии с контрагентом?

Нравится

13 комментариев

Здравствуйте, Игорь!

в скрипте карточки есть обработчик события OnPrepare. Для карточки Контрагент это функция function wnd_AccountEditOnPrepare(Window) в скрипте scr_AccountEdit

В конец данной функции требуется вставить вызов процедуры IsOwnerAvailable();

onprepare

А саму процедуру можно дописать в конец скрипта.

Благодарю Анна!
В целом я так раньше это все и делал, единственное отличие - саму процедуру вставлял перед ее вызовом.
Проблема не решена, видимо в процедуре необходимо изменить данные под себя?
Подскажите что можно менять в самой процедуре и требуется ли изменение этой процедуры для вставки ее в карточку контактов?

Процедура написана таким образом, что если залогиненный пользователь - администратор системы, поле доступно для редактирования.

Возможно, поэтому у Вас не получается произвести тестирование.

Обратил внимание на скрин-шот функции приведенной вами, она отличается от нашей, на всякий случай ниже пример функции, которая работает у нас:

function wnd_AccountEditOnPrepare(Window) {
    //IsOwnerAvailable();
	Initialize();
   	wnd_BaseDBEditOnPrepare(Window);
/* PRODUCT XRM */
   	InitializeNowBalance(Window);
   	InitializePostponementPayment(Window);
/* ENDPRODUCT XRM */
   	InitAccountInfo();
   	IsOwnerAvailable();
/* PRODUCT XRM */
   	UpdateAccountBasicCurrencyCaptions();
/* ENDPRODUCT XRM */
}

тестирую под пользователем.

тестирую работу под обычным пользователем,
на самом деле в админке закрыто поле основного контакта, это может являться причиной неработоспособности скрипта?

да и про админов, мне так и нужно, что бы только админы могли редактировать это поле.

я извиняюсь, ответить смогу уже только завтра, из-за разницы во времени мой рабочий день уже давно закончился)))

Добрый день!

Скрипт до сих пор не работает, кто поможет?

Здравствуйте, Игорь!

Скрипт работает следующим образом:

делает недоступным для редактирования поле Ответственный в карточке.

В случае, если поле недоступно для редактирования на уровне базы данных (в администрировании для текущего пользователя либо группы, в которую он входит, установлен признак только чтение), тогда изменение состояния поля в карточке никак не повлияет на уровень доступа к полю.

Опишите, пожалуйста, какие у Вас уровни доступа на данный момент, и какая задача стоит перед Вами.

"Березин Игорь Викторович" написал:
Проблема не решена, видимо в процедуре необходимо изменить данные под себя?

Что конкретно не работает? Поле остается доступным для редактирования? Или является недоступным всегда, и ответственный не подставляется?

Здравствуйте Анна!

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

В данный момент, после вставки процедуры и ее вызова, ни каких изменений в системе не происходит.

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

Анна ну как там дела с нашим скриптом?

Игорь,

если Вам нужно сделать поле недоступным для редактирования для всех, кроме администраторов, тогда Вам вообще можно ограничиться следующей конструкцией:

edtOwner.IsEnabled = Connector.CurrentUser.IsAdmin; 

вместо вызова функции IsOwnerAvailable();

Анна огромное вам спасибо!
Все заработало, решение оказалось проще чем я мог предположить.
Вы очень помогли еще раз благодарю.
Это мое первое обращение к вам, систему тех. поддержки понял, за ответ на почту отдельное спасибо, буду продолжать осваивать вашу систему и задавать вопросы.

Показать все комментарии