gifts2017

Фиксим ошибки с созданием задачи администратору системы, на примере УТ 10.3

Опубликовал Danil Snissarenko (d.snissarenko) в раздел Программирование - Практика программирования

При внедрении УТ 10.3, столкнулся с проблемой, связанной с людьми, возникла необходимость написания АРМ'ов для каждого из участка бизнес-процесса, для простоты отладки был задействован метод Попытка .. Исключение Сообщить (ОписаниеОшибки()); КонецПопытки; .
Однако пользователи системы звонили, говорили все, что угодно только не сообщение об ошибке :).

В результате чего родилась идея создавать задачу администратору системы, для чего необходимо

 

1. Внести один предопределенный элемент в "План видов характеристик" - "НастройкиПользователей"  с типом булево  и наименование = "АдминистраторСистемы".

2. Общий модуль - "Общего назначения" положить экспортную процедуру

    Процедура СоздатьЗадачуАдминистраторуСистемы (СообщениеОбОшибке,Заказ=Null) Экспорт
   
Запрос = Новый Запрос;
   
Запрос.Текст = "ВЫБРАТЬ
    |НастройкиПользователей.Пользователь
    |ИЗ
    |    РегистрСведений.НастройкиПользователей КАК НастройкиПользователей
    |ГДЕ
    |    НастройкиПользователей.Настройка = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиПользователей.АдминистраторСистемы)
    |    И НастройкиПользователей.Значение = ИСТИНА"
;

   
Результат = Запрос.Выполнить();
    Если НЕ
Результат.Пустой() Тогда
   
Выборка = Результат.Выбрать();

    Пока
Выборка.Следующий() Цикл

   
ТекЗадача = Задачи.ЗадачиПользователя.СоздатьЗадачу();
   
ТекЗадача.Наименование="Ошибка системы";
   
ТекЗадача.Дата  = ТекущаяДата();
   
ТекЗадача.Выполнена = ложь;
   
ТекЗадача.ДатаИсполнения = ТекущаяДата()+900;
   
ТекЗадача.Инициатор = ПараметрыСеанса.ТекущийПользователь;
   
ТекЗадача.Исполнитель = Выборка.Пользователь;
   
ТекЗадача.Оповещение=Истина;

   
ТекЗадача.Описание = СообщениеОбОшибке;
   
ТекЗадача.СрокИсполнения = ТекущаяДата() + 1800;
   
ТекЗадача.СрокОповещения = ТекущаяДата()+ 120;
    Если НЕ
Заказ=Null Тогда
   
ТекЗадача.Объект = Заказ;
    КонецЕсли;
    Попытка
   
ТекЗадача.Записать();
    Исключение
    КонецПопытки;
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры


3. Задать конкретным пользователям ИБ значение Администратор системы.

 

После чего можно в любом модуле в делать вызов данной функции.

Принципиально она позволяет создавать задачу любой направленности для АдминистратораСистемы.

 

В итоге выловена ошибка на поиск которой ушел месяц из-за ее плавающего эффекта за 15 минут .

 

 

 

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Saw (Re:аниматор) 01.09.09 12:57
>В итоге выловена ошибка на поиск которой ушел месяц из-за ее плавающего эффекта за 15 минут .

а подключиться к пользователю или подойти к нему когда возникала ошибка сложно было?)

у нас по всем ошибкам, подключаемся к пользователю и все визуально видим. хотя идея гут, что то подобное делал, как по ошибки виндовса, отправить сообщение об ошибке.
2. Drock (d.snissarenko) 01.09.09 15:37
Ошибка была плавающей связанной с дата+время, шла запись в регистры сведений в итоге ТекущаяДата() успевала убежать отчего падал отбор, а идти не совсем рядом ;)
3. Drock (d.snissarenko) 01.09.09 15:38
пс у меня склад работает на тонких клиентах + в политиках подключение к терминальным сессиям заблокировано :(
4. Артур Аюханов (artbear) 02.09.09 08:43
(0) У меня сделано по аналогии :)

У тебя значение по умолчанию Заказ=NULL
даст ошибку на ТекЗадача.Объект = Заказ.Ссылка;
исправь :)
5. Drock (d.snissarenko) 02.09.09 10:51
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа