|  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 | |||
| 
 |