Имя: Пароль:
1C
 
зачем УстановитьПривилегированныйРежим() в клиент-серверном варианте
0 MaxS
 
02.12.10
10:04
Для управления привилегированным режимом предназначен метод глобального контекста
УстановитьПривилегированныйРежим(), который позволяет включать или выключать привилегированный
режим.
ВНИМАНИЕ. В клиент-серверном варианте вызов метода не оказывает влияния при работе на стороне клиента.
По умолчанию привилегированный режим выключен.

Вопрос. А зачем нужен этот режим? какая польза, если в файловом работает, в серверном нет?
1 Fragster
 
гуру
02.12.10
10:06
прочитайте еще раз то, что после "ВНИМАНИЕ"
2 MaxS
 
02.12.10
10:09
(1) зачем в платформу вводить такие половинчатые решения?

В СП 8.2.12 написано так:
Описание:
В файловом варианте информационной базы или на сервере в клиент-серверном варианте информационной базы управляет (включает или выключает) привилегированный режим исполнения кода, аналогичный режиму работы кода привилегированных модулей.

(0) взял из какого-то сайта
3 MaxS
 
02.12.10
10:11
о!  спасибо, научился читать.  если выполняется на сервере, тогда работает. ;)
4 5 Элемент
 
02.12.10
10:18
(3) вообще-то он только на сервере и выполняется.
5 MaxS
 
02.12.10
10:34
Создал подписку на событие, событие ОбработкаПроведения
В толстом клиенте этот модуль выполняется на клиенте.
И как Источник (документ объект) обработать в привилегированном режиме, если общий модуль не привилегированный?
передать мутабельное значение в привилегированный модуль нельзя, УстановитьПривилегированныйРежим()  тоже нельзя.
6 Defender aka LINN
 
02.12.10
10:42
(5) И как же ты его собрался обрабатывать, что тебе привилегированный режим потребовался?
7 MaxS
 
02.12.10
10:51
(5) объект нужно передать в типовой модуль
НаборДвиженийВзаиморасчеты.КонтрольОстатков(ДокументОбъект, "ДокументыРасчетовСКонтрагентом", СтруктураШапкиДокумента, Источник.мСтруктураПараметровВзаиморасчетов, ЕстьОшибка, Заголовок, РежимПроведенияДокумента.Оперативный, "СуммаВзаиморасчетов");
8 MaxS
 
02.12.10
11:11
(6)+(7)  там разные хитрости. в СтруктураШапкиДокумента подставляются данные другого договора того же контрагента но другой организации, на которую у пользователя нет прав.
Список договоров можно получить из соседнего привилегированного модуля, а документОбъект передать в процедуру проверки остатков в привилегированном режиме не получается.

В худшем случае придётся тянуть все проверки в свой модуль.
9 5 Элемент
 
02.12.10
11:55
Заинтересовал этот вопрос "В толстом клиенте этот модуль выполняется на клиенте".
Проверил и вот что получилось в клиент-серверном варианте в толстом клиенте:
- модуль выполняется на сервере, если проведение из управляемой формы.
- модуль выполняется на клиенте, если проведение из обычной формы.
10 Defender aka LINN
 
02.12.10
11:58
(8) " а документОбъект передать в процедуру проверки остатков в привилегированном режиме не получается" - а для нахрена его передавать в эту процедуру?
11 MaxS
 
02.12.10
12:16
(10) хм, Ссылку проглотил. спасибо за мысль. Видимо я сегодня поспешил и не глубоко копал. ;)
но там есть такая часть кода:
ЗаполнениеДокументов.КурсДокумента(ДокументОбъект...
а вдруг в Объекте данные отличаются от Ссылки?
(9) да, вот такая засада
12 Defender aka LINN
 
02.12.10
12:22
(11) При проведении отличаться не должны.
13 MaxS
 
02.12.10
12:57
(12) тоже так думаю, но допустим есть проведенный документ. пользователь открывает, меняет данные, например тип цен. запускает перепроведение, получает ошибку(отказ), не записывает документ и он остаётся таким же как был до повторной попытки проведения.