Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Права пользователя в УПП 1.3

Права пользователя в УПП 1.3
Я
   demonprodigy
 
09.08.18 - 17:36
Здравствуйте, подскажите.
Как называется право на то, чтобы была возможность редактировать документ "Заявка на расходование денежных средств" в состоянии "К рассмотрению"
Не могу найти, если конечно это типовая роль. Благодарю заранее.
 
 
   dchumak
 
3 - 10.08.18 - 03:48
Редактирование разрешается не по роли, а по согласованию заявки.

Процедура ПриОткрытии()
...
Если НЕ ЭтоНовый() Тогда
        //Если используется функционал согласования заявок - проверим можно ли редактировать заявку

        Если НЕ ЭтаФорма.ТолькоПросмотр Тогда
            ЭтаФорма.ТолькоПросмотр = НЕ УправлениеДенежнымиСредствами.РазрешеноИзменениеЗаявки(Ссылка);
        КонецЕсли;
    КонецЕсли;


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

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
    |    Ссылка КАК МаршрутСогласования
    |ПОМЕСТИТЬ МаршрутыТекущегоПользователя
    |ИЗ Справочник.МаршрутыСогласования.СогласующиеЛица
    |ГДЕ Пользователь = &ТекПользователь
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
    |СостоянияСогласования.Состояние,
    |СостоянияСогласования.Этап,
    |СостоянияСогласования.Пользователь,
    |СостоянияСогласования.Уровень,
    |СогласующиеЛица.Пользователь             КАК СледующийСогласующий,
    |ВЫБОР КОГДА 
    |        СостоянияСогласования.Этап В ИЕРАРХИИ 
    |            (ВЫБРАТЬ МаршрутСогласования ИЗ МаршрутыТекущегоПользователя)
    |        И СостоянияСогласования.Этап НЕ В 
    |            (ВЫБРАТЬ МаршрутСогласования ИЗ МаршрутыТекущегоПользователя)
    |ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ             КАК НижестоящийЭтапСогласования
    |ИЗ РегистрСведений.СостоянияСогласованияЗаявок.СрезПоследних(,Заявка = &ТекущаяЗаявка) КАК СостоянияСогласования
    |ЛЕВОЕ СОЕДИНЕНИЕ 
    |    Справочник.МаршрутыСогласования.СогласующиеЛица КАК СогласующиеЛица
    |    ПО СогласующиеЛица.Ссылка = СостоянияСогласования.Этап.Родитель
    |";
    Запрос.УстановитьПараметр("ТекПользователь", ТекущийПользователь);
    Запрос.УстановитьПараметр("ТекущаяЗаявка", ДокументСсылка);
    РезультатыЗапросов = Запрос.ВыполнитьПакет();
    Выборка = РезультатыЗапросов[1].Выбрать();
    //Маршрут согласования заявки не определен

    Если НЕ Выборка.Следующий() Тогда
        Возврат Истина;
    КонецЕсли;
    //Заявка еще не начала проходить по маршруту согласования

    Если НЕ ЗначениеЗаполнено(Выборка.Состояние) ИЛИ Выборка.Состояние = Перечисления.СостоянияОбъектов.Подготовлен Тогда
        Возврат Истина;
    //Заявка уже согласована к оплате

    ИначеЕсли Выборка.Состояние = Перечисления.СостоянияОбъектов.Утвержден Тогда
        ТекстСообщенияПользователю = НСтр("ru = 'Утвержденная заявка не может быть изменена.'");
        Возврат Ложь;
    Иначе
        //Заявка проходит по маршруту согласования. 

        //    Возможность изменения зависит от пользователя, который пытается изменить заявку

        //Заявка в процессе согласования у текущего пользователя (в состоянии Отложен или Отклонен)

        Если Выборка.Пользователь = ТекущийПользователь И 
            (Выборка.Состояние = Перечисления.СостоянияОбъектов.Отклонен ИЛИ
            Выборка.Состояние = Перечисления.СостоянияОбъектов.Отложен) Тогда
            Возврат Истина;
        //Заявка перешла на согласование текущему пользователю

        ИначеЕсли Выборка.Состояние = Перечисления.СостоянияОбъектов.Согласован И 
            (Выборка.СледующийСогласующий = ТекущийПользователь) Тогда
            Возврат Истина;
        //Заявка находится на согласовании у "нижестоящих" этапов согласования

        ИначеЕсли Выборка.НижестоящийЭтапСогласования Тогда
            Возврат Истина;
        КонецЕсли;
    КонецЕсли;
    ТекстСообщенияПользователю = НСтр("ru = 'Заявка в процессе согласования, не может быть изменена.'");
    Возврат Ложь;
КонецФункции

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует