Имя: Пароль:
1C
 
Ведение лога
0 Stepa86
 
21.08.08
09:48
Хочу сделать лог в 1Ске (8.1.11) кто делал? Какие могут быть трудности? Пока идея - в регистр сведений писать при каждом событии и особенно в обработке исключений...
1 Stepa86
 
21.08.08
09:49
Блин, а почему не было выбора v7 или v8? Можно перенести?
2 Скользящий
 
21.08.08
10:00
Выбор есть, это у тебя зрение плохое.
3 Stepa86
 
21.08.08
10:06
Я знаю, что он есть и где должен быть, но при создании ветки не было, я думал из-за того, что у меня фильтр по темам v8 стоит, а тут такая засада =(
Но хотелось бы по теме... =)
4 Stepa86
 
21.08.08
11:03
Никто не ведет логи в системе? или всех устраивают штатные средства???
5 Sammo
 
21.08.08
11:11
Можно использовать запись лога в стандартный журнал регистрации. См.
ЗаписьЖурналаРегистрации (WriteLogEvent)
6 Stepa86
 
21.08.08
11:21
"Средствами встроенного языка не могут записываться системные события, записываемые при записи объектов, удалении и т.д. "

значит я не смогу записать в лог ошибки, которые возникли при записи???
7 Qvz
 
21.08.08
11:39
Штатный журнал в 8.1 почти ничем не отличается от 7.7 - тот же сплошной файл, поиск в котором занимает очень много времени.

В реализация своего журнала не вижу никакой сложности.
1. Плоский регистр сведений с нужными ресурсами (Объект, его представление, Пользователь, ДатаВремя...).
2. Подписка на нужные события (Запись, проведение,...) нужных объектов
8 Stepa86
 
21.08.08
11:48
(7) я и не говорю, что сложно, меня интересуют подводные камни... главная задача этого регистра, чтоб можно было отследить из-за чего произошла ошибка, а не кто и когда проводил такой то документ. В идеале - по регистру можно определить ошибки, произошедшие на сервере при регламентном задании...
9 Stepa86
 
21.08.08
11:53
Кто знает, как отрабатывает вложенный отлов ошибок, типа:

Попытка
  Попытка

  Исключение
     Попытка

     Исключение

     КонецПопытки
  КонецПопытки

  Попытка

  Исключение

  КонецПопытки

Исключение

КонецПопытки

? Куда должно передаваться управление? в ближайшее исключение, или в последнее???
10 Qvz
 
21.08.08
11:56
(8) в 1с 8.1 нет возможности глобально установить свой обработчик исключений.
Если я правильно понял, то необходимо отловить ошибки кода (вернее ошибки тестирования), то тут либо исполнять весь код в Попытке и в исключении писать в лог. Но это геммор, либо обязатель пользователей сообщать об ошибках с принтскрином.
11 Qvz
 
21.08.08
11:57
(9) Вложенный блок ошибок отрабатывает корректно. Т.е. передает управление в тот вложенный блок, где произошла ошибка.
12 ptiz
 
21.08.08
11:59
Со штатным журналом 8.1 работать практически невозможно - тормозит по-черному.
Запись в регистр плоха тем, что каждое такое событие 1С автоматом отмечает в своем журнале.
Лучше всего напрямую писать в таблицу регистра сведений средствами SQL (если говорить про клиент-сервер). Тогда и 1С ничего лишнего писать не будет и анализировать можно из 1С и данные не потеряются.
Только лень разбираться с представлениями полей и т.п. :)
13 Qvz
 
21.08.08
12:01
(12) в конфигураторе запись в штатный журнал регистрации можно отключить.
14 Stepa86
 
21.08.08
12:03
(10) во-во сейчас занимаюсь тем, что в ключевые функции попытку добавляю, опять же хотелось, чтоб у пользователя не окно с ошибкой было, а сообщение "тут все нае@@улось, вы пока работайте, программисту отправлено письмо, как он разберется, проблема будет решена..."
15 Stepa86
 
21.08.08
12:08
(7) сохраняю на Объект, представление итд, а структуру ИнформацияОбОщибке(), но не знаю как себя поведет эта структура - ошибок нет =(
16 GenV
 
21.08.08
12:08
(14) Можно попробывать выдавать такое сообщение через службу сообщений видов после получения ошибки в попытке, а не через 1С. Но все равно все ошибки так отловишь.
17 Stepa86
 
21.08.08
12:12
Может сделать какую нить чудо процедуру:


Процедура ВыполнитьПроцедуру(Текст)

Попытка

Выполнить(Текст)

Исключение

ЗаписатьВЛог();

КонецПопытки;

КонецПроцедуры

И вызывать ее для всех процедур (естественно ее доработать надо для передачи параметров и для функции тоже сделать)
18 Qvz
 
21.08.08
12:15
(17) Это будут дополнительные тормоза.
Выполнить(...) выполняет код медленнее, чем обычный.
Да и переписывать все вызовы через "ЧудоПроцедуру" не меньший труд, чем написать там же попытки.
19 Sammo
 
21.08.08
12:27
(12) В 8.1 журнал намного лучше работает, чем в 8.0. Кстати, пробовали периоды выбирать.

Имхо, есть 4 варианта: справочник, регистрсведений, журнал регистрации, внешнее хранилище
Для решения - чего выбирать - необходимо для начала определеиться - какая информация будет писаться в лолг. Примерный объем и т.д.
(9) управление передается дальше. Кстати, вложенные Попытки рекомендую использовать вельми осторожно. + см реквизит ВызватьИсключение
20 Stepa86
 
21.08.08
12:31
(19) сейчас пишется в регистр: ДатаВремя, Пользователь, НомерЗаписи, Комментарий (то что я напишу при записи в лог), ИнформацияОбОшибке() - 5 реквизитов
21 Sammo
 
21.08.08
12:36
(20) Объект, например? Ссылка на объект, в котором произошла ошибка
22 Stepa86
 
21.08.08
12:40
(21)ИнформацияОбОшибке (ErrorInfo)
Свойства:
ИмяМодуля (ModuleName)
ИсходнаяСтрока (SourceLine)
НомерСтроки (LineNumber)
Описание (Description)
Причина (Cause)

Описание:
Предназначен для представления структурированной информации об ошибке (исключении).

Мне кажется этого достаточно для определения объекта, в котором произошла ошибка, а ссылку я передаю в комментарии (код на элемент, если это справочник или документ) - почти наверняка эта инфа юудет выгружаться в текстовый файл, а там могут возникнуть проблемы с ссылками
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.