Здраствуйте! Хочу изменить деталь "Файлы и примечания" для одного из разделов, а именно на "Счета".
Для этого я создал "Схему модели представления детали с реестра". Родительский обьект указал: FileDetailV2. Скопировал код из схемы FileDetailV2 в свою созданную схему. после очистки кеша получил следующую ошибку рис. 1.
Подскажите пожалуйста в чем проблема.

Нравится

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

Если правильно понял суть задачи, то для замещения объекта “DataGrid” необходимо сначала использовать операцию «remove», а затем «insert».
Пример прикрепилdobavitkolonkunadetal-fayly-.doc

Здраствуйте еще раз
Добавил поле в об'экт файлов(UsrCeritificateFile) рис.2
Хочу отобразить его на реестре, но получаю такое(рис.1)

"listedConfig": {
                        "name": "DataGridListedConfig",
                        "items": [
                            {
                                "name": "UsrIsActualListedGridColumn",
                                "bindTo": "UsrIsActual",
                                "position": {
                                    "column": 1,
                                    "colSpan": 2
                                }
                            },
                            {
                                "name": "NameListedGridColumn",
                                "bindTo": "Name",
                                "position": {
                                    "column": 3,
                                    "colSpan": 14
                                },
                                "type": Terrasoft.GridCellType.LINK
                            },
                            {
                                "name": "CreatedOnListedGridColumn",
                                "bindTo": "CreatedOn",
                                "position": {
                                    "column": 15,
                                    "colSpan": 2
                                }
                            }
                        ]
                    },

Вам необходимо заместить метод getGridDataColumns с добавлением в его переменную gridDataColumns своей колонки (добавленной в listedConfig).

Код метода из FileDetailV2:

getGridDataColumns: function() {
	var baseGridDataColumns = this.callParent(arguments);
	var gridDataColumns = {
		"Type": {
			path: "Type"
		},
		"Version": {
			path: "Version"
		}
	};
	return this.Ext.apply(baseGridDataColumns, gridDataColumns);
},

"Мотков Илья" написал:Вам необходимо заместить метод getGridDataColumns с добавлением в его переменную gridDataColumns своей колонки (добавленной в listedConfig).

Код метода из FileDetailV2:

getGridDataColumns: function() {
        var baseGridDataColumns = this.callParent(arguments);
        var gridDataColumns = {
                "Type": {
                        path: "Type"
                },
                "Version": {
                        path: "Version"
                }
        };
        return this.Ext.apply(baseGridDataColumns, gridDataColumns);
},


А возможно сам listedConfig менять динамически?

Добрый день, Евгений!

К сожалению, динамически менять listedConfig не получится.

Подскажите, пожалуйста, а есть тогда какие-либо возможности динамического создания простого грида?
Например:

var grid = Ext.create("Terrasoft.Grid", config);
grid.render(container);

По правде говоря, пробовал такой метод - он не сработал. Но возможно некорректно указал параметры config. Было бы славно получить ссылку из документации, либо рабочий пример кода.
С контейнерами, кнопками и прочими компонентами это работает, но, за исключением грида...

Полная документация по js есть в sdk, конкретно в этом случае подойдет статья:
https://academy.terrasoft.ru/jscoresdk/#!/api/Terrasoft.controls.Grid

Вопрос, близкий к теме - а можно ли сделать деталь Файлы и ссылки с редактируемым реестром, как вот здесь: https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-… ?

То есть, если я хочу добавить к объекту детали ещё несколько колонок (к примеру, на скриншоте вывел колонку заказа - но она есть по умолчанию и служит для связи со страницей) и заполнять их уже вручную? Это могут быть какие-либо дополнительные сведения о файле и тд

Попробовал просто перенести содержимое diff и прочее из примера- вылезает ошибка, что CreatedOn уже существует.

Денис, к сожалению, такой функционал реализовать не выйдет, так в системе нет соответствующей колонки для хранения файлов.

"Кот Владимир Владимирович" написал:

Денис, к сожалению, такой функционал реализовать не выйдет, так в системе нет соответствующей колонки для хранения файлов.

Владимир, спасибо, понятно.

Уточняющий момент, только - это только для файлов, или вообще для ссылок?

Если я например в простой детали с реестром (не FileDetail, а обычной) вот по такой схеме: http://www.community.terrasoft.ru/forum/topic/25377#comment-68061 сделаю какую либо колонку ссылкой (пусть даже ссылкой на файл, или какой-либо другой ресурс) - то можно ли будет на эту деталь редактируемый реестр навесить, или нет?

Для примера - в Заказе есть деталь График поставок, она с редаткируемым реестром, ну и там ссылки, правда колонка справочная.

Добрый день Денис.

В базовой реализации грида за ссылки отвечает метод addColumnLink из GridUtilitiesV2.

Пример замещения метода:

addColumnLink: function(item, column) {
	if (column.columnPath === "UsrColumn1" || column.columnPath === "UsrColumn2") {
		var onColumnLinkClickName = "on" + column.columnPath + "LinkClick";
		item[onColumnLinkClickName] = function() {
			return {
				caption: item.get(column.columnPath),
				target: "_blank",
				title: item.get(column.columnPath),
				url: "https://test.ru" + item.get(column.columnPath)};
		};
	} this.callParent(arguments);
},

где UsrColumn1 и UsrColumn2 - имена текстовых колонок в бд.

В свойство url Вам необходимо добавить ссылку по аналогии с ссылкой формируемой деталью файлы и ссылки на сервис FileService.

Пример ссылки: http://localhost/bpmonline7100SalesEnterprise_Marketing_CustomerCenter_…

Илья, спасибо.

Был ещё вопрос, можно ли деталь с такими ссылками сделать деталью с редактируемым реестром, то есть деталью такого типа: https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-… ?

Ведь по идее эта колонка изначально может быть обычной строкой.

Уже не надо - ответ на мой же вопрос: да, возможно. Для этого надо помимо переопределения методов добавить в values DataGrid детали:

"useLinks": true,

Метод addColumnLink выполняется и для детали с редактируемым реестром. Предоставленный раннее код какраз для текстовых колонок.

Добрый день, коллеги!

Использовал код из сообщения http://www.community.terrasoft.ru/forum/topic/24805#comment-65796

Все сработало колонки добавились, только пришлось удалить метод getGridDataColumns т.к., ловил ошибку

message: Uncaught Terrasoft.ItemAlreadyExistsException: Элемент с ключём "CreatedOn" Уже существует .

Остался вопрос, который пока не удается поднять самому. Подскажите пожалуйста как добавить возможность сортировки к колонкам нового грида?

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