журнал изменений

Добрый день!
В 7.6 есть возможность включить журнал изменений по какому-то объекту
Для этого необходимо в объекте включить соответствующий признак, а также в объекте указать соответствующие поля, по которым должны отслеживаться изменения.

Вопросы:
1)Можно ли посмотреть журнал изменений, встав на конкретную запись в системе?
например в карточке контрагента/обращения/контакт выбрать действие - "показать журнал изменений", и сразу же откроется история изменений именно по этой записи.
Искать в общем журнале неудобно, долго

2) Далее, в журнале изменений видно, что какой-то пользователь что-то менял в объекте, но не видно что же собственно он менял - например, в объекте "Обращения" отслеживаются изменения нескольких полей - ответственный, состояния и т.п.
Хотелось бы посмотреть, какие конкретно поля менялись, и что именно - в этом же и заключается смысл отслеживания изменений. Есть на данный момент такая возможность?

Возможность просмотреть историю изменений по конкретной записи, а также, какие именно поля менялись, была на платформе 3.х (3.4).
В версию 7.х данной возможности пока нет?

Нравится

10 комментариев

По поводу вопроса с журналом изменений по конкретной записи увидела, что необходимо добавлять деталь самостоятельно
тема http://www.community.terrasoft.ru/forum/topic/12526

Хотя, на мой взгляд, было бы логично, если бы деталь включалась бы автоматически.

А что по поводу просмотра, какие именно поля менялись? Причем, насколько я вижу через sql, история изменения этих полей записывается - но только почему-то не выводится в клиенте такая информация

Дарья, здравствуйте.

Когда Вы настраиваете журнал изменений, Вы выбираете колонки для логирования.

После того, как добавите деталь, Вы можете вывести в реестр настроенные колонки.

Отсортируйте по дате изменения и смотрите, какие колонки были изменены.

Добрый день! Спасибо
Тогда вопрос по добавлению детали
В теме http://www.community.terrasoft.ru/forum/topic/12526
предлагается создать в конфигурации объект представления VwSysContactLog, и скрипт для создания представления в бд.
Этот объект надо унаследовать от другого какого-то объекта?
На принтскрине в объекте перечислены следующие поля ID, Name, ChangeTracked.
ChangeTracked - это справочник судя по всему - на какой справочник ссылка должна быть?
Id - это уникальный идентификатор, не вижу такой тип поля при добавлении поля в объект, как его добавить?
Если я хочу на деталь выводить колонки для логирования, такие как ответственный, статус и т.п., мне тогда нужно добавить их как поля в этот объект представления?

Дарья, здравствуйте!

1. Если Вы присмотритесь внимательно, то по скриншотам видно, что:

- Родительский объект не указан;
- ID указан, который был добавлен руками как новая колонка (уникальный идентификатор).

2. ChangeTracked – это ссылка на логируемый объект.

3. Отображение колонок зависит, от того как Вы настроите логирование объекта в журнале изменений. Отобразите колонки, которые Вам нужны.

«Поигратесь» создавать объект на основании представления экспериментальным путем и в результате все станет ясно.

Спасибо - с деталью получилось вывести колонки.

Остался вопрос по общему журналу изменений.

В журнале есть действие "Показать все изменения выделенной записи".
Я так понимаю, непосредственно с этим действием связана страница «RecordAllChangesGridPage»
из темы http://www.community.terrasoft.ru/forum/topic/13020
Вижу, что в функции идет окрашивание записи в целом(красная,синяя,зеленая)
и окрашивание одного поля в реестре(т.е. логируемого поля, если его значение изменено),
но эта ветка из форума по 5.х

Получается, что в 5.х в форму действия "Показать все изменения выделенной записи" можно каким-то образом вывести логируемые колонки в форму этого действия (раз в схеме прописана их подсветка),
а в 7.х подобный функционал еще не появился. Правильно ли я понимаю?

Хотела бы в детали журнала изменений по конкретному объекту также сделать подсветку тех логируемых колонок, которые были изменены.

Можно ли ориентироваться на подобный код из 5.х, который вы приводили
в теме http://www.community.terrasoft.ru/forum/topic/13020

var cellsBackground = new Dictionary();
if (PreviousRow != null && HighlightColumns) {
var previousRow = PreviousRow as Entity;
foreach (var column in row.Schema.Columns) {
if ((column.Name != "ModifiedOn") && (column.Name != "ModifiedBy")
&& (column.Name != "ChangeTrackedBy") && (column.Name != "ChangeTrackedOn")
&& (column.Name != "ChangeType")) {
object currentValue = row.GetColumnValue(column.Name);
object prevValue = previousRow.GetColumnValue(column.Name);
if (!Object.Equals(currentValue, prevValue)) {
cellsBackground.Add(column.Name, new DataSourceRowColumnBackgroundColorConfigValue("#FFF30F"));
}
}
}
}
PreviousRow = row;
config.AddConfig(new DataSourceRowColorConfigValue(backgroundColor));
config.AddConfig(new DataSourceRowColumnsBackgroundColorConfigValue(cellsBackground));
return config;
}
Или же принципы подсветки поля в 7.х другие?
Можно ли в 7. отображать другим цветом одно поле в реестре, или подобная возможность есть только в 5.х пока?

Дарья, ниже приведен пример как реализовать подсветку записей.

Цель: Реализовать подсветку записей реестра если у продажи на объекте поле IsNotInterest= true
Реализация:

Создаем метод gridRecolor.

gridRecolor: function () {
   var gridData = this.getGridData();
   var items = gridData.getItems();
   var loadedObject = {};
   Terrasoft.each(items, function (item) {
      item.customStyle = null;
      var facilityId = item.get("Facility").value;
      var opportunityId = item.get("Opportunity").value;
      var isNotInterest = item.get("IsNotInterest");
      //Если условие подходит, меняем цвет записи на темно-серый.
      if (isNotInterest) {
         item.customStyle = {
           'color' : "darkgrey"
         }
      }
      var primaryValue = item.get(item.primaryColumnName);
      //Формируем новый набор данных уже с подсветкой
      loadedObject[primaryValue] = item;
   }, this);
   gridData.clear();
   //загружаем новый набор данных
   gridData.loadAll(loadedObject);
},

Замещаем метод onGridDataLoaded, добавив в него вызов gridRecolor

onGridDataLoaded: function () {
   this.callParent(arguments);
   this.gridRecolor();
},

Вам остается только изменить предоставленный пример согласно Вашей бизнес-задаче.

Добрый день!
Спасибо, я видела этот пример - он подсвечивает всю запись реестра.
Мой вопрос был в том - можно ли сейчас подсветить отдельное поле(ячейку) в реестре в 7.х ( в 5.х как я вижу была такая возможность). Только запись можно целиком, получается?

и правильно ли я понимаю, что в общем журнале изменений в 7.х сейчас не получится посмотреть, что именно изменено ( только если деталь сделать):

"Получается, что в 5.х в форму действия "Показать все изменения выделенной записи" можно каким-то образом вывести логируемые колонки в форму этого действия (раз в схеме прописана их подсветка),
а в 7.х подобный функционал еще не появился. Правильно ли я понимаю?"

Дарья, уточнил у департамента разработки.
Выделять цветом можно только на уровне всей записи.

Ясно, спасибо

Спасибо

Показать все комментарии