![]() |
|
УстановитьПривилигерованныйРежим() при внешнем соединении | ☑ | ||
---|---|---|---|---|
0
Холодильник
26.06.14
✎
11:25
|
подключаюсь com соединением к скульной базе, запускаю процедуру общего модуля.
модуль с признаком внешнего соединения, в процедуре устанавливается привилегированныйРежим(сам модуль не привилегированный) и если из внешней обработки процедуры этот привилегированный режим устанавливается, то внешним соединением - нет. хотя, читаю : Глобальный контекст (Global context) УстановитьПривилегированныйРежим (SetPrivilegedMode) Синтаксис: УстановитьПривилегированныйРежим(<Включить>) ... Доступность: Сервер, толстый клиент, внешнее соединение. почему при внешнем соединении привилегированный режим не ставится? |
|||
1
Холодильник
26.06.14
✎
11:27
|
БезопасныйРежим = ложь, в подключаемой базе
|
|||
2
ДенисЧ
26.06.14
✎
11:29
|
Он работает только на сервере.
|
|||
3
Холодильник
26.06.14
✎
11:35
|
(2) да. а где в таком случае выполняется код, запускаемый внешним подключением? при том, что у модуля нет признака выполнения на клиенте
|
|||
4
Холодильник
26.06.14
✎
11:59
|
ну так что?
|
|||
5
Бешеная Нога
26.06.14
✎
12:05
|
текст ошибки и текст в журнале регистрации какой?
|
|||
6
ДенисЧ
26.06.14
✎
12:05
|
(3) Во внешнем подключении. Ваш Кэп.
|
|||
7
MM
26.06.14
✎
12:12
|
(3) код внешнего соединения выполняется длл-кой в процессе, вызвавшем СОМ объект COMConneсtor. А значит выполнение идёт в той программе, которая это соединение установила, например Excel или скрипт на VB или JavaScript. Так что доверять этой сторонней программе сервер 1С, ну никак, не может, ибо она может работать на другой машине и её код может подвергаться внешнему воздействию от разработчика этого приложения.
Эта же длл-ка отвечает и за пул соединений к БД, кешируя их, если они пересоздаются. |
|||
8
Холодильник
26.06.14
✎
12:16
|
(5)
текст ошибки простой: Нарушение прав доступа! код процедуры общего модуля примерно такой: УстановитьПривилегированныйРежим(ИСТИНА); Константы.Какаятоконстанта.Установить(КакоетоЗначение); вызывая на серве эту процедуру ошибок не происходит, а при внешнем - привил режим не устанавливается |
|||
9
Холодильник
26.06.14
✎
12:20
|
+ какие еще варианты есть? мне нужно в 100500 базах установить значение константы, вручную - не вариант.
пробую создавать аппликейшн подключение с открытием внешней обработки, в модуле которого пишу код Какойтообщиймодуль.УстановитьЗначениеКонстантыВПРивРежиме() ругаетсо на то, что не может найти "Какойтообщиймодуль". у этого модуля Сервер = истина Клиент = ложь Внеш Подкл = истина вызов серва = ложь привилег = ложь |
|||
10
Холодильник
26.06.14
✎
12:20
|
(7) благодарю за развернутый ответ..
|
|||
11
MM
26.06.14
✎
12:35
|
(9) Даже у полноправного пользователя нет права изменять эту константу без привилегированного режима?
|
|||
12
Холодильник
26.06.14
✎
12:36
|
(11) да. если б были права, стоило бы заниматься подобным извращением..
|
|||
13
Холодильник
26.06.14
✎
12:47
|
создаю соединение аппликейшн, создаю в нем внешний отчет в без режиме, в модуле которого пишу прямо:
УстановитьПривилегированныйРежим(ИСТИНА); Константы.Какаятоконстанта.Установить(КакоетоЗначение); но это выполняется на клиенте а как выполнить на сервере? |
|||
14
Холодильник
26.06.14
✎
12:48
|
+ как в модуле обработки создать код, который выполнится на сервере?
Обработка вызывается как ВнешниеОбработки.Создать("путькобработке",ЛОЖЬ) |
|||
15
MM
26.06.14
✎
13:33
|
(13) можно использовать управляемую форму, у неё есть возможность уходить на сервер, только базу надо будет в управляемом режиме открывать.
|
|||
16
Холодильник
26.06.14
✎
14:27
|
(15) ага. сделал проще намного. и быстрее..
|
|||
17
Холодильник
26.06.14
✎
14:28
|
+ для каждой базы создаю ком строку с запуском с внешней обработкой, а во внешней, ПриСозданииНаСервере - серверный код, в ПриОткрытии - завершить работу системы..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |