Показать сообщение отдельно
Старый 28.07.2022, 13:12   #1  
Blog bot is offline
Blog bot
Участник
 
25,475 / 846 (79) +++++++
Регистрация: 28.10.2006
dynamicsaxinsight: D365FO: Read CSV file from Azure File Share
Источник: https://dynamicsaxinsight.wordpress....re-file-share/
==============

Purpose:

The purpose of this post is to demonstrate how we can read a CSV file from Azure File Share in X++.

Application:

Dynamics 365 Finance and Operations

Prerequisites:
  • Azure file storage account must be configured in Azure Portal
  • File shares must be configured under this Azure file storage account
  • Access permissions must be configured for this Azure file storage account
Disclaimer:

This post is only for sharing knowledge. Do not use this code as is in a Production environment.

Business requirement:

Read a CSV file from Azure file share.

Solution:

Please find the code below to read a CSV file from Azure File Share. The code reads ABN numbers from a CSV file. The file has only a single column of ABN numbers with a single number per line.

Code

using Microsoft.Azure;using Microsoft.WindowsAzure.Storage;using Microsoft.WindowsAzure.Storage.Blob;using Microsoft.WindowsAzure.Storage.File;class MAKCloudStorageFileManager{ #File #define.delimiterField(',') public static void main(Args _args) { #OCCRetryCount System.IO.MemoryStream memoryStream; System.String storageAccountName; System.String keyValue; CloudStorageAccount storageAccount; CloudFileClient fileClient; CloudFileShare fileShare; CloudFileDirectory fileDirectoryRoot; CloudFileDirectory fileDirectory; CloudFile file; TextStreamIo textStreamIo; VendTable vendTable; VATNum vendABN; Counter counter; container rec; storageAccountName = "AzureStorageAccountName"; keyValue = "KeyValueString"; var storageCredentials = new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(storageAccountName, keyValue); storageAccount = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials, true); fileClient = storageAccount.CreateCloudFileClient(); fileShare = fileClient.GetShareReference('AzureFileShareName'); if (fileShare.Exists(null, null)) { fileDirectoryRoot = fileShare.GetRootDirectoryReference(); fileDirectory = fileDirectoryRoot.GetDirectoryReference("Folder/Subfolder"); if (fileDirectory.Exists(null, null)) { file = fileDirectory.GetFileReference('File.csv'); if (file.Exists(null, null)) { memoryStream = new System.IO.MemoryStream(); file.DownloadToStream(memoryStream, null, null, null); textStreamIo = TextStreamIo::constructForRead(memoryStream); try { if (textStreamIo) { if (textStreamIo.status()) { throw Global::error("@SYS52680"); } textStreamIo.inFieldDelimiter(#delimiterField); textStreamIo.inRecordDelimiter(#delimiterCRLF); counter = 0; while (!textStreamIo.status()) { rec = textStreamIo.read(); if (conLen(rec)) { vendABN = conPeek(rec, 1); info(strFmt("%1", vendABN)); } } } } catch (Exception::Error) { error("An error occured. Please contact your system administrator."); } } } } }}
We can use Microsoft Azure Storage Explorer to browse files stored in Azure File Share or Azure Blob Containers.

You can run the class by using the runnable class URL below.

https://devaos.axcloud.dynamics.com/...ageFileManager


Источник: https://dynamicsaxinsight.wordpress....re-file-share/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.