Запись события истории происходит в настраиваемом обработчике событий.
custom-event-handlerРазвернуть исходный код
importClass(Packages.ru.intertrust.cmj.tunable.object.history.TunableHistoryHelper);
function querySave(object, document) {
writeHistory(object, document); //Запись истории
}
function writeHistory(object, document) {
//Инициализация истории
var hist = object.history();
if (object.isNew()) {
//eventCode - код события. Пример: "created"
//comment - комментарий. Пример: "Создан документ"
TunableHistoryHelper.hist_addBasicText(hist, eventCode, comment);
} else {
//object - текущий объект
//document - объект, который хранится в базе данных
//fieldName - поле document
//propertyName - свойство object
//eventCode - код события
writeTextHistory(object, document, hist, fieldName, propertyName, eventCode);
}
//Запись истории
object.history = hist;
}
function writeTextHistory(object, document, hist, fieldName, propertyName, eventName) {
var oldValue = getFieldValue(document, fieldName); //Получение старого значения из document
var newValue = getPropertyValue(object, propertyName); //Получение нового значения из object
//Сравнение значений
if (!oldValue.equals(newValue)) {
TunableHistoryHelper.hist_addTextOne(hist, eventName, oldValue, newValue);
}
}
function getFieldValue(document, fieldName) {
var value = null;
if (document != null) {
value = document.getItemValueString(fieldName);
}
return value != null ? value : "";
}
function getPropertyValue(object, propertyName) {
var value = null;
if (object != null && object.tuning().getValues().get(propertyName) != null && object.tuning().getValues().get(propertyName).getValue() != null) {
value = object.tuning().getValues().get(propertyName).getValue();
}
return value != null ? value : "";
}