25.07.2005, 17:17 | #1 |
Участник
|
Уважаемые профессионалы помогите
Подскажите как можно определить источник вызова метода.
Например я хочу писать такую историю записей в таблицу: переопределяю метод insert - в нем пишу добавление записи в свою таблицу истории, туда я хочу записать объект АОТ, который возвал этот метод insert или форму с которой он был вызван. (Извиняюсь за корявость формулировки) Заранее спасибо. |
|
25.07.2005, 17:26 | #2 |
Модератор
|
1) Иногда, допустим, для того, чтобы избежать рекурсии или не вызывать длительную цепочку обновлений, используется doInsert/doUpdate. Их не отловишь. Надавно тема проходила, ищите.
2) Есть стандартный механизм логирования. Читайте администрирование, смотрите SysDatabaseLog. Мы на его основе делали. 3) Перекройте insert и поставьте на super брекпоинт. Смотрите стек вызовов. С Уважением, Георгий |
|
14.08.2009, 14:07 | #3 |
Участник
|
скажите( я понимаю, что дело давно уже было), но все же. На сколько медленней работает логгирование, если использовать журнал БД по сравнению с переопределением кода на insert/update/delete? Будет ли опепация insert_recordset/update_recordset выполняться курсорно запись за записью или останутся bulk-операциями, если использовать журнал БД
|
|
14.08.2009, 14:21 | #4 |
Участник
|
Не касаясь остального, я пользую метод (тут кстати подсказали)
Положил его в Global и отлично. Можно переопределить, чтобы в БД писал. X++: static server boolean stackTrace2File(anytype _string, str _mode = 'A',Filename _file = "") { Filename fileName = xInfo::directory(DirectoryType::Config) + '..\\..\\log\\' + curuserid() + '-info2File.txt'; str toFile = strFmt("%1 [%2] '%3'", systemdateget(), time2str(timenow(), 1, 1), _string) + '\n'; // FileIOPermission perm = new FileIOPermission(fileName, _mode); container stack = xSession::xppCallStack(); AsciiIo file; str stackTraceStr(container stackTrace) { int i; str s = ""; ; for(i = 1; i <= conLen(stackTrace); i += 2) s+=strFmt("%1:%2\r\n", conPeek(stackTrace, i), conPeek(stackTrace, i+1)); return s; } ; // perm.assert(); file = new AsciiIO(fileName, 'A'); if (file.status() == IO_Status::Ok) { file.write(toFile+'\r\n' + stackTraceStr(stack)); return true; } return false; } |
|
14.08.2009, 14:39 | #5 |
MCITP
|
Цитата:
Вообщем-то проверить вы это можете и сами - дело 2-х минут... Будет выполнятся курсорно, если не использовать .skipDataBaseLog()
__________________
Zhirenkov Vitaly |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Помогите с отчетом | 6 | |||
Помогите с алгоритмом | 1 | |||
Курсовые разницы! Помогите! | 7 | |||
Помогите. Никак не могу законектиться по ODBC!!! | 10 | |||
Ребята плиз помогите! Данные! | 6 |
|