Добрый день. Есть деталь от 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"}
}
}