Не получается открыть миникарточку

Создал миникарточку, опираясь на https://academy.terrasoft.ru/documents/technic-sdk/7-16/kak-sozdat-mini-kartochku-dobavleniya. Только в моём случае это было редактирование имени существующего объекта. 

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

onButtonClick: function () {
				debugger;
				var activeRowId = this.get("ActiveRow");
				if (activeRowId) {
					this.openMiniPage({
						recordId: activeRowId,
						operation: Terrasoft.ConfigurationEnums.CardOperation.EDIT,
						entitySchemaName: this.entitySchemaName,
						isFixed: true,
						showDelay: 0,
						miniPageSchemaName: "MyUsrMorpheusMiniPage",
					});
				}
			}

Вот код миникарточки, название сущности MyUsrCar2

define("MyUsrMorpheusMiniPage", [
	"terrasoft",
	"MyUsrCar2File",
	"ConfigurationConstants",
	"css!MyUsrMorpheusMiniPageCss"
], function (Terrasoft, MyUsrCar2File, ConfigurationConstants) {
	return {
		entitySchemaName: "MyUsrCar2",
		attributes: {
			"MiniPageModes": {
				"value": [this.Terrasoft.ConfigurationEnums.CardOperation.EDIT]
			}
		},
		methods: {},
		diff: [
			{
				"operation": "insert",
				"parentName": "MiniPage",
				"propertyName": "items",
				"name": "Name",
				"values": {
					"isMiniPageModelItem": true,
					"layout": {
						"column": 0,
						"row": 0,
						"colSpan": 24
					},
					"controlConfig": {
						"focused": true
					}
				}
			}
		]
	};
 
});

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

 

1. Заголовок для подписи "Name" не был найден.

2. Невозможно найти колонку по конфигурации: "{"layout":{"colSpan":24,"rowSpan":1,"column":0,"row":0},"controlConfig":{"focused":true},"name":"Name"}" .

 

3. MiniPageViewGenerator.js:308 Uncaught TypeError: Cannot read property 'name' of undefined

    at i.getNeedGenerateHyperLink (MiniPageViewGenerator.js:308)

core-base.js:704 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647

 file: http://localhost:82/0/configuration/6560b43f8738c260f612822f729cc099ru-…

 line: 308

 column: 82



 4. message: Uncaught TypeError: Cannot read property 'name' of undefined 

 date: Tue Jul 07 2020 11:19:54 GMT+0300 (Москва, стандартное время)

 stack: TypeError: Cannot read property 'name' of undefined

    at i.getNeedGenerateHyperLink

 

Пытался решить, как описано тут https://community.terrasoft.ua/questions/dobavlenie-email-kontakta-v-kartocku-obrasenia - не помогло.

Нравится

1 комментарий

Игорь, возможно, дело в том, что та статья для создания мини-карточки добавления, а Вы реализуете редактирование существующей записи?

Там для других случаев есть статьи Создание мини-карточки и Добавление мини-карточки к произвольному модулю.

 

Судя по сообщению, ошибка в функции getNeedGenerateHyperLink в схеме MiniPageViewGenerator. Эта схема есть в конфигурации, её код виден:

/**
 * @private
 * @param {Object} clonedConfig
 * @returns {Boolean}
 */
getNeedGenerateHyperLink: function(clonedConfig) {
	var itemDataValueType = this.getItemDataValueType(clonedConfig);
	var viewModelColumn = this.findViewModelColumn(clonedConfig);
	var primaryDisplayColumnName = this.getPrimaryDisplayColumnName();
	var isEditable = this.isSchemaEditable(viewModelColumn);
	var isLookup = itemDataValueType === Terrasoft.DataValueType.LOOKUP;
	var isSimpleLookup = viewModelColumn && viewModelColumn.isSimpleLookup;
	var isPrimaryDisplayColumnName = primaryDisplayColumnName === viewModelColumn.name;
	return isPrimaryDisplayColumnName || (isLookup && isEditable && !isSimpleLookup);
 
},

Видимо, в третьей строчке в переменную viewModelColumn попадает не объект, а пустое или объект без свойства name, из-за чего третья с конца строка падает при обращении к нему.

 

Не пробовали в браузере отладиться в этой функции, почему так выходит? Я всю Вашу логику не воспроизводил, а при открытии стандартной мини-карточки добавления контакта эта функция getNeedGenerateHyperLink не выполняется.

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