Имя: Пароль:
1C
1С v8
Запуск фонового задания от имени другого пользователя
0 ZhigaCzar
 
06.10.20
09:31
Доброго времени суток, форумчане!
Объясняю ситуацию. Необходимо запускать определенное фоновое задание по нажатию на кнопку. Но запускать необходимо не под тем пользователем, под которым осуществлен вход в 1с, а под другим (т.к. права пользователя не дадут выполнить часть функций исполняемых в фоновом задании).
Подскажите, можно ли каким-либо образом указать пользователя, под которым будет выполнено фоновое задание.

Платформа: 1С:Предприятие 8.3 (8.3.12.1685)
Конфиг: УТ10.2 сильно допиленный.

З.Ы.
Вариант выдать права — не вариант, так же как и дать доступ в консоль заданий.
1 acht
 
06.10.20
09:50
Ты хочешь сделать ровно то, для запрета чего собственно и придумали права на данные.
2 acht
 
06.10.20
09:51
Перейти в привелигированный режим на сервере не предлагать?
3 ДенисЧ
 
06.10.20
09:52
Выдай права.
Ну или в привилегированный модуль беги. Но за такое обычно дают до 5 лет строгого расстрела. С конфискацией и без права.
4 arsik
 
гуру
06.10.20
09:56
(3) А для чего тогда нужен привилегированный модуль? Именно для таких ситуаций.
5 fisher
 
06.10.20
09:57
(3) Почему? Привилегированный режим/модуль - это вполне нормальный вариант. Если там, конечно, нет какого-то криминала типа получения результата выполнения любого запроса или какой другой дырки безопасности.
6 Cyberhawk
 
06.10.20
09:58
Создаешь РЗ с нужным методом. Указываешь ему нужного пользователя ИБ. Профит.
7 ZhigaCzar
 
06.10.20
09:58
(1) Там выполняются функции внутри транзакции, надо, чтобы выгрузка файлов была корректной, но они не работают под правами пользователя, который будет запускать фоновое задание.
(2) Думаю, что это не устроит начальство ))
(3) Права выдать — точно нет. Насчет привилегированного модуля не думал, но думаю, что вариант не пойдет.
8 ZhigaCzar
 
06.10.20
09:59
(5) собственно дырок безопасности там нет, там лишь документы задним числом проводятся )
9 fisher
 
06.10.20
10:01
УстановитьПривилегированныйРежим(Истина)
10 ДенисЧ
 
06.10.20
10:02
(4) (5) Ну, для начала для того, чтобы ПМ существовал, надо его создать и прописать в нём функции. А если туда будет лезьть кто нипопадя...
11 ZhigaCzar
 
06.10.20
10:05
(6) Когда создаешь РЗ в конфигураторе, то там нельзя указать пользователя, под которым будет выполнятся это самое РЗ. Однако можно указать в консоли заданий, но это распространяется только на выполнение из консоли заданий и на выполнение по графику.
При выполнении ФоновыеЗадания.Выполнить(....) запускается все равно под тем пользователем, под которым вызвали функцию.
12 Cyberhawk
 
06.10.20
10:07
(11) Очевидно, придется отказаться от конструкции ФоновыеЗадания.Выполнить и заменить ее на однократный вызов предварительно созданного экземпляра РЗ с нужным пользователем ИБ в свойствах
13 ZhigaCzar
 
06.10.20
10:12
(12) Пока что лучший вариант ) Спасибо.
14 arsik
 
гуру
06.10.20
10:12
(10) Ну создаешь свой модуль. Делов то.
Ну и многие путают общий модуль с привилегированными правами и метод УстановитьПривилегированныйРежим.
15 fisher
 
06.10.20
10:17
(12) И как можно осуществить "однократный вызов предварительно созданного экземпляра РЗ с нужным пользователем ИБ в свойствах"?
Вроде ж прямых путей нет. Только черезжопные.
16 IvanVlad007
 
06.10.20
10:17
(12) +
17 ZhigaCzar
 
06.10.20
11:10
Оказывается, что регламентное задание запускается при записи (хтя информация в интернете была такая, что регламентное задание можно запустить лишь с помощью фонового задания). Как сделали: берем РЗ по ключу, ставим туда нужного пользователя и параметры, записываем и профит!
Спасибо всем, особенно (12)
18 Cyberhawk
 
06.10.20
11:13
(15) Какие проблемы?
19 fisher
 
06.10.20
11:51
(18) У меня никаких. Думал, может чего не знаю.
20 Cyberhawk
 
06.10.20
13:44
(19) То есть ты задаешь вопрос, а потом утверждаешь, что ты не не знаешь чего?
21 fisher
 
06.10.20
13:54
(20) Ага. Ибо перезапись регламентного задания для его запуска я отношу к черезжопным вариантам. Или ты таки таишь сакральное знание, которым не спешишь поделиться? Тогда прошу - не держи его в себе :)
22 Cyberhawk
 
06.10.20
18:06
(21) Зачем перезапись? Создал экземпляр и после запуска - удалил. Не мешая "основному" экземпляру.
23 ZhigaCzar
 
07.10.20
08:16
Нашли вариант попроще, т.к. для создания регламентного задания тоже свои права выдавать надо:
Поднимаем COM-соединение с базой под тем пользователем, под которым необходимо запустить фоновое задание и уже там его и запускаем. Проще и безопаснее, на мой взгляд.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн