UF Line Loop / External Launcher - Copy File from path in line to directory
AnsweredWe have an UDO with lines in it and in this lines are file-pathes and we want to use the pathes to copy the file into a new destination (like an file-export).
Is that possible with line loop in combination with external launcher or something? Some experience with those things?
-
Move to Questions and Answer Sections as it is not a feature request.
As for the question I can't see why not but I do not have a specific sample on it so I would instead recommend you see this Feature Focus session: https://youtu.be/dsgZmz-XE7U (Design of line loop have changed a bit since the session but the functionality works the same so still valid)
-
Sorry for my mistake with this Community article. For grapping the path from the line, line loop works, but my problems are the steps after that. How can I use the grapped path to copy a file from one directory to another?

-
You should be able to do UF - External Launcher as Line Pass UFs and in the External Launcher use the Dynamic Syntax (https://help.boyum-it.com/B1UP/appendix-1---dynamic-syntax.html) to get the path
-
OK, I understand, but what can I do to copy the file from the path from this place/directory to a specific place/directory in Windows. The customer had coresuite before with a function button with C# in it to do this. But I´m searching for an alternative.
From the files rows in the screenshot only the file in column export set to Y should copied. What do you think is it possible and with which external program? -
Guess you can use Windows XCopy command in the external launcher: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/xcopy ... or if more advanced make a.bat file.
If you want to control everything yourself you can also use UF - Dynamic Code and do it using C# Code (https://help.boyum-it.com/B1UP/dynamiccodenetsdk.html)
-
Hi Rasmus, we are no C#-Developer and your collegues don't customize for customers, so they said. Because we had an C#-Code from the CoreSuite-function-Button.
StatusBar.StatusRotatorInfo sri = new StatusBar.StatusRotatorInfo("Dokumente werden exportiert", StatusBar.StatusRotatorInfo.StatusTypes.Warning);
try
{
if (pVal.Form.Mode != SwissAddonFramework.UI.Components.ModeComponent.FormModes.OK)
{
StatusBar.WriteError("Diese Funktion kann nur im OK-Modus (Änderungen gespeichert) ausgeführt werden");
}
else if (pVal.Form.PaneLevel != 3 && pVal.Form.PaneLevel != 4)
{
StatusBar.WriteError("Diese Funktion kann nur auf den Registern 'Kundenrunde' und 'Bankenrunde' ausgeführt werden");
}
else
{
string strCode = TextEdit.GetFromUID(pVal.Form, "2_U_E").Value.ToString();
string strTable = "";
string strSQL = "";
//Get relevant Table for query
if (pVal.Form.PaneLevel == 3)
{
strSQL = @"SELECT U_X_ANHANG AS Anhang
FROM [@X_FA_DOKUMENTE1]
WHERE Code = {0} AND U_X_EXPORTIEREN = 'Y' AND ISNULL(CAST(U_X_ANHANG AS nvarchar), '') <> ''
ORDER BY ISNULL(U_X_REIHENFOLGE, 9999) ASC, ISNULL(CAST(U_X_ANHANG AS nvarchar), '') ASC";
}
else
{
strSQL = @"SELECT U_X_ANHANG2 AS Anhang
FROM [@X_FA_DOKUMENTE2]
WHERE Code = {0} AND U_X_EXPORTIEREN2 = 'Y' AND ISNULL(CAST(U_X_ANHANG2 AS nvarchar), '') <> ''
ORDER BY ISNULL(U_X_REIHENFOLGE2, 9999) ASC, ISNULL(CAST(U_X_ANHANG2 AS nvarchar), '') ASC";;
}
strSQL = string.Format(strSQL, strCode);
Debug.WriteMessage(strSQL, SwissAddonFramework.Messaging.Debug.DebugLevel.Always);
using (System.Data.Common.DbDataReader sdr = SwissAddonFramework.Utils.SQL.ExecuteReader(strSQL))
{
if (sdr.HasRows == true)
{
SwissAddonFramework.Utils.Windows.SaveFileDialog svd = new SwissAddonFramework.Utils.Windows.SaveFileDialog();
svd.FileName = "Speicherpfad (nicht anpassen)";
svd.FileSetEvent += new SwissAddonFramework.Utils.Windows.SaveFileDialog.FileSetHandler(delegate(string path)
{
sri.Start();
while (sdr.Read())
{
string strOriginalLocation = "";
strOriginalLocation = sdr["Anhang"].ToString();
string strFileName = "";
strFileName = strOriginalLocation.Substring(strOriginalLocation.LastIndexOf(@"\") + 1);
//Will save documents in the order which is defined in SQL-query
path = path.Substring(0, path.LastIndexOf(@"\") + 1);
if (System.IO.File.Exists(strOriginalLocation) == true)
{
System.IO.File.Copy(strOriginalLocation, path + strFileName, true);
}
else
{
StatusBar.WriteError("Der folgende Anhang konnte nicht gefunden werden: " + strOriginalLocation);
}
}
StatusBar.WriteSucess("Anhänge wurden exportiert");
sri.Stop();
});
svd.ShowDialog();
}
else
{
StatusBar.WriteError("Es konnten keine Anhänge gefunden werden, die exportiert werden müssen");
}
}
}
}
catch (Exception ex)
{
string errorMessage = string.Format("Error in {0} Rule '{1}': {2}", pVal.RuleInfo.RuleType, pVal.RuleInfo.RuleName, ex.Message);
MessageBox.Show(errorMessage, "OK");
StatusBar.WriteError(errorMessage);
Debug.WriteMessage(errorMessage, Debug.DebugLevel.Exception);
}
finally
{
sri.Stop();
} -
Hi ,
We use it exactly like Ramus suggested, external launcher.
see below :

Good luck !
-
Nice example, Thanks! We try it...
Please sign in to leave a comment.
Comments
8 comments