Коллеги, подскажите как реализовать всплывающее окно при нажатии на кнопку, в котором пользователю предоставляется возможность загрузить файл как в "Файлах и примечаниях". Ближайший пример, который нашел на академии это Пользовательская мини-карточка.

Нравится

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

Здравствуйте!

 

Реализуйте мини-карточку, где добавляете кнопку с функционалом кнопки "AddRecordButton" из "FileDetailV2"

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

Погуглив по сайту я вижу, что самый рекомендуемый способ это сделать - FileStream, однако, я не нашел подробной инструкции как это правильно делать. Вот включил я на сервере, а что дальше?

Например, когда создается файловый объект, бинарные данные в нем VARBINARY(MAX), и FileStream здесь выбрать не получается. ALTER COLUMN?

Еще сервер требует ALTER COLUMN Id ADD ROWGUIDCOL!

Плюс надо создать файловую группу FileStream и минимум 1 файл в этой группе.

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

Нравится

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

Добрый день, Алексей!

Данный вопрос стоит адресовать в поддержку Microsoft, поскольку они разрабатывали данную функциональность. 

Единственное чем могу помочь, это полезной информацией:

 https://docs.microsoft.com/ru-ru/sql/relational-databases/blob/filestream-sql-server

https://www.red-gate.com/simple-talk/sql/learn-sql-server/an-introduction-to-sql-server-filestream/

https://logicalread.com/sql-server-filestream-part1-mo01/#.WosMgKhuaUk

Майкрософт - это конечно, хорошо, но меня волнует вопрос насколько BPM совместима с этой технологией?

Ну вот я, допустим сделаю это всё на сервере разработки, но это же не перенесется через СВН!

Также, что будет, если я захочу что-то поменять в этой таблице в конфигураторе и пересохраню ее? Всё отвалится?

Алексей-Карягин,

Проверили работу FileStream с базой bpmonline.

Необходимо включить FileStream на серевера, после в БД создать FileGroup, и добавить File, тогда будет возможность создавать в БД таблици которые MEMORY_OPTIMIZED=ON, DURABILITY=SCHEMA_ONLY. 

Поскольку изменить существующие таблицы для работы с FileStream не удастся, есть возможность только в существующую БД добавить новые таблицы.

Для того что бы в БД получать данные таких таблиц необходимо в конфигурации добавить схему в которой указать что это [Представлении в базе данных]

Тогда создав отдельно в БД таблицу с таким же именем как и у схемы, в bpm'online можно будет получить значения из этой таблицы.

В случае с существующими таблицами/схемами не получиться, поскольку необходимо изменять структуру БД, что повлияет на работоспособность базового функционала.

 

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

Добрый день!
Возвращаясь к filestream (топик https://community.terrasoft.ru/forum/topic/5410), можно его все-таки использовать в Террасофте для таблицы файлов или нет?
TS 3.4.1.
SQL 2014
Террасофт умеет работать с данными типа varbinary(max) filestream?

1) включили возможность файстрима на сервере
2)создали файловую группу для базы
3)в качестве проверки функциональности создали новую таблицу через sql, там поле varbinary(max) filestream-засунули туда данные через sql - ну тут все ок
4) добавили в таблицу tbl_Files новое поле FileData1 varbinary(max) filestream; (перед этим пришлось удалить триггер к этой таблице - на instead of delete)
5) Пошли в террасофт администратор, там взяли в таблице tbl_Files, полe FileData сменила на FileData1 (не меняя при этом тип, и не сохраняя в бд потом таблицу (потому как не видим типа varbinary в приложении), пошли в sq_Files - там выбрали FileData1 вместо FileData.
6) Зашли в террасофт, добавили файл, файл даже добавился файловую группу, но террасофт его не может потом прочесть, потому что видимо не подозревает про тип варбинари с признаком файлстрим

Есть пути решения?

Нравится

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

Работа с filestream обсуждалась тут и тут. Также тут обсуждают альтернативные реализации с хранением в другой базе.

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

