Имя: Пароль:
1C
1С v8
Не работает привилегированный режим на обычных формах.
0 Rizhij_Nikitos
 
28.06.23
14:23
Ситуация: обычные формы, клиент-серверный вариант базы. Пользователь без прав на создание документа работает в документе и может возникнуть ситуацию, когда пользователю надо создать копию документа и записать туда его текущее состояние. Документ в котором он работает ему создает другой пользователь с достаточными правами.

Пользователю выведена кнопка - сохранить копию документа.

Кнопка вызывает СоздатьДокумент() и дальше по тексту в новый документ складывается весь контекст формы и так далее.

Очевидно, что в момент вызова СоздатьДокумент() проверка прав говорит что галочка на создание документов не стоит и НАРУШЕНИЕ ПРАВ ДОСТУПА!11. Вызов привилегированного режима на клиенте (в модуле обычной формы или в модуле объекта документа на обычных формах), естественно, не дает никаких результатов, потому что имеет силу только на сервере.

Выходит, надо создавать документ на сервере. Но как туда попасть, если я не хочу весь контекст формы переть на сервер? Как мне заставить обычную форму работать на сервере?)

Из решений я вижу два варианта:
1) разрешить пользователю создание документа и отбить в форме списка документов событие добавления нового объекта;
2) тащить в привилегированный модуль весь контекст объекта в его текущем состоянии как пользователь наредактировал.

А может я могу как-то заставить модуль обычной формы или модуль объекта документа работать на сервере?
1 RomanYS
 
28.06.23
14:25
Вызов серверного модуля
2 Rizhij_Nikitos
 
28.06.23
14:28
(1) да, это второй вариант решения, но он дорогой потому что надо паковать все пожитки и тащить в серверный модуль чтобы там распаковать и разложить в копию документа. Дорого, а я ленивый. Хочется в 2 строчки кода или типа того.
3 Rizhij_Nikitos
 
28.06.23
14:29
Еще я тут видел историю товарища (Обычное приложение, модуль объекта который подсунул основную форму документу управляемую и контекст модуля объекта вроде как тоже на сервере компилится. Но это тоже какой-то стремный способ.
4 lodger
 
28.06.23
14:40
(0) выйди на серверный модуль, там под привилегиями СоздатьДокумент(), заполнить его копированием по ссылке, записать(), вернули ссылку.
вернулся в форму документа с кнопкой, по ссылке получить форму, докинул то, что изменилось в текущей версии, показал форму
5 Rizhij_Nikitos
 
28.06.23
14:53
(4) Отлично. Это то что я искал, спасибо. Сам уперся и никак не мог продумать путь.