Добрый день! Подскажите, пожалуйста, как можно сделать активными ссылки в полях карточки (версия 7.х). У нас есть 2 поля "ссылка на карту" и "ссылка на фото", в которых указаны адреса ссылок, но в в карточке они не активны. Пробовали решить эту задачу следующим образом: в пакете Custom создали модуль ActivityLink с кодом

Terrasoft.sdk.RecordPage.configureColumn("UsrShields", "primaryColumnSet", "UsrFoto", {
viewType: Terrasoft.ViewTypes.Preview
});

Terrasoft.sdk.RecordPage.configureColumn("UsrShields", "primaryColumnSet", "UsrMapReference", {
viewType: Terrasoft.ViewTypes.Preview
});

где UsrShields – таблица в БД, UsrFoto, UsrMapReference – поля. Не помогло

Нравится

9 комментариев

Юлия, Вы используете не bpm библиотеки, а продукта terrasoft 3.x

Для 7.х

в DIFF колонки добавьте

showValueAsLink: true,
href: {
   bindTo: "getLink"
}

в METHODS реализуйте логику, которая будет возвращать url

getLink: function() {
   return {
      url: "url",
      caption: "Caption"
   }
}

Мария, добрый вечер! спасибо за ответ. В колонку вставила код и метод, ничего не изменилось.
это прописала в колонке:
{
"operation": "insert",
"name": "UsrFoto",
"values": {
"layout": {
"column": 0,
"row": 7,
"colSpan": 24,
"rowSpan": 1
},
"bindTo": "UsrFoto",
"caption": {
"bindTo": "Resources.Strings.UsrFotoCaption"
},
"textSize": 0,
"contentType": 1,
"labelConfig": {
"visible": true
},
"enabled": true,
"showValueAsLink": true,
"href": {
"bindTo": "getLink"
}
},
"parentName": "Header",
"propertyName": "items",
"index": 15
}

В методе: как Вы написали. Ссылка не активна...

Юлия, Вы пробовали отладку кода? Что пишет в консоли?
Метод нужно дополнять своей логикой. Я привела только алгоритм.

Пример можете посмотреть в BaseSchemaViewModel

Мария, добрый день! вставили такой метод:
getLink: function() {

var Foto = this.get("UsrFoto");
return {
url: Foto,
caption: Foto.displayValue
};

}
Не отображается страница. Во вложении скрин ошибки

Юлия, согласно ошибке приложение не может прочитать свойство "caption".
Для более детального анализа Вам необходимо осуществить отладку кода.

Также обратите внимание на предыдущий комментарий:

"Мария Ватулина" написал:

Юлия, Вы пробовали отладку кода? Что пишет в консоли?

Метод нужно дополнять своей логикой. Я привела только алгоритм.

Пример можете посмотреть в BaseSchemaViewModel

Наглядно посмотрите как это сделано в BaseSchemaViewModel и реализуйте по аналогии

Спасибо ооогромное!
Все получилось.

Хотелось бы еще узнать как сделать так, чтобы ссылка в новой вкладке открывалась.
Написали такой код, но он не срабатывает (target).

getLink: function() {
				var foto = this.get("UsrFoto");
				var target1 = "_blank";
				if (foto != null) {
					return {
						url: foto,
						caption: foto,
						target: target1
					};
				}
				else 
				return {};
			}

Настя, приложение bpm’online является одностраничным по своей сути. Это обозначает, что работа в приложении предполагается только в одной вкладке браузера. Вы могли это заметить, например, если откроете в разных вкладках реестр раздела и страницу добавления записи в этот раздел. Если во второй вкладке Вы произведете некие действия, то обновление не отобразится в первой вкладке, пока сама страница не будет обновлена.
Также это обозначает, что стандартный функционал открытия ссылок в другой вкладке (например, при нажатии колесиком мышки) нами не предусматривался. Даже если в приложении есть некоторые ссылки, с которыми есть возможность так работать, то это особенности браузера, а не наша функциональность.

Дмитрий, я просто думала, что это несложные стандартные функции, которые можно настроить.
Тем более, что ссылки в этом поле (UsrFoto) у нас на внешний источник.

И еще, если в реестре нажать на эту ссылку - она открывается в новой вкладке, это реализовано скорее всего в BaseSchemaViewModel, куда нам посоветовали посмотреть Вы и Мария. Я так думаю, что скорее всего где-то в этой функции:

		/**
		 * Выполняет открытие карточки в цепочке.
		 * @protected
		 * @virtual
		 * @param {Object} config конфигурация открываемой карточки.
		 */
		openCardInChain: function(config) {
			this.showBodyMask();
			var historyState = this.sandbox.publish("GetHistoryState");
			this.sandbox.publish("PushHistoryState", {
				hash: historyState.hash.historyState,
				silent: config.silent,
				stateObj: {
					isSeparateMode: config.isSeparateMode || true,
					schemaName: config.schemaName,
					entitySchemaName: config.entitySchemaName,
					operation: config.action || config.operation,
					primaryColumnValue: config.id,
					valuePairs: config.defaultValues,
					isInChain: true
				}

А конкретнее isSeparateMode: config.isSeparateMode || true
Может быть я ошибаюсь..

Точно никаким образом не получится прописать открытие ссылки на внешний сайт в новой вкладке?

Настя, как вариант Вы можете открывать ссылки правой кнопкой мыши.
Да, такая логика присутствует, но только для колонки «Web».
Вы можете посмотреть как реализована колонка «Web» в разделе «Контрагенты» и доработать аналогично свое приложение.

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