Добрый день!
Столкнулись со следующей задачей:
Имеется обращения, в которых ответственные заполняют решения. Но очень часто помимо текста, необходимо прикладывать файлы различного содержания или просто скриншот.
Поэтому появляется три вопроса:
1) как осуществить функционал вставки из буфера? Например: находясь в поле "Решение" нажимается вставка скриншота из буфера и в детали "Файлы и ссылки" этого обращения появляется файл с названием "Решение_Название файла"
2) вставка документа (например pdf) путем перетаскивания его на поле "Решение" и чтобы он появлялся в детали "Файлы и ссылки" этого обращения появляется файл с названием "Решение_Название файла"
3) как добавить в шаблон, который отправляется автоматически, эти самые файлы? С использованием макросов invoke?
Ну и собственно, может я изобретаю велосипед и есть более простой способ автоматизации таких задач. Также интересует максимальный размер файлов в системе и можно ли его увеличивать.
Нравится
По размеру, есть системная настройка «Максимальный размер загружаемого файла» (MaxFileSize). По умолчанию там 10 Мб, можно менять.
По шаблону со вложением, см. приложение.
По остальному, в теории, такое возможно. Например, на детали файлов в любом разделе есть место для перетаскивания файла. См. в FileDetailV2 логику, связанную с DragAndDropContainer:
onFileSelect: function(files) { if (files.length <= 0) { return; } const config = this.getUploadConfig(files); const isNewRecord = this.getIsNewRecord(); this.set("FileUploadConfig", config); if (isNewRecord) { const args = { isSilent: true, messageTags: [this.sandbox.id] }; this.sandbox.publish("SaveRecord", args, [this.sandbox.id]); } else { this.upload(config); } }, /** * Uploads files using FileAPI. * @private * @param {Object} config File upload configuration. * @param {Function} callback Callback. */ upload: function(config, callback) { this.Terrasoft.ConfigurationFileApi.upload(config, callback); }, onUpload: function() { this.showBodyMask(); }, initDropzoneEvents: function() { const dropZone = document.getElementById("DragAndDropContainer"); if (!dropZone) { return; } if (this.Terrasoft.Features.getIsEnabled("CheckMasterRecordEditRights") && !this.get("CanEditMasterRecord")) { return; } this.Terrasoft.ConfigurationFileApi.initDropzoneEvents(dropZone, function(over) { if (over) { dropZone.classList.add("dropzone-hover"); } else { dropZone.classList.remove("dropzone-hover"); } }, function(files) { this.onFileSelect(files); }.bind(this)); }, onRender: function() { this.callParent(arguments); this.initDropzoneEvents(); ...