09.09.2009, 10:29 | #1 |
MCP
|
Вложение файлов через метод .NET Business Connector (DocuRef, DocuValue)
Всем привет!
Появилась необходимость реализовать в аксапте статический метод, принимающий на вход бинарный массив с файлом, имя файла, путь к папке-хранилищу, номер таблицы (к которой производится вложение) и recId записи, к которой аттачим документ. Сейчас копаю в таком направлении: X++: static void attachFile(TableId tableId, RecId recId, DataAreaId id) { DocuActionFile action; DocuRef docuRef; ; // создаем ссылку: docuRef.ValueRecId = 0; docuRef.RefCompanyId = id; docuRef.RefTableId = tableId; docuRef.RefRecId = recId; docuRef.insert(); //... } 1. Как передать в метод бинарный массив? 2. Как скопировать бинарный файл в хранилище и указать все необходимые параметры (DocuValue, DocuRef) чтобы файл можно было открыть стандартным функционалом DAX (кнопкой документооборота)? Есть ли какие-нибудь мысли? |
|
09.09.2009, 11:42 | #2 |
Гость
|
1. static void attachFile(TableId tableId, RecId recId, DataAreaId id, FileName fileName)
2. посмотри как это делает стандартный функционал и сделай так же еще обрати внимание на то, где код исполняется - на сервере или клиенте. |
|
|
За это сообщение автора поблагодарили: kornix (1). |
09.09.2009, 15:34 | #3 |
MCP
|
Цитата:
X++: static void joinFile(TableId tableId, RecId recId, DataAreaId id, DocuTypeId typeId) { docuAction action; DocuRef docuRef; ; docuRef.ValueRecId = 0; docuRef.RefCompanyId = id; docuRef.RefTableId = tableId; docuRef.RefRecId = recId; docuRef.TypeId = typeId; docuRef.insert(); action = DocuAction::newDocuRef(DocuRef); action.unpack(); action.add(docuRef); } |
|
10.09.2009, 10:44 | #4 |
int 20h
|
Вот тут обсуждалась проблема с приемом и сохранением файла.
__________________
It's just my Unhopelessnessabilityerism Trying to debug my mind |
|
17.09.2009, 12:57 | #5 |
MCP
|
Цитата:
Сообщение от zZ_TOP_Zz
Вот тут обсуждалась проблема с приемом и сохранением файла.
X++: static void joinFileInternet(ITSMIncidentId _incidentId, FileName _fileName ,DataAreaId _id, str _fileType) { DocuRef docuRef; DocuType docuType; DocuValue docuValue; FileName fn; FilePath fp; FileType ft; ; docuType = DocuType::find(ITSMParameters::find().DocuTypeId, false); ttsbegin; [fn, ft, fp] = Docu::splitFilename(_filename); docuValue.FileName = fn; docuValue.FileType = _fileType; docuValue.Path = fp; docuValue.Name = fn; docuValue.insert(); ttscommit; ttsbegin; docuRef.RefTableId = tablenum(ITSMIncident); docuRef.RefRecId = ITSMIncident::find(_incidentId).recId; docuRef.Name = _fileName; docuRef.TypeId = docuType.TypeId; docuRef.RefCompanyId = _id; docuref.ValueRecId = docuValue.RecId; docuRef.insert(); ttscommit; } |
|
|
За это сообщение автора поблагодарили: zZ_TOP_Zz (1). |
17.09.2009, 13:07 | #6 |
int 20h
|
я бы для универсальности добавил бы TableId на вход для более универсального алгоритма
__________________
It's just my Unhopelessnessabilityerism Trying to debug my mind |
|
|
За это сообщение автора поблагодарили: kornix (1). |
18.09.2009, 10:36 | #7 |
MCP
|
Цитата:
X++: static void joinFileInternet(TableId _tableId, RecId _refRecId, FileName _fileName ,DataAreaId _id, str _fileType) { DocuRef docuRef; DocuType docuType; DocuValue docuValue; FileName fn; FilePath fp; FileType ft; ; docuType = DocuType::find(ITSMParameters::find().DocuTypeId, false); ttsbegin; [fn, ft, fp] = Docu::splitFilename(_filename); docuValue.FileName = fn; docuValue.FileType = _fileType; docuValue.Path = fp; docuValue.Name = fn; docuValue.insert(); ttscommit; ttsbegin; docuRef.RefTableId = _tableId; //id таблицы с записью для добавления вложения docuRef.RefRecId = _refRecId; //recId записи, к кот. прикрепляется файл docuRef.Name = _fileName; docuRef.TypeId = docuType.TypeId; docuRef.RefCompanyId = _id; docuref.ValueRecId = docuValue.RecId; docuRef.insert(); ttscommit; } |
|
|
За это сообщение автора поблагодарили: Silphidae (1), abri (1). |
Теги |
attachment, вложения, файл |
|
|