2014-02-05 3 views
0

Это мой первый опыт работы с Genexus, и я хочу знать, как создавать функции журнала.Создание функций журнала с помощью Genexus

Я создал объект транзакции «Журналы», но мне не нужно взаимодействие с пользовательским интерфейсом. Кроме того, я хочу вставить запись в таблицу «Журналы» непосредственно внутри событий, таких как «After Trn».

Как это сделать? Какой лучший подход?

Буду признателен за любую помощь. Благодаря!

ответ

3

Вы должны определить процедуру с информацией должен войти, например logAdd

Если это веб-приложение, которое можно извлечь пользователь из websession, если это приложение победы вам нужно передать его на парм.

Затем вы вызываете процедуру над Дополнением каждой транзакции.

Веб Пример:

logAdd.Call(&Pgmname, "Clients", CliId.ToString(), &Mode) on BeforeComplete; 

Важно, что logAdd процедура имеет свойство Commit on exit в false. Таким образом, информация будет регистрироваться только в том случае, если транзакция подтверждена.

Update - получение старых значений в вашей процедуре регистрации

Чтобы получить предыдущие значения сделки вы можете воспользоваться BUSSINESS компонентов. После установки транзакции как Bussiness Component вы поставите следующие правила по вашей сделке:

[WEB] { 
    &Clients.load(CliId) if update on BeforeValidate; 
    logClients.Call(CliId, &Clients, &Mode) on BeforeComplete; 
} 

&Clients является переменным на основе вашего типа Bussiness компонентов.

В prc:logClients вы можете получить доступ ко всем старым значениям через &Clients.Att.GetOldValue(), и новые значения через обычный For Each

+0

Это именно то, что мне нужно. Благодарю. Когда я получаю доступ к атрибутам BeforeComplete, я получаю новое значение. Я использую таблицу журналов «Предыдущее состояние». Есть ли способ получить значение перед фиксацией? – devdev