Имя: Пароль:
1C
1С v8
Отражение в регламентированном учете
,
0 first_may
 
25.12.17
21:05
Добрый день.

У пользователя нет роли ОтражениеВРегламентированномУчете.
Но ему надо открыть документ, который проведен по БУ и НУ, внести текст в комментарий и сохранить.

Но у него, естественно, выдается сообщение:
Недостаточно прав для отражения в регламентированном учете. Изменения не могут быть записаны...

Подскажите пож, как можно сделать, что бы он все таки смог внести изменение в проведенный документ?
1 Artful Den
 
25.12.17
21:09
1. Создать дополнительную роль.
2. Вынести обработку в привилегированный модуль.
2 first_may
 
25.12.17
21:09
(1) ясно, попробую.
3 first_may
 
25.12.17
21:33
(1) сделал общий модуль - ПривилигерированныйМодуль, у которого поставил свойство Сервер, Вызов сервера и Привилегированный.

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



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


Зашел под пользователем, у которого нет роли ОтражениеВРегламентированномУчете и в списке нажал кнопку. Получил сообщение:

Не удалось установить признак ТОРГ12.
{ОбщийМодуль.ПривилигерированныйМодуль.Модуль(103)}: Ошибка при вызове метода контекста (Записать): Не удалось записать "Реализация товаров и услуг 3720122017 от 20.12.2017 15:20:50"!


Что не так я сделал?
4 ildary
 
25.12.17
21:39
Если процедура модуля вызывается из внешней обработки, в которой БезопасныйРежим=Истина, то надо безопасный режим отключить.
5 first_may
 
25.12.17
21:42
(4)  если процедура модуля вызывается из внешней обработки  - нет, не из внешней, а из модуля формы списка.

Так нельзя?
6 first_may
 
25.12.17
21:46
Конфигурация Управление производственным предприятием, редакция 1.3, если имеет значение.
7 first_may
 
25.12.17
21:52
Надо обязательно из внешней обработки?
8 first_may
 
25.12.17
22:17
Сделал внешнюю печатную форму, которая вызывается по кнопке Печать. Открывается форма, в которой флажок ТОРГ12.

Тот же пользователь вызывает ее, ставит флажок и нажимает Ок. При этом выдается собщение

Не удалось установить признак ТОРГ12.
{ОбщийМодуль.ПривилигерированныйМодуль.Модуль(103)}: Ошибка при вызове метода контекста (Записать): Не удалось записать "Реализация товаров и услуг 3720122017 от 20.12.2017 15:20:50"!


В тексте написано
Процедура КнопкаВыполнитьНажатие(Кнопка)
    УстановитьПривилегированныйРежим(Истина);
    БезопасныйРежим = Ложь;
    
    ПривилигерированныйМодуль.УстановитьПризнакТОРГ12(СсылкаНаОбъект);
    ЭтотОбъект.ПолучитьФорму("Форма").Закрыть();



Что еще можно сделать?
9 hhhh
 
26.12.17
00:23
(8) зачем такой фигней невероятной страдать? Сделай регистр сведений ПризнакиТорг12, где 2 поля : Документ и Признак. И никаких прав не потребуется и всяких привилегированных модулей.