Как разрешить запись в один справочник при общем запрете?..

znak_ognya

Новичок
1. Нашёл в интернете совет, как создать роль "ЗапретРедактирования"
2. Пытаюсь создать, всё нормально, за исключением того, что нужно прописать в справочник "РабочееМесто"...
Предприятие выдаёт ошибку:
{ОбщийМодуль.МенеджерОборудованияСервер.Модуль(170)}: Ошибка при вызове метода контекста (Записать)
РабочееМесто.Записать();
по причине:
Не удалось записать: "Рабочие места"!
Новый код на запрет записи в справочники такой:
Код:
Процедура рас_ПередЗаписьюЛюбогоСправочникаПередЗаписью(Источник, Отказ)Экспорт
    Если РольДоступна("ro_ЗапретРедактирования") Тогда
    Отказ = Истина
КонецЕсли;
Модуль, на который ругается:
Код:
Функция СоздатьРабочееМестоКлиента(Параметры) Экспорт

    УстановитьПривилегированныйРежим(Истина);

    РабочееМесто = Справочники.РабочиеМеста.СоздатьЭлемент();

    РабочееМесто.Код          = Параметры.ИдентификаторКлиента;
    РабочееМесто.ИмяКомпьютера = Параметры.ИмяКомпьютера;
    РабочееМесто.СетевойПорт  = Параметры.СетевойПорт;

    МенеджерОборудованияКлиентСервер.ЗаполнитьНаименованиеРабочегоМеста(РабочееМесто, ПользователиИнформационнойБазы.ТекущийПользователь());

    РабочееМесто.Записать();

    УстановитьПривилегированныйРежим(Ложь);

    Возврат РабочееМесто.Ссылка;

КонецФункции // СоздатьРабочееМестоКлиентаПоИД()

Вопрос: Как можно разрешить запись только в этот справочник?..
Спасибо...
 

Andrey

ВР
Команда форума
Правильно ругается. Потому что в процедуре, которую Вы вызываете через подписку, Отказ = ИСТИНА, т.е. операция будет не завершена.
 

znak_ognya

Новичок
Вот я и не пойму, как правильно написать условие, или в какой последовательности?.. Пытался добавить условие типа: Если Условие = ... Тогда Отказ = Ложь КонецЕсли; ИначеЕсли... сюда же, в эту процедуру, не пойму, какой переменной его назначить, поэтому спрашиваю...)))
 

Andrey

ВР
Команда форума
А чего, собственно, Вы хотите добиться? Снимите запрет на изменение справочника у самой роли. Или определенным пользователям не назначайте эту роль.
 

znak_ognya

Новичок
Тут немножко не так... Я наоборот пытаюсь сделать роль, которой разрешено будет только читать, чтобы, даже при желании или случайности человек, имеющий эту роль ничего не смог изменить... Но при включении 1С:Предприятие, я так понял, формируется рабочее место и пытается внести запись в справочник "РабочиеМеста"... Мне нужно допустить эту запись и больше никаких...
 

znak_ognya

Новичок
То есть я могу разрешить самой роли Изменение в правах на РабочиеМеста, правильно?..
 

Andrey

ВР
Команда форума
Если Вы создаете роль с правами только на чтение, то ругаться программа не должна, поскольку запись в справочник производиться в привилегированном режиме, который как раз и отключает контроль прав.
Вся проблема в подписке на событие. Зачем она Вам нужна, если вы ролью ограничиваете изменение справочника?
 

znak_ognya

Новичок
Я понял, что что-то делаю неправильно, но не понял, что...))) То есть, я могу отказаться от Подписок и просто выставить отметки в самой роли и всё?.. Есть ли у вас ссылка на ресурс, где подробно расписано как правильно создавать роли?..
 

Andrey

ВР
Команда форума
Ресурсов на которых будет расписано как правильно создавать роли Вы не найдете нигде. Это бессмысленно описывать, потому что разработка ролей зависит от каждого конкретного случая реализации прикладной задачи. Я Вам написал что вся проблема в подписке на событие. И не советую "истиной в последней инстанции" считать инфостарт. Если Вам интересно повышение своих знаний в программировании для 1С, то советую начать с курсов, которые сама же 1С и разработала. Там достаточно просто преподносят необходимый базовый набор знаний. Применительно к Вашему "быстрому решению проблемы", в обработчике подписки на событие добавьте дополнительную проверку вида источника - "Источник.Метаданные() = Метаданные.Справочники.РабочиеМеста", и при выполнении данного условия Отказ = ЛОЖЬ.
 

znak_ognya

Новичок
На курсах я уже успел побывать, к сожалению, пока только на начальных... А опыта работы у меня очень мало, поэтому приходится спрашивать и искать, фактически "изучение методом тыка"... Спасибо, сейчас попробую...)))
 

znak_ognya

Новичок
Огромное спасибо!.. Две строки и пользователь "ЗапретРедактирования" спокойно зашёл!..))) Ну вот не знал я, как правильно проверять, теперь уже на строчку больше знаний... Про Метаданные спрашивать не буду, попробую в букварях найти... А вот вопрос об ошибке "У пользователя недостаточно прав на исполнение операции над базой данных" можете пояснить?.. Ситуация такая: 1. Был один пользователь "Расчётчик", ходили дружною толпой обе расчётчицы, сделал им пофамально путём копирования, то же самое с пользователем Кадровик (троих разбил)... 2. После этого перестал обновляться список "Текущие задачи"... 3. Посоветовали проверить "А создаются ли задачи?"... Пробую сделать новую задачу, пишет "У пользователя недостаточно прав на исполнение операции над базой данных!" У расчётчиков права полные есть (у кадровиков) нет, но ни у кого не обновляется этот список...
 

Andrey

ВР
Команда форума
Насчет ЗУП'а я не советчик. Плохо знаю эту конфигурацию. Не факт что ограничение на создание задачи реализовано механизмом ролей. Насколько я помню там еще и разграничение по исполнителям есть. Но на всякий случай проверьте роли которые назначены пользователю. Среди них должна быть роль в которой должно быть право "добавление" на объекты метаданных "Задачи". Вообще по пользовательскому режиму зарплаты лучше Юлику ищите - она с этой конфигурацией "дружит" :)
 

znak_ognya

Новичок
Хорошо, спасибо, как проверю, отпишусь получилось, или нет...
 

znak_ognya

Новичок
Букварь приобрету, наверное ещё скидка будет, у нас есть подписка...)))
 

znak_ognya

Новичок
Вопрос по ЗУП решился с установкой обновлений, МоиЗадачи снова начали обновляться...
 

znak_ognya

Новичок
Пытаюсь запретить пользователю видеть расшифровку отчёта "РасчетныеВедомостиОрганизаций" и вношу изменения в модуль:
Код:
Процедура РезультатОбработкаРасшифровки(Элемент,Отказ,Расшифровка,СтандартнаяОбработка)
    Если РольДоступна("ro_ЗапретРедактирования") Тогда
        Отказ = Истина;
        Предупреждение("В целях безопасности данная функция отключена!");
        Возврат;
    Иначе
    Отказ = Ложь;
    ДопСписок = Новый СписокЗначений;
    ТиповыеОтчеты.ОбработкаРасшифровкиТиповогоОтчета(Расшифровка, СтандартнаяОбработка, ЭтотОбъект, ЭтаФорма, ДопСписок);
    КонецЕсли;
    //ТиповыеОтчеты.СтандартнаяОбработкаРасшифровкиТиповогоОтчета(ОтчетОбъект, ЭтаФорма, Расшифровка, СтандартнаяОбработка);
КонецПроцедуры
Расшифровка не включается (после нажания по ячейке, типа для "увидеть расшифровку") , моё предупреждение показывается, но за ним выскакивает ещё одно с цифрами...
Бывают ли предупреждения с цифрами, или это просто какой-то расчёт из ячеек выпадает?..
Можно ли и как можно убрать лишнее предупреждение?..
Спасибо...
 

Владимир Владимирович

Известная личность
Пытаюсь запретить пользователю видеть расшифровку отчёта "РасчетныеВедомостиОрганизаций" и вношу изменения в модуль:
Код:
Процедура РезультатОбработкаРасшифровки(Элемент,Отказ,Расшифровка,СтандартнаяОбработка)
    Если РольДоступна("ro_ЗапретРедактирования") Тогда
        Отказ = Истина;
        Предупреждение("В целях безопасности данная функция отключена!");
        Возврат;
    Иначе
    Отказ = Ложь;
    ДопСписок = Новый СписокЗначений;
    ТиповыеОтчеты.ОбработкаРасшифровкиТиповогоОтчета(Расшифровка, СтандартнаяОбработка, ЭтотОбъект, ЭтаФорма, ДопСписок);
    КонецЕсли;
    //ТиповыеОтчеты.СтандартнаяОбработкаРасшифровкиТиповогоОтчета(ОтчетОбъект, ЭтаФорма, Расшифровка, СтандартнаяОбработка);
КонецПроцедуры
Расшифровка не включается (после нажания по ячейке, типа для "увидеть расшифровку") , моё предупреждение показывается, но за ним выскакивает ещё одно с цифрами...
Бывают ли предупреждения с цифрами, или это просто какой-то расчёт из ячеек выпадает?..
Можно ли и как можно убрать лишнее предупреждение?..
Спасибо...

стандартнаяобработка=ложь;
 

znak_ognya

Новичок
СтандартнаяОбработка -- не получилось, получилось с Расшифровка = Ложь;
Спасибо!..)))
 
Верх