RLS не даёт распровести документ #492591


#0 by The gray Cardinal
8.2.11.229, УТ 10.3.8.9. Документ "РКО" там настроен так, что не удаляет свои движения автоматически. Есть проблема у определённой роли: успешно проводим документ, но тут же не можем его сделать непроведённым ("У пользователя недостаточно прав на исполнение операции над базой данных."). Всё упирается в заданные ограничения RLS для двух регистров накопления (на чтение), если эти ограничения убрать, всё становится хорошо (это специально проверено). В общем, не знаю, как быть. Ограничения RLS для регистров реально нужны, т.к. влияют на отчёты. Мне непонятна логика поведения программы: провести документ даёт, а тут же отменить это проведение — не даёт. Причём происходит это ТОЛЬКО от RLS на регистры, что специально проверено.
#1 by hhhh
ну поставьте правильные флажки там на Отмену проведения. Что вы нам мозг парите? Проведение - это одно, отмена проведения - это другое.
#2 by Злопчинский
а как вы себе представляете например: провели РКО, чек по кассе пробился допустим вдобавок.. а вы тут распроводить... правильно что не дает. с какого будуна вдруг распроводить?
#3 by The gray Cardinal
Извините, не догоняю, где "там" правильные флажки на Отмену проведения, конкретно? Право "Отмена проведения" для документа РКО у этой роли есть.
#4 by The gray Cardinal
Вопрос не в этом. В данном случае возможность распроводить нужна.
#5 by The gray Cardinal
Проблема не в отмене проведения как таковой, а в программном удалении движений регистров. Исключение RLS возникает в процедуре ОбщегоНазначения.УдалитьДвиженияРегистратора.
#6 by Defender aka LINN
Привелигированный режим для кого придуман?
#7 by The gray Cardinal
Что за привелигированный режим?
#8 by The gray Cardinal
Народ, подскажите, в каком направлении думать, что искать.
#9 by Defender aka LINN
Почему ты еще не читаешь про в мануале?
#10 by The gray Cardinal
Не понимаю, что ты от меня хочешь. Давай подробнее.
#11 by Живой Ископаемый
мва-ха-ха!!!!
#12 by The gray Cardinal
Не ржи, лучше помоги.
#13 by Живой Ископаемый
как? принять документы на усыновление, чтобы ты больше никогда не 1сил?
#14 by GedKo
конфигуратор, ctrl+f1, ПривилегированныйРежим
#15 by The gray Cardinal
Я не понимаю логики. УстановитьПривилегированныйРежим якобы отменяет проверки прав, и что? Если у роли есть право на отмену проведения документа, и получается провести конкретный документ, почему не получается тут же распровести/перепровести его (конкретно — просто программно удалить движения регистра)?
#16 by hhhh
ну вы же только что приставали, что не те права на регистры, а теперь вдруг перекинулись на документ.
#17 by The gray Cardinal
Да не приставал я, что "не те права на регистры", я вообще не понимаю, что Вы имеете в виду. Для регистров стоят ограничения RLS (на чтение). Эти ограничения нужны для отчётов и правильно работают в случае проведения документа — всё проводится. Право на отмену проведения документа тоже есть. Не ясно, почему не удаётся удалить движения документа при отмене проведения, см. . Удаляемые значения измерений регистров вполне соответствуют ограничениям RLS — это те значения, с которыми пользователь только что провёл документ. Если эти ограничения RLS на регистры убрать, документ успешно распроводится — это специально проверено.
#18 by GedKo
перед удалением движений - эти движения читаются (и стоят ограничения) при нехватке прав и возникает исключение. поэтому отключи проверку прав при отмене проведения. и все.
#19 by The gray Cardinal
Вопрос в том, как добиться распроведения документа, не убирая RLS на регистры. Я не понимаю, с какой радости возникает такое исключение. Скажем, при формировании отчёта "Движения документа по регистрам" никаких исключений не возникает, всё читается и отображается. Распроводить я пытаюсь этот же документ.
#20 by GedKo
дык и не убирай рлс. просто отключи его на момент отмены проведения.
#21 by НетуаНадо
#22 by The gray Cardinal
Зачем это нужно, я не понимаю логики. Пользователь не может удалить движения, которые он только что записал и которые полностью соответствуют его RLS и успешно читаются в его отчётах. Отчёт стандартный, "Ведомость по денежным средствам". Эта монстрятина ссылается на "УниверсальныйОтчет". Ограничения RLS при его использовании работают как надо, это тоже специально проверялось.
#23 by The gray Cardinal
А куда конкретно можно запихать вызов "УстановитьПривилегированныйРежим", если уж идти таким путём?
#24 by НетуаНадо
что то у тебя не так корее всего где то в ролях есть роль проведение нету роли отменить проведение
#25 by GedKo
наверное в процедуру перед вызовом ОбщегоНазначения.УдалитьДвиженияРегистратора =)
#26 by НетуаНадо
или проблема с журналами еще может быть
#27 by The gray Cardinal
Это процедура "ОбработкаУдаленияПроведения", там такой вызов не отрабатывает.
#28 by Defender aka LINN
"Пользователь не может удалить движения, которые он только что записал и которые полностью соответствуют его RLS" - Я тебе такую вещь скажу про чудеса - их НЕ БЫВАЕТ. Живи с этим. И если у пользователя нет прав хоть на одну запись из набора - ты хоть мамой нам клянись на форуме и приноси 1С жертвы в тысячи быков - кина не будет. "Это процедура "ОбработкаУдаленияПроведения", там такой вызов не отрабатывает." - 1С тебя явно ненавидит. Не связывайся с ней, иди в дворники.
#29 by The gray Cardinal
Как у пользователя может не быть прав хоть на одну запись из набора, если он только что провёл этот документ? Выпендриваешься много, лучше бы дельное что-нибудь посоветовал. Я в курсе, что чудес не бывает. А это значит только то, что я не вижу чего-то простого. Вот и прошу мне помочь. Кстати, "УстановитьПривилегированныйРежим" не используется в УТ (поиск по всем текстам не даёт ни одного вхождения). Это значит, что она нужна в ОЧЕНЬ экзотических случаях. Так что не надо делать вид, что её использование очевидно — это не так.
#30 by The gray Cardinal
Давайте по-простому: право на отмену проведения документа есть, документ успешно проводится. Распровести/перепровести документ не удаётся. Исключение вылезает в момент программного удаления движений. Прошу перечислить все места по порядку, куда надо посмотреть, чтобы обнаружить проблему. Я не великий программист, так что мог пропустить очевидное...
#31 by hhhh
что-то ты гонишь. Вот я открыл УТ. Общий модуль ПолныеПрава, щелкаю свойства и вижу: стоит галка "Привилегированный".
#32 by hhhh
просто поставь везде точки останова, во всех этих процедурках и в подписках ПередЗаписью и ПРиЗаписи и в процедурах регистров ПередЗаписью и ПриЗаписи и пройдись отладчиком. Это у тебя займет максимум 20 минут. А ты уже целый день сидишь, ждешь у моря погоды.
#33 by Dzenn
Обрати внимание на следующую особенность при работе с привилегированным режимом - движения/удаления по регистрам надо записывать явно, в пределах действия привилегированного режима. Если ты этого не сделаешь, то платформа попробует сделать это за тебя - и получишь ошибку при проведении.
#34 by The gray Cardinal
Я говорю о вызовах УстановитьПривилегированныйРежим. Уже давно, и ещё до создания темы. В всё сказано. Пожалуйста, для тупых (я тупой): куда вписать вызов УстановитьПривилегированныйРежим(Истина), конкретно? Так, чтобы это выполнилось на сервере (иначе не отработает). Если нужны директивы, прошу написать кусок кода вместе с директивами. ОбработкаУдаленияПроведения в модуле документа содержит единственный вызов ОбщегоНазначения.УдалитьДвиженияРегистратора, где позже и отваливается. Отваливается в конструкции Попытка/Исключение при вызове метода Записать для набора записей регистра. Т.е. попадает в ветвь "Исключение", где радостно и сообщается о неудаче.
#35 by artbear
тест можешь сделать?
#36 by The gray Cardinal
какой тест?
#37 by artbear
Какую-нибудь демо-базу, в которой ошибка четко видна.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С