Публикация

При переходе по ссылке из поля типа "Справочник" открывается не та страница редактирования

Симптомы

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

Причина

Некорректное формирование гиперссылки по данным поля.

Решение

Проблема исправлена в последних версиях 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*/
	};
});

Необходимые условия и возможные ограничения

После обновления до версий, в которых данная проблема исправлена, необходимо удалить описанное выше замещение из пользовательского пакета.

Нравится

Поделиться

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