#0
by drdroid
Есть документ, изменение которого надо ограничить для определенной роли, чтобы пользователи с этой ролью могли изменять только те документы где они являются ответственными. Проблема в том что они этот документ должны передавать дальше, т.е. изменять реквизит "Ответственный" ставить там нового пользователя, в этом случае документ не дает сохранить. Вот такое ограничение: Изменение - прочие поля:
#4
by ОчкарикСлава
Дело ваше. Тогда обкуривайте этот момент через привилегированный модуль, там права попраны...
#5
by drdroid
Не, я это сейчас делаю в модуле документа в процедуре ПередЗаписью, могу сравнить: но хотелось бы через рлс
#8
by 1с-кин
потому что вы плаваете. RLS устанавливается на запись (будь то запись о документе в целом, либо - запись в регситрах). И на события "Чтение", Добавление, Изменение, Удаление. Если вы не попаддатете в эти события - RLS на документ вам заказан.
#10
by 1с-кин
У вас же - и должны видеть (чтобы изменить Ответственного), и должны не видеть - когда изменили. Проработайте постановку задачи более четко.
#11
by Джинн
Я бы в консерватории поправил что-то... Ибо бред. Ибо если человек заболеет, то никто его документ не поправит? Или главбух не может поправить ошибочно введенный Пупкиным документ? И т.п. Но если никак - можно посмотреть реализацию РЛС в БПС. В частности великую таблицу со значением прав доступа. И почесал репу в этом направлении.
#12
by Турист
обычно на это "Ибо если человек заболеет, то никто его документ не поправит?" отвечают "ну зайдут под ним, у нас все равно все пользователи без паролей" ))
#13
by drdroid
, перечитайте внимательно я про "должны/не должны видеть" нигде не писал, а писал "изменение которого надо ограничить", т.е. изменять может только ответственный, мне надо чтоб текущий ответственный внес свои изменения, в том числе и изменил реквизит по которому идет проверка ("Ответственный"), перед нажатием "Записать" у нас по логике вещей в базе будет докмент без изменений (т.е. Ответственный = ТекущийПользователь) и будет объект в котором уже Ответственный = НовыйПользователь. По аналогии в модуле можно записать Ссылка.Ответственный и ЭтотОбъект.Ответственный. Но РЛС по всей видимости условия проверяются не по тем данным которые уже хранятся в бд, а по тем обновленным которые необходимо записать. Вопрос в чем: есть ли в РЛС аналог оракловского :new. и :old.?
#14
by Zaphod
А если при открытии документа запоминать в переменную что редактировать этот документ можно при смене Ответственного и потом уже ПередЗаписью (как в написано) на эту переменную дополнительно смотреть?
#15
by drdroid
Это ограничение для определенной роли, ролей много разных, есть роли у которых этого ограничения нет и под этими ролями работают пользователи которые могут назначить другого ответственного ;-)
#16
by 1с-кин
правьте постановку задачи в первую очередь. И смотрите, что есть РЛС. А у вас получается - документ набрал, а - ба!, - я не тот пользователь! - не пущать меня! А документ тогда зачем набирал? чтобы стереть?
#18
by 1с-кин
а если хотитет, чтобы другой пользователь не смог назначить никого в Ответственные, кроме себя - так сделайте это вообще программно: установка при записи Ответственного и закрытие поля Ответственный.Доступность = Ложь.
#20
by drdroid
что вам не нравится в постановке то? Я конкретно написал, как в запросе в РЛС в правах на Изменение обратится к данным до изменения (аналог :old. в оракле).
#22
by Starhan
Проверку на возможность работы с документом (формой) при открытии. Тогда он может поставить ответственным кого угодно. Но вследущий раз если откроет работать не с ним не сможет.
#28
by 1с-кин
>:old. в оракле что есть old в Оракле? > Я конкретно написал, как в запросе в РЛС в правах на Изменение обратится к данным до изменения - что вы написали?! или 1с дала вам проверку ЗАПИСИ о документе перед ИЗМЕНЕНИЕМ? Что вы к RLS привязались - не зная, зачем оно и как работает? И пытаетесь меня убедить, что код в 1С и шаблон RLS, - это однофигственно, и только в разных окошках пишется?
#30
by drdroid
Я Вас ни в чем не убеждаю и даже больше я вас в этой теме насильно не держу ;-). Что такое РЛС и зачем оно я знаю, а с тем как оно работает сейчас вот и пытаюсь разобраться, а Вы извините но гоните порожняк. Изменение данных записанного документа в 1С это по сути запрос UPDATE, так вот операция UPDATE берет старые данные (old) и заменяет их новыми (new), РЛС на сколько я понимаю выполняется до или во время транзакции чтобы проверить права на выполнение или завершение транзакции соответственно. Ну так вот пока транзакция не завершена у нас есть старые данные (в оракл к ним можно обратится через :old., а в модуле документа 1С это Ссылка.Реквизит) и новые данные (по аналогии :new., а в модуле документа 1С это ЭтотОбъект.Ревизит) это очень удобно так как их можно сравнить.
#31
by organizm
А может попробовать создать что то типа полномочий доступа, вроде как в документообороте реализовано.
#33
by 1с-кин
т.е. вы хотите нагнуть RLS, чтобы он сравнивал записи в базе и на форме и ограничивал на основе сравнения? ну успехов :)) Интересно взглянуть, как вы воткнете RLS между данными формы (как вы выразились - "новые данные (по аналогии :new., а в модуле документа 1С это ЭтотОбъект.Ревизит)), и данными базы (опять же - "в оракл к ним можно обратится через :old., а в модуле документа 1С это Ссылка.Реквизит)", притом, что RLS работает только с данными базы. И в 1С методологически вообще нет разделения на "новые" и старые" данные, а что у вас делится - всего лишь следствие работы платформы, когда введенные данные не записываются в базу, потому как команды не было, но содержатся в памяти в объекте "форма", и поэтому события и состояния данных "до транзакции" и "после транзакции" не отслеживаются в принципе.
#34
by 1с-кин
+ т.е. методологически в 1С "новых" данных не существует. Но у вас существует, и поэтому вы пытаетесь применить к ним остальные механизмы работы с данными. Вам бы в разработку платформы 9.0 сразу... :))
#36
by drdroid
От не понимаю я таких людей, вам дай только поболтать, поехидничать ("Вам бы в разработку платформы 9.0 сразу")... Тоже мне гуру блин! Столько было вами слов написано, но по существу информации 0. Посидел почитал желтую книгу, в тестовой базе поэксперементировал и все получилось, запрос на чтение ограничений выглядит так: все работает так как я и описал, так как и требовалось...
#37
by Starhan
а зачем внутренне соединение? ИЗ Документ.МойДокумент КАК МойДокумент Разве этот запрос не те же данные возвращает?.
#38
by drdroid
в РЛС нет "ВЫБРАТЬ", ну и в я написал что подобного рода конструкция не работает: Могу расписать почему работает с вложенным запросом и почему не работает без него, но думаю оно вам не надо =)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Программно завершить редактирование строки в многострочной части документа
- Режим открытия документов по-умолчанию: редактирование или просмотр
- Тотальное изспользование РЛС в справочниках и документах?
- РЛС и измерения регистра сведений
- загрузка классификатора РЛС с диска ИТС
- РЛС: Включение РЛС в БП 3 ограничивает только изменение? или должно и чтение тоже?
- РЛС по подразделениям документам начисления и по кадровым документам.
В этой группе 1С
- ТОРГ 12 без характеристик Управление торговлей 11
- Как в запросе присвоить значение СправочникСсылка
- УТ запрос средний остаток
- Регламентные задания - завершено с ошибками
- v7: Регламентированная отчетность, не удается выгрузить баланс в PDF417
- ADODB.Command не работает CreateParameter на сервере
- Поле табличного документа (удаление)
- v8: Вышел ЗУП 2.5.45.3. Новая справка 2-НДФЛ
- Загрузка отчета о продажах из ФРонтол в УТ 10.3
- Изменение значений реквизитов в заполненной табличной части документа
- 1c 8 переключатели
- Можно ли записать данные в регистр без проведения документа?
- Загрузка номенклатуры по штрих-коду
- Раскраска строк макета при использовании СКД.
- Реструктуризация регистра Хозрасчетный
- Вставка данных в таблицу 1С на примере как в excel.
- При заходе в программу каждый раз требуется подключать весы
- БП 2.0: Корректировка поступления
- ЗУП почему не рассчитывает зп?
- ЗУП: ФСС НС и ПЗ с ДГПХ