Имя: Пароль:
1C
1С v8
ошибка при исполнении на сервере при регламентном задании
0 belarus
 
24.09.12
18:07
При выполнении регламентного задания выскакивает ошибка:
ОбщийМодуль.Пользователи {367} Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "В данной транзакции уже происходили ошибки!"

в следующей функции:

Функция ПолучитьЗначениеПраваПользователя(Право, ЗначениеПоУмолчанию = Неопределено, Пользователь = Неопределено) Экспорт

   ВозвращаемыеЗначения = Новый СписокЗначений;
   СписокНабораПрав = ПолучитьСписокНабораПрав(Пользователь);

   Запрос = Новый Запрос;

   Запрос.УстановитьПараметр("НаборПрав"        , СписокНабораПрав);
   Запрос.УстановитьПараметр("ПравоПользователя", Право);

   Запрос.Текст =
   "ВЫБРАТЬ
   |    Значение
   |ИЗ
   |    РегистрСведений.ЗначенияПравПользователя КАК РегистрЗначениеПрав
   |
   |ГДЕ
   |    Право = &ПравоПользователя
   | И НаборПрав В(&НаборПрав)
   |
   |";

   Выборка = Запрос.Выполнить().Выбрать();

   Если Выборка.Количество() < СписокНабораПрав.Количество() Тогда
       ВозвращаемыеЗначения.Добавить(ЗначениеПоУмолчанию);
   КонецЕсли;

   Пока Выборка.Следующий() Цикл
       Если ВозвращаемыеЗначения.НайтиПоЗначению(Выборка.Значение) = Неопределено Тогда
           ВозвращаемыеЗначения.Добавить(Выборка.Значение);
       КонецЕсли;
   КонецЦикла;

   Возврат ВозвращаемыеЗначения;

КонецФункции // ПолучитьЗначениеПраваПользователя()


в чем может быть ошибка?
1 Рыцарь
 
24.09.12
18:16
Право или СписокНабораПрав возможно не определены
2 IronDemon
 
24.09.12
19:01
Пользователя нет. 1С от имени сервера работает.
Было такое у меня.
3 belarus
 
24.09.12
19:04
есть пользователь и набор прав есть... я их в модуле сеанса определяю
4 IronDemon
 
24.09.12
19:08
Не, ты не понял.

При выполнения регламентных заданий пользователя (в серверном режиме) нет.
Соответственно код типа:

ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "Трали-вали")
ПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.ПечатьНепроведенныхДокументов, Ложь)

не работает.
5 IronDemon
 
24.09.12
19:10
Поэтому

   Если (РольДоступна("ПолныеПрава") ИЛИ РольДоступна("Аналитик") ИЛИ (РольДоступна("ДиректорСклада") И РольДоступна("СтаршийМенеджерПоПродажам"))) Тогда
       мПолныеПрава = Истина;
   Иначе
       мПолныеПрава = Ложь;
   КонецЕсли;
   #Если ВнешнееСоединение Или Сервер Тогда
       мПолныеПрава = Истина;
   #КонецЕсли
6 belarus
 
25.09.12
11:21
не помогает
7 belarus
 
25.09.12
12:28
В обработке есть строка:

ОбработкаОРПБУ.Организация = ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнаяОрганизация");

т.к. пользователя нету, как можно получить значение организации?
8 AaNnDdRrEeYy
 
25.09.12
12:33
назначить пользователя регламентному заданию, в обработке "Управление регл заданиями". там поле есть "Пользователь"
9 Kreont
 
25.09.12
12:34
а) передать в обработку параметром
б) указать явно в обработке
в) определить пользователя вручную, и потом по аналогии
10 cw014
 
25.09.12
12:34
(0) ВЫБРАТЬ РАЗРЕШЕННЫЕ
11 Kreont
 
25.09.12
12:34
(8) там нельзя, ведь тогда кажись обработка не запустится пока указ.пользователь не зайдет в базу, не?
12 Кедр
 
25.09.12
12:35
Мне в свое время помогло только (8)
13 AaNnDdRrEeYy
 
25.09.12
12:35
(11) не регл задание на сервере выполняется, ему пофигу кто в базу зашел.
14 belarus
 
25.09.12
12:38
Обработкой Консоль заданий делаю под определенным пользователем... но ошибка
что в шапке темы...
15 belarus
 
25.09.12
12:44
в параметрах сеанса определяю пользователя...
у пользователя все права...
ОбщийМодуль.Пользователи {367} Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "В данной транзакции уже происходили ошибки!"
16 AaNnDdRrEeYy
 
25.09.12
12:44
В начале процедуры напиши УстановитьПривелигированныйРежим(истина)
17 ptiz
 
25.09.12
12:48
"В данной транзакции уже происходили ошибки" - значит, что в текущий момент активна открытая ранее транзакция и в ней где-то были ошибки (например, в Попытка/Исключение сработало Исключение).
И дальнейшие операции типа запросов к БД, будут давать такую ошибку.
18 belarus
 
25.09.12
12:51
я убрал все исключения... ошибка та же
19 Kreont
 
25.09.12
12:51
(18) вручную (не в регл.задании) обработка хоть запускается?
20 belarus
 
25.09.12
12:53
не в регламенте отрабатывает без ошибок
21 IronDemon
 
25.09.12
13:06
(7)
//ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
ТекущийПользователь = Ссылка.Ответственный;