Создал миникарточку, опираясь на 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 не выполняется.

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

Добрый день коллеги!
В мини-карточку активности было выведено поле с типом Дата. См. первый скриншот.
При развернутом выборе даты в этом поле и клику на любую дату или же месяц мини-карточка закрывается.
Однако если эту мини-карточку открыть в расширенном режиме и попытаться выбрать дату в этом поле, то всё будет отлично. См. второй скриншот.

С чем может быть связанно данное поведение?

Нравится

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

На данный момент данная проблема возникает из-за некорректной работы двух одновременных модальных окон и будет исправлена в следующих релизах.

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

Добрый день!

на миникарточку были добавлены поля. 5 отображаются всегда + добавлено 8 полей, из которых отображаются одновременно только 2. то есть максимум 7 полей на форме.

первая проблема это скрытие через бизнес - правила. скрытие работает, но на форме остается "дыра", поля вставлены не через layout. Об этом я писала(http://www.community.terrasoft.ru/forum/topic/25552) , но результата нет, поэтому эту проблему я решила костылями - через document.getElementById("xxx").style.display = "xx"

вторая проблема: после добавления полей миникарточка стала некорректно отображаться на экранах ноутбука, а именно верхнее поле не видно. причем при открытии миникарточки скрываются ненужные поля на onEntityInitialized() . то есть при открытии миникарточки всего 5 полей, тем не менее она располагается наверху экрана, как будто в ней есть все 13 полей.

если сравнивать стиль элемента через консоль, то на большом экране top=68px , а на ноутбуке = top=-8px

как решить эту проблему? есть ли лимит на количество поле в миникарточке?

Нравится

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

Лимита нет, посмотрите как реализован RequiredColumnsContainer в BaseMiniPage, в него же как то добавляются колонки в зависимости от того какие из них обязательны, в любом количестве.

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

Уважаемые коллеги!

Подскажите пожалуйста, каким образом можно добавить дополнительное поле в миникарточку, например, добавить поле "Приоритет" в миникарточку в разделе "Активность" при добавлении задачи.

Нравится

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

Нужно заместить миникарточку ActivityMiniPage и разместить в массиве diff ваше новое поле подобным образом:

{
"operation": "insert",
"parentName": "MiniPage",
"propertyName": "items",
"name": "UsrNewColumn",
"values": {
"visible": {"bindTo": "isNotViewMode"},
"isMiniPageModelItem": true,
"layout": {
"column": 0,
"row": 15,
"colSpan": 24
}
}
}

Если вы вставляете поле куда-то в середину, нужно подвинуть остальные поля на строку ниже с помощью "operation": "merge" и изменением числа row в массиве layout.
Вот примерный код замещенной миникарточки:

define("ActivityMiniPage", [],
function() {
return {
entitySchemaName: "Activity",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
attributes: {},
methods: {},
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"parentName": "MiniPage",
"propertyName": "items",
"name": "UsrNewColumn",
"values": {
"visible": {"bindTo": "isNotViewMode"},
"isMiniPageModelItem": true,
"layout": {
"column": 0,
"row": 15,
"colSpan": 24
}
}
},
{
"operation": "merge",
"name": "MobilePhone",
"values": {
"layout": {
"column": 0,
"row": 7,
"colSpan": 24
}
}
},
{
"operation": "merge",
"name": "Email",
"values": {
"layout": {
"column": 0,
"row": 6,
"colSpan": 24
}
}
}
]/**SCHEMA_DIFF*/
};
});

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