Публикация
При переходе по ссылке из поля типа "Справочник" открывается не та страница редактирования
11 марта 2018 04:00
Симптомы
Проблема воспроизводится, если для раздела, на который ссылается поле, указано несколько карточек редактирования. Для любого значения открывается первая карточка.
Причина
Некорректное формирование гиперссылки по данным поля.
Решение
Проблема исправлена в последних версиях 7.6.0 и начиная с 7.7.0. Часто бывает так, что клиент по различным причинам не может обновиться до данных версий. В этом случае есть обходное решение: необходимо создать замещающий клиентский модуль для схемы BasePageV2 и вставить в него код:
define("BasePageV2", ["terrasoft"], function(Terrasoft) { return { methods: { /** * @inheritdoc Terrasoft.BasePageV2#getEntitySchemaQuery * @overridden */ getEntitySchemaQuery: function() { var esq = this.callParent(arguments); this.Terrasoft.each(this.columns, function(column) { if ((column.type === Terrasoft.ViewModelColumnType.ENTITY_COLUMN) && column.referenceSchemaName) { var referenceSchema = Terrasoft.configuration.EntityStructure[column.referenceSchemaName]; var attributeValue = referenceSchema && referenceSchema.attribute; var columnPath = attributeValue && (column.name + "." + attributeValue); if (columnPath && !esq.columns.contains(columnPath)) { esq.addColumn(columnPath); } } }, this); return esq; }, /** * @inheritdoc Terrasoft.BasePageV2#setColumnValues * @overridden */ setColumnValues: function(entity) { this.Terrasoft.each(this.columns, function(column) { if ((column.type === Terrasoft.ViewModelColumnType.ENTITY_COLUMN) && column.referenceSchemaName) { var columnName = column.name; var lookupValue = entity.get(columnName); if (!Ext.isEmpty(lookupValue)) { var referenceSchema = Terrasoft.configuration.EntityStructure[column.referenceSchemaName]; var attributeValue = referenceSchema && referenceSchema.attribute; var columnPath = attributeValue && (columnName + "." + attributeValue); if (columnPath) { var entityLookupValue = entity.get(columnPath); lookupValue[attributeValue] = entityLookupValue; this.set(columnPath, entityLookupValue); } } } }, this); this.callParent(arguments); } }, diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/ }; });
Необходимые условия и возможные ограничения
После обновления до версий, в которых данная проблема исправлена, необходимо удалить описанное выше замещение из пользовательского пакета.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать