Добрый день!
Столкнулись со следующей задачей:
Имеется обращения, в которых ответственные заполняют решения. Но очень часто помимо текста, необходимо прикладывать файлы различного содержания или просто скриншот.
Поэтому появляется три вопроса:
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();
...