Здравствуйте!
3.4.0.117
Интересуют наиболее эффективные способы сохранения файлов любого типа (файл, ссылка, url, ссылка на папку).
Нравится
С использованием функционала детали "Файлы". Очень эффективно :smile:
Меня интересует как это сделать без GUI (из скрипта).
То есть необходимо прикрепить добавить файл в таблицу файлов. К какой записи какого раздела она должна быть привязана?
Файл из локальной директории?
Совершенно верно! Нужно добавить файл в таблицу tbl_Files, а затем создать связь между файлом и записью из раздела Документы , используя развязанную таблицу tbl_FileInDocument
Добрый день!
Решил вопрос следующим образом:
Добавил в GridArea кнопку, по нажатию на которую выполняется функция AttachOnClick. Сам код ниже:
[javascript]
var RecordID;
function AttachOnClick(Control) {
RecordID = dlData.Dataset.Values('ID');
var Dataset = Services.GetSingleItemByUSI('ds_Files');
var ObjectType = '{39A5B367-4A7A-473E-8F74-26977CB6DB67}';
var AddedFileIDsArray = new Array();
var FileNameStr = "C:\\Documents and Settings\\I.Gakalo\\Рабочий стол\\Read Me.txt";
AddFile2Record(Dataset, ObjectType, null, 'новый файл.txt', FileNameStr, 1, AddedFileIDsArray);
}
function AddFile2Record(Dataset, ObjectType, OldFileID, ShortFileName,
LongFileName, Revision, AddedFileIDsArray) {
var ID = Connector.GenGUID();
try {
Dataset.Append();
Dataset.Values('ID') = ID;
Dataset.Values('ItemTypeID') = ObjectType;
Dataset.Values('Link') = ShortFileName;
Dataset.Values('Revision') = Revision;
if (ObjectType == ft_File) {
var FileSize = GetFileSize(LongFileName);
if (FileSize > 0) {
Dataset.Values('FileSize') = FileSize;
}
var Result = SaveFileToDataset(LongFileName, Dataset, 'FileData');
if (!Result) {
return;
}
}
var FilePosted = Dataset.Post();
if ((FilePosted) && (ObjectType == ft_File)) {
CopyFileAccessDetailData(OldFileID, ID);
}
} finally {
Dataset.Close();
}
if (FilePosted) {
var InsertQuery = Services.GetSingleItemByUSI('iq_FileInDocument');
var ColumnsValues = InsertQuery.ColumnsValues;
ColumnsValues.ItemsByName('FileID').Value = ID;
ColumnsValues.ItemsByName('DocumentID').Value = RecordID;
ColumnsValues.ItemsByName(BaseGridArea.IDFieldName).Value = dlData.Dataset('ID');
var NewID = Connector.GenGUID();
ColumnsValues.ItemsByName('ID').Value = NewID;
InsertQuery.Execute();
AddedFileIDsArray.push(NewID);
}
}
[/javascript]