Добрый день. Есть деталь от FileDetailV2, нужно сделать так, чтобы в зависимости от настроек, сделанных на странице редактирования, в детали показывалась кнопка "добавить". В детали я определяю атрибут:
"isAddVisible": {
dataValueType: Terrasoft.DataValueType.BOOLEAN,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
value: true
}и добавляю в diff:
{
"operation": "merge",
"name": "AddRecordButton",
"values": {
"visible": { bindTo: "isAddVisible" }
}
}В схеме страницы в diff определена деталь:
{
"operation": "insert",
"name": "UsrReportFileDetail",
"values": {
"itemType": 2,
"markerValue": "added-detail",
"isAddVisible": "false"
},
"parentName": "NotesAndFilesTab",
"propertyName": "items",
"index": 0
}В перспективе хотелось бы привязать isAddVisible к функции, возвращающей true или false в зависимости от статуса записи (стадии кейса). Но даже в таком виде код не работает: система применяет к кнопке на детали значение по умолчанию true, а не выставленное в странице редактирования значение false. Почему?
Нравится
Кнопка видимости уже привязана к функции getAddRecordButtonVisible, можно заместить эту функцию. Если хотите привязать к своей функции, то bindTо указываете название свой функции. Вот как описано кнопка добавления в самой детали, в ней уже указана функция которое возвращает видимость.
{
"operation": "merge",
"name": "AddRecordButton",
"parentName": "Detail",
"propertyName": "tools",
"values": {
"itemType": Terrasoft.ViewItemType.BUTTON,
"tag": "addFileButton",
"fileUpload": true,
"filesSelected": {"bindTo": "onFileSelect"},
"click": {"bindTo": "onAddFileClick"},
"visible": {"bindTo": "getAddRecordButtonVisible"},
"imageConfig": {"bindTo": "Resources.Images.AddButtonImage"}
}
}
Юрий, а зачем там «value: true» в свойствах атрибута? Он задаётся для виртуальных колонок с фиксированным значением, а для каждый раз вычисляемых функцией — не нужен. Пример приводил в теме ниже.
А у Вас, насколько понял, ни то, ни другое, а передача значения извне. Не уверен, что именно так можно, не нашёл аналогичных примеров в «коробке». Если не указывать в самой детали, то будет брать со страницы или будет undefined?
Попробуйте передавать свой параметр не в diff, а как из карточки на её детали передают свойства вроде filterMethod или useRelationship:
details: /**SCHEMA_DETAILS*/{
...
OpportunityContact: {
schemaName: "OpportunityDetailV2",
filter: {
masterColumn: "Contact",
detailColumn: "Contact"
},
defaultValues: {
Contact: {
masterColumn: "Contact"
}
},
useRelationship: false,
filterMethod: "opportunityAccountFilter",
captionName: "CustomerOpportunitiesCaption"
},
Кнопка видимости уже привязана к функции getAddRecordButtonVisible, можно заместить эту функцию. Если хотите привязать к своей функции, то bindTо указываете название свой функции. Вот как описано кнопка добавления в самой детали, в ней уже указана функция которое возвращает видимость.
{
"operation": "merge",
"name": "AddRecordButton",
"parentName": "Detail",
"propertyName": "tools",
"values": {
"itemType": Terrasoft.ViewItemType.BUTTON,
"tag": "addFileButton",
"fileUpload": true,
"filesSelected": {"bindTo": "onFileSelect"},
"click": {"bindTo": "onAddFileClick"},
"visible": {"bindTo": "getAddRecordButtonVisible"},
"imageConfig": {"bindTo": "Resources.Images.AddButtonImage"}
}
}