Имя: Пароль:
1C
1С v8
Не удается программно записать реализацию без полных прав УТ 11.3.4
0 СЕсин
 
12.01.18
14:48
Всем привет! Ситуация, конечно, странная. Файловая база Управление торговлей, редакция 11 (11.3.4.81)

Хочу программно кое-что изменить в документе и записать документ. Эту нехитрую обработку должен выполнять пользователь НЕ под полными правами. Этот пользователь имеет права, чтобы создавать/проводить документы реализации, чем каждый день занимается.
Но программно записать изменения с помощью внешней обработки не получается.

Код такой, все элементарно:

&НаСервере
Процедура ОдобритьВыделенныеНаСервере(Одобрение)
    
    Для каждого СтрокаТЧ Из Реализации Цикл
            
        ДокОб = СтрокаТЧ.Документ.ПолучитьОбъект();
        
        // ТУТ КОД УСТАНОВКИ НОВОГО ЗНАЧЕНИЯ ДОП. РЕКВИЗИТА
        
        Попытка
            
            ДокОб.Записать(РежимЗаписиДокумента.Запись);
            
        Исключение
            
            Сообщить("Не удалось обработать " + Строка(ДокОб));
            
        КонецПопытки;
        
    КонецЦикла;
    
КонецПроцедуры

Дело в том, что при записи документа срабатывает механизм регистрации изменений в плане обмена с бухгалтерией. И возникает ошибка:

{ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1244)}: Ошибка выполнения правил регистрации объектов для плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат.
Описание ошибки:
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(2666)}: Ошибка при вызове метода контекста (Выполнить)
    МассивУзлов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Узел");
по причине:
Недостаточно прав для работы с таблицей "РегистрСведений.ДанныеОбъектовДляРегистрацииВОбменах"


Права на чтение и изменение регистра "ДанныеОбъектовДляРегистрацииВОбменах" есть только в роли "ПолныеПрава".

Обработка в НЕ безопасном режиме работы.
Пробовал "УстановитьПривилегированныйРежим(Истина);" - не помогло
Пробовал "ДокОб.ОбменДанными.Загрузка = Истина;" - не помогло

Догадываюсь, что можно это как-то решить, т.к. пользователь работает и записывает документы "руками". Но не понимаю, как мне под его правами программно записать документ реализации.

Пожалуйста подскажите, если кто-то сталкивался с данной проблемой.
1 Вафель
 
12.01.18
14:55
опасный режим поставь для этой внешней обработки
2 СЕсин
 
12.01.18
15:17
(1) я выше писал "Обработка в НЕ безопасном режиме работы. "
3 Вафель
 
12.01.18
15:18
Подключенная обработка или просто обработка?
4 СЕсин
 
12.01.18
15:26
Пробовал и так и так. И как внешнюю открываю и при подключении в конфигурацию - одна и та же ошибка.
5 Вафель
 
12.01.18
15:28
отключение безопасный режим должно помогать
6 2dolist
 
12.01.18
15:43
безопасный режим только задалбывает дурацкими вопросами, вроде ничего не блочит отдельно
7 2dolist
 
12.01.18
15:43
Хотя, чёрт его знает. Я отключил. Не удобный.
8 2dolist
 
12.01.18
15:44
*неудобный
9 Вафель
 
12.01.18
15:44
(6) Это другой безопасный режим )))
10 Вафель
 
12.01.18
15:45
Есть "безопасный режим", а есть "защита от опасных действий"
11 Вафель
 
12.01.18
15:46
если для внешней обработки установлен "безопасный режим", то функция УстановитьПривилегированныйРежим перестает работать, вне зависимости от того где она вызывается, даже в общих модулях
12 СЕсин
 
12.01.18
15:57
(11) я ж пишу, у меня установлен НЕ безопасный режим обработки.
Короче я попробовал все возможные комбинаций  "безопасный режим", "защита от опасных действий", "УстановитьПривилегированныйРежим", "ДокОб.ОбменДанными.Загрузка = Истина" - результат один - ошибка доступа к регистру.
Руками документы из под этого пользователя прекрасно дает записывать. Х.з. в чем разница.
13 Вафель
 
12.01.18
16:04
где-то что-то заглючило. ибо должно работать
14 2dolist
 
12.01.18
16:15
(10) а, ясно.
15 2dolist
 
12.01.18
16:20
да, точно, я их перепутал. Безопасный режим же в регистрационных данных обработки указывается.
16 grigo
 
12.01.18
16:28
Обложи код записи документа строками "УстановитьПривилегированныйРежим(Истина)....УстановитьПривилегированныйРежим(Ложь)" и запускай обработку в Опасном режиме.
17 Вафель
 
12.01.18
16:32
(16) тот код уже обложен в соотв модулях
18 grigo
 
12.01.18
16:39
(17) В условии задачи это не указано. Jстается только создать привилегированный модуль и записывать реализацию в нем.
19 Вафель
 
12.01.18
16:45
(18) все указано: ут 11.3.4
20 Вафель
 
12.01.18
16:45
(18) кстати привелигерованные модули тоже перестают быть таковыми в опасном режиме
21 grigo
 
12.01.18
16:54
(19) Там нет такой процедуры, поэтому нет информации, что ТС вызывает ее из привилегированного режима.
(20) В опасном режиме не становятся. В безопасном - да.
22 DexterMorgan
 
12.01.18
17:09
Наверняка есть какое-то доп. свойство документа, которое анализируется в этой подписке. Посмотри код в этой подписке
23 DexterMorgan
 
12.01.18
17:10
(20) да ну на
24 СЕсин
 
15.01.18
10:15
(22) кстати, да, попробую! Хорошая мысль.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший