Здраствуйте! Хочу изменить деталь "Файлы и примечания" для одного из разделов, а именно на "Счета".
Для этого я создал "Схему модели представления детали с реестра". Родительский обьект указал: FileDetailV2. Скопировал код из схемы FileDetailV2 в свою созданную схему. после очистки кеша получил следующую ошибку рис. 1.
Подскажите пожалуйста в чем проблема.
Нравится
Если правильно понял суть задачи, то для замещения объекта “DataGrid” необходимо сначала использовать операцию «remove», а затем «insert».
Пример прикрепилdobavitkolonkunadetal-fayly-.doc
Здраствуйте еще раз
Добавил поле в об'экт файлов(UsrCeritificateFile) рис.2
Хочу отобразить его на реестре, но получаю такое(рис.1)
[javascript]
"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
}
}
]
},
[/javascript]
Вам необходимо заместить метод getGridDataColumns с добавлением в его переменную gridDataColumns своей колонки (добавленной в listedConfig).
Код метода из FileDetailV2:
[javascript]
getGridDataColumns: function() {
var baseGridDataColumns = this.callParent(arguments);
var gridDataColumns = {
"Type": {
path: "Type"
},
"Version": {
path: "Version"
}
};
return this.Ext.apply(baseGridDataColumns, gridDataColumns);
},
[/javascript]
"Мотков Илья" написал:Вам необходимо заместить метод 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 не получится.
Подскажите, пожалуйста, а есть тогда какие-либо возможности динамического создания простого грида?
Например:
[javascript]
var grid = Ext.create("Terrasoft.Grid", config);
grid.render(container);
[/javascript]
По правде говоря, пробовал такой метод - он не сработал. Но возможно некорректно указал параметры 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.
Пример замещения метода:
[javascript]
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);
},
[/javascript]
где UsrColumn1 и UsrColumn2 - имена текстовых колонок в бд.
В свойство url Вам необходимо добавить ссылку по аналогии с ссылкой формируемой деталью файлы и ссылки на сервис FileService.
Пример ссылки: http://localhost/bpmonline7100SalesEnterprise_Marketing_CustomerCenter_…
Илья, спасибо.
Был ещё вопрос, можно ли деталь с такими ссылками сделать деталью с редактируемым реестром, то есть деталью такого типа: https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-… ?
Ведь по идее эта колонка изначально может быть обычной строкой.
Уже не надо - ответ на мой же вопрос: да, возможно. Для этого надо помимо переопределения методов добавить в values DataGrid детали:
[javascript]
"useLinks": true,
[/javascript]
Метод addColumnLink выполняется и для детали с редактируемым реестром. Предоставленный раннее код какраз для текстовых колонок.
Добрый день, коллеги!
Использовал код из сообщения http://www.community.terrasoft.ru/forum/topic/24805#comment-65796
Все сработало колонки добавились, только пришлось удалить метод getGridDataColumns т.к., ловил ошибку
message: Uncaught Terrasoft.ItemAlreadyExistsException: Элемент с ключём "CreatedOn" Уже существует .
Остался вопрос, который пока не удается поднять самому. Подскажите пожалуйста как добавить возможность сортировки к колонкам нового грида?