Атрибут в детали "Файлы и ссылки"

Добрый день. Есть деталь от 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. Почему? 

Нравится

2 комментария
Лучший ответ

Кнопка видимости уже привязана к функции 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"}

                }

            }

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