Добрый день! Подскажите, пожалуйста, как можно сделать активными ссылки в полях карточки (версия 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 – поля. Не помогло
Нравится
Юлия, Вы используете не 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» в разделе «Контрагенты» и доработать аналогично свое приложение.