I found a few discussions about using filestreams in Terrasoft applications. The last one was at http://www.community.terrasoft.ua/forum/topic/7454. So I decided to share instruction and some scripts, that are needed to setup filestreams for tbl_Files table, as a separate blog post. The solutions is tested in few projects.
It also can be used for tbl_MailMessage and other tables, that contains column with datatype IMAGE.

Why to setup filestreams is also discussed in previous topics.

After making these changes there might be a problem to add new workspace, that contains Files detail using TS Master window or PVC, because the service tbl_Files can not be saved correctly, so some workarounds are needed, for example, You can create workspace with Terrasoft Master window without Files detail, and add this detail manually, if needed.

1. Make DATABASE backup

2. CREATE filestream files
ALTER DATABASE DATABASE_NAME ADD filegroup FileStreamGroup1 CONTAINS filestream
ALTER DATABASE DATABASE_NAME ADD FILE (NAME = FileStreamFile1, FILENAME = 'f:\database\tcr_xxx_332_lt\FileStreamData') TO FILEGROUP FileStreamGroup1;

3. Make COLUMN copy
ALTER TABLE tbl_Files ADD FileDataBackup IMAGE;
UPDATE tbl_Files SET FileDataBackup = FileData;

4. FOR ALL tbl_FileIn..  do this

DROP TRIGGER tr_tbl_FileInAccount_ID
ALTER TABLE dbo.tbl_FileInAccount DROP CONSTRAINT FFileInAccountFileID
ALTER TABLE dbo.tbl_FileInAccount ADD CONSTRAINT FFileInAccountFileID FOREIGN KEY ( FileID ) REFERENCES dbo.tbl_Files ( ID ) ON UPDATE NO ACTION ON DELETE CASCADE

DROP TRIGGER tr_tbl_FileInContact_ID
ALTER TABLE dbo.tbl_FileInContact DROP CONSTRAINT FFileInContactFileID
ALTER TABLE dbo.tbl_FileInContact ADD CONSTRAINT FFileInContactFileID FOREIGN KEY ( FileID ) REFERENCES dbo.tbl_Files ( ID ) ON UPDATE NO ACTION ON DELETE CASCADE

...

5. tbl_FileRight AND tbl_Files instead of TRIGGER

ALTER TABLE dbo.tbl_FilesRight DROP CONSTRAINT FFilesRightRecordID
ALTER TABLE dbo.tbl_FilesRight ADD CONSTRAINT FFilesRightRecordID FOREIGN KEY ( RecordID ) REFERENCES dbo.tbl_Files ( ID ) ON UPDATE NO ACTION ON DELETE CASCADE
DROP TRIGGER tr_tbl_Files_ID

6. CHANGE FileData COLUMN type TO VARBINARY(MAX):

ALTER TABLE tbl_Files DROP COLUMN FileData;
ALTER TABLE tbl_Files ADD FileData VARBINARY(MAX) filestream;


7. Move DATA TO updated COLUMN
UPDATE tbl_Files SET FileData = FileDataBackup
ALTER TABLE tbl_Files DROP COLUMN FileDataBackup

8. DROP vw_Files triggers
DROP TRIGGER tr_vw_Files_ID
DROP TRIGGER tr_vw_Files_IU

9. Recreate files VIEW
ALTER VIEW [dbo].[vw_Files]
AS
  SELECT [P].*
  FROM [dbo].[tbl_Files] AS [P] WITH(nolock)
  WHERE EXISTS (
    SELECT * FROM [dbo].[tbl_FilesRight] AS [R] WITH(nolock)
    WHERE (([R].[RecordID] = [P].[ID])
    AND EXISTS(
      SELECT * FROM [dbo].[tbl_UserAdminUnit] AS [U] WITH(nolock)
      WHERE ([R].[AdminUnitID] = [U].[AdminUnitID])
      AND ([U].[UserName] = SYSTEM_USER))))
GO

10. Make additional triggers OR modifications IN TS client side TO make correct access rights TO the files

Нравится

Поделиться

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