Публикация

Ошибка при попытке в истории связанного объекта активности добавить новую активность

Симптомы

Кейс воспроизведения:

1) открыть задачу в расписании, на детали "Связи" которой заполнен лид, счет, проект и т.д.;

2) перейти по гиперссылке в карточку связанного объекта;

3) открыть вкладку "История" и деталь "Активности";

4) добавить на деталь новую задачу.

В результате получаем ошибку в консоли с сообщением: 

message: Cannot read property 'replaceCls' of null.

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

Причина

Происходит это из-за того, что в ActivitySectionV2 перекрыт метод openCardInChain следующим образом:

openCardInChain: function(config) {
   if (this.isSchedulerDataView() && (config.operation === ConfigurationEnums.CardStateV2.ADD)) {
      var historyStateInfo = this.getHistoryStateInfo();
      if (historyStateInfo.workAreaMode === ConfigurationEnums.WorkAreaMode.COMBINED) {
         this.closeCard();
      }
   }
   return this.callParent(arguments);
},

Этот код присутствует начиная с версии 7.3.0.

Решение

В версии 7.7.0 данное поведение должно быть исправлено.

Для быстрого исправления в конфигурации необходимо заместить схему ActivitySectionV2 и переопределить в ней метод openCardInChain так:

openCardInChain: function(config) {
   if (config.isLinkClick) {
      return false;
   }
   this.saveCardScroll();
   this.scrollCardTop();
   this.showBodyMask();
   var historyState = this.sandbox.publish("GetHistoryState");
   var stateObj = config.stateObj || {
            isSeparateMode: config.isSeparateMode || true,
            schemaName: config.schemaName,
            entitySchemaName: config.entitySchemaName,
            operation: config.action || config.operation,
            primaryColumnValue: config.id,
            valuePairs: config.defaultValues,
            isInChain: true
 };
   this.sandbox.publish("PushHistoryState", {
      hash: historyState.hash.historyState,
      silent: config.silent,
      stateObj: stateObj
   });
   var moduleName = config.moduleName || "CardModuleV2";
   var moduleParams = {
      renderTo: config.renderTo || this.renderTo,
      id: config.moduleId,
      keepAlive: (config.keepAlive !== false)
   };
   var instanceConfig = config.instanceConfig;
   if (instanceConfig) {
      this.Ext.apply(moduleParams, {
         instanceConfig: instanceConfig
 });
   }
   this.sandbox.loadModule(moduleName, moduleParams);
   return true;
}

 

Нравится

Поделиться

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