
Dans le monde de la personnalisation d'Acumatica, il est courant de se demander comment lire ou écrire des pièces jointes dans Acumatica. C'est pourquoi je souhaite partager cet exemple qui montre comment lire, supprimer et enregistrer des fichiers en tant que pièces jointes d'un écran Acumatica (j'utiliserai l'écran Expéditions pour l'exemple).
Acumatica permet à l'utilisateur d'attacher des objets supplémentaires à un enregistrement de données de base - par exemple, une note de texte ou un fichier.
Certaines tables ont déjà cette possibilité. Il se peut que vous deviez activer les pièces jointes de soutien pour chaque tableau particulier.
Pour activer la prise en charge des pièces jointes aux enregistrements de données, ajoutez un champ NoteID au CAD et une colonne NoteID avec le type de données identifiant unique à la table de la base de données. Acumatica stocke les pièces jointes dans des tables séparées, c'est pourquoi l'entité NoteID est utilisée pour stocker l'identifiant.
#region NoteID
public abstract class noteID : PX.Data.IBqlField { }
[PXNote]
public virtual Guid? NoteID { get; set; }
#endregion
En outre, vous devez enregistrer et/ou autoriser l'extension du fichier que vous souhaitez télécharger. Pour ce faire, utilisez le formulaire File Upload Preferences (SM202550). Certaines extensions courantes sont préparées à partir de la boîte. Dans ce formulaire, vous pouvez également définir la taille maximale d'un fichier téléchargé.
Acumatica utilise deux tables dans la base de données pour stocker une pièce jointe : une table pour stocker les fichiers au format BIN, la seconde pour les informations sur l'écran qui utilise ce fichier. Ainsi, lorsque vous souhaitez joindre un fichier à l'aide d'un code, vous devez créer des enregistrements dans ces deux tables.
En général, vous joignez un fichier de la manière suivante :
GIST : https://gist.github.com/yuriycto/46eb4be2a9e26b0c9fc5e25a29383641
Ensuite, vous pouvez lire les informations sur le fichier comme :
GIST : https://gist.github.com/yuriycto/64c62cd7ce76d4a16f5d6b6497a11a9a
Si vous souhaitez simplement vérifier si un fichier a été joint, vous devez vérifier la longueur du tableau des fichiers joints :
var hasAttachedFiles = PXNoteAttribute.GetFileNotes(Document.Cache, Document.Current).Length != 0 ;
Une fois qu'un fichier a été joint, il ne peut plus être modifié ou mis à jour. Vous pouvez télécharger un autre fichier en tant que nouvelle version. Vous pouvez également "échanger" un fichier, c'est-à-dire supprimer l'ancien fichier et télécharger un fichier dont le contenu est plus récent.
Vous pouvez également supprimer un fichier de la pièce jointe :
GIST: https://gist.github.com/yuriycto/0772a453a6e70278bca6a9b1f3b017d9
Résumé
Cet article explique comment joindre, mettre à jour, retirer et supprimer des fichiers joints dans Acumatica, en prenant pour exemple l'écran « Expéditions ». Pour activer la prise en charge des pièces jointes aux enregistrements de données, il convient d'ajouter le champ NoteID au DAC et d'ajouter la colonne NoteID, avec le type de données « identifiant unique », à la table de la base de données.
Le formulaire « Préférences de téléchargement de fichiers » doit également servir à enregistrer et à autoriser l'extension du fichier à télécharger, ainsi qu'à définir la taille maximale du fichier téléchargé.
Acumatica utilise deux tables dans la base de données pour stocker les pièces jointes : l'une pour stocker les fichiers au format BIN et l'autre pour les informations relatives à l'écran qui utilise le fichier. Des exemples de code sont fournis pour joindre, lire et supprimer des fichiers, et il est précisé qu'une fois qu'un fichier est joint, il ne peut plus être modifié ni mis à jour ; toutefois, il est possible de télécharger une nouvelle version ou de remplacer le fichier en supprimant l'ancien et en téléchargeant un nouveau fichier contenant un contenu plus récent.