Столкнулись с проблемой правильного хранения файлов в bpm. Например в контрагенте в файлах и примечаниях хранится очень много документов, но нет возможности распределить их по папкам (выводятся списком). Есть ли такая возможность создания папок и подпапок в файлах и примечаниях?

Второй вопрос, связанный с файлами в bpm, правильно ли я понимаю, если я получил письмо от клиента с вложенным файлом, сначала я должен сохранить файл на компьютер, а затем переместить его в тот раздел или запись раздела, куда я хочу? Просто сейчас, например, не могу после получения письма с файлом сразу его прикрепить в файлы и примечания заказа или контрагента (вариант с прикреплением просто письма к определенному заказу, контрагенту и т.д. неудобен, так как сложно найти определенное письмо с необходимым файлом)

Нравится

3 комментария

1) Нет. И прилепить туда папки очень сложно, но можно попробовать доработать деталь, навесив функционал тегов(как в контрагентах). В итоге файлы помечаем тегами и сортируем как надо

2) Правильно. Письмо - это активность, активность - объект в системе, под каждый большой объект есть таблица [Название_объекта]File. И если надо перекинуть файл из письма в заказ, надо по сути перекопировать запись из ActivityFile в OrderFile, чего стандартными средствами не сделаешь.

Варфоломеев Данила,

 Благодарю за ответы. Данила, идея с тегами хорошая, но не совсем понятно как ее можно реализовать. Быть может Вы реализовывали теги в файлах и можете подсказать, как их подцепить в деталь?

Чакур Александр Леонидович,

Не реализовывал. Вроде как надо добавить таблицу AccountFileTag (к примеру, для файлов в контрагентах), а далее смотреть в конфигурации как  в эту таблицу заносятся записи и по ней фильтруется реестр. Плюс надо будет кнопку с тэгом добавить в tools детали. Ну и ещё наверное кучу всего... Я бы покопался, да времени нет)

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

Добрый день,

Давно уже не программировал на BPM, поэтому возникло несколько вопросов:
1) Где посмотреть как создать деталь файлы и примечания для своего раздела?
2) Стоит задача - прочитать файл excel. Т.е. прикрепляем файл на деталь, потом при изменении статуса считываем этот файл (можно и просто сделать поле для файла и считывать при загрузке, не суть):
Задача минимум - вытащить значение из определенной ячейки, например С10.
Задача максимум - прошерстить полностью файл (например, в ячейках B10:B12 лежат параметры (могут в разнобой) и значения лежат в ячейках С)
Т.е.
Файл 1:
parameter1 40
parameter2 30
parameter3 20
А может быть файл 2:
parameter3 20
parameter1 40
parameter2 30
Как это сделать, где посмотреть?
3) Можно ли (вообще теоретически) сделать представление календаря на детале (пример на скриншоте)? Почитав форум я понял, что документации нет даже, чтобы сделать календарь для своего нового раздела, и надо просто брать и методом проб и ошибок делать. Но также интересует вопрос про календарь в детале: представление календаря может встать на деталь (сталкивался кто-то с этим?) или же календарь исключетельно для раздела и даже и не пытайся вставить его в деталь, не получится?

Нравится

1 комментарий

Доброго времени суток, при создании своего раздела так же в пакете создается объект (допустим), раздел MyModule, то объект будет MyModuleFile.
Вам необходимо зарегистрировать деталь в таблице SysDetails.
В колонку DetailSchemaUId необходимо заинсертить UId схемы FileDetailV2 (если не ошибаюсь).
В колонку EntitySchemaUId необходимо указать UId объекта MyModuleFile (у вас будет другое название).
Ну про Caption думаю вы догадаетесь)
А потом через мастер можете добавить деталь на страницу.

По поводу Примечаний это не деталь, а строка с неограниченной длинной только со стилями)
Прикреплю два документа, там более подробные инструкции что, куда и как)

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

Здраствуйте! Хочу изменить деталь "Файлы и примечания" для одного из разделов, а именно на "Счета".
Для этого я создал "Схему модели представления детали с реестра". Родительский обьект указал: 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" Уже существует .

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

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