Запрет редактирования ответственного в контрагенте с сохранением его записи.
Добрый день!
Подскажите, в подробном описание, как и куда вставить скрипт из этой темы: https://community.terrasoft.ru/forum/topic/6990 из сообщения #6 Alimova Anna.
Требуется закрытие поля ответственный контрагента от редактирования для пользователей, но при этом что бы сохранялся и было видно ответственного создавшего контрагента?
Далее то же самое требуется в карточке контакта, думаю это будет по аналогии с контрагентом?
Нравится
Здравствуйте, Игорь!
в скрипте карточки есть обработчик события OnPrepare. Для карточки Контрагент это функция function wnd_AccountEditOnPrepare(Window) в скрипте scr_AccountEdit
В конец данной функции требуется вставить вызов процедуры IsOwnerAvailable();
А саму процедуру можно дописать в конец скрипта.
Благодарю Анна!
В целом я так раньше это все и делал, единственное отличие - саму процедуру вставлял перед ее вызовом.
Проблема не решена, видимо в процедуре необходимо изменить данные под себя?
Подскажите что можно менять в самой процедуре и требуется ли изменение этой процедуры для вставки ее в карточку контактов?
Процедура написана таким образом, что если залогиненный пользователь - администратор системы, поле доступно для редактирования.
Возможно, поэтому у Вас не получается произвести тестирование.
Обратил внимание на скрин-шот функции приведенной вами, она отличается от нашей, на всякий случай ниже пример функции, которая работает у нас:
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();
Анна огромное вам спасибо!
Все заработало, решение оказалось проще чем я мог предположить.
Вы очень помогли еще раз благодарю.
Это мое первое обращение к вам, систему тех. поддержки понял, за ответ на почту отдельное спасибо, буду продолжать осваивать вашу систему и задавать вопросы